make-only-subtitle-default
HaveAGitGat 6 years ago
parent 925d3c2cec
commit e1ff493d7b

@ -1,70 +1,54 @@
function details() { function details() {
return { return {
id: "Tdarr_Plugin_075a_FFMPEG_HEVC_Generic", id: "Tdarr_Plugin_075a_FFMPEG_HEVC_Generic",
Stage: "Pre-processing", Stage: "Pre-processing",
Name: "FFMPEG H265", Name: "FFMPEG H265",
Type: "Video", Type: "Video",
Operation:"Transcode", Operation: "Transcode",
Description: `[Contains built-in filter] This plugin transcodes non h265 files into h265 mkv using default settings. Audio/subtitles not affected. \n\n`, Description: `[Contains built-in filter] This plugin transcodes non h265 files into h265 mkv using default settings. Audio/subtitles not affected. \n\n`,
Version: "1.00", Version: "1.00",
Link: "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_075a_FFMPEG_HEVC_Generic.js", Link:
Tags:'pre-processing,ffmpeg,h265,video only' "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_075a_FFMPEG_HEVC_Generic.js",
} Tags: "pre-processing,ffmpeg,h265,video only",
};
} }
function plugin(file) { function plugin(file) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false, processFile: false,
preset: '', preset: "",
container: '.mp4', container: ".mp4",
handBrakeMode: false, handBrakeMode: false,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: false, reQueueAfter: false,
infoLog: '', infoLog: "",
};
}
if (file.fileMedium !== "video") { if (file.fileMedium !== "video") {
response.processFile = false response.processFile = false;
response.infoLog += "☒File is not a video! \n" response.infoLog += "☒File is not a video! \n";
return response return response;
} else { } else {
response.infoLog += "☑File is a video! \n" response.infoLog += "☑File is a video! \n";
} }
if (file.ffProbeData.streams[0].codec_name == "hevc") {
if (file.ffProbeData.streams[0].codec_name == 'hevc') { response.processFile = false;
response.processFile = false response.infoLog += "☑File is already in hevc! \n";
response.infoLog += "☑File is already in hevc! \n" return response;
return response
} }
response.processFile = true;
response.preset = `,-map 0:v -map 0:a -map 0:s? -map 0:d? -c copy -c:v:0 libx265`;
response.processFile = true; response.container = ".mkv";
response.preset = `,-map 0:v -map 0:a -map 0:s? -map 0:d? -c copy -c:v:0 libx265` response.handBrakeMode = false;
response.container = '.mkv' response.FFmpegMode = true;
response.handBrakeMode = false response.reQueueAfter = true;
response.FFmpegMode = true response.infoLog += `☒File is not hevc! \n`;
response.reQueueAfter = true; return response;
response.infoLog += `☒File is not hevc! \n`
return response
} }
module.exports.details = details; module.exports.details = details;
module.exports.plugin = plugin; module.exports.plugin = plugin;

@ -1,8 +1,4 @@
module.exports.details = function details() { module.exports.details = function details() {
return { return {
id: "Tdarr_Plugin_075a_Transcode_Customisable", id: "Tdarr_Plugin_075a_Transcode_Customisable",
Stage: "Pre-processing", Stage: "Pre-processing",
@ -12,10 +8,10 @@ module.exports.details = function details() {
Description: `[TESTING][Contains built-in filter] Specify codec filter and transcode arguments for HandBrake or FFmpeg \n\n`, Description: `[TESTING][Contains built-in filter] Specify codec filter and transcode arguments for HandBrake or FFmpeg \n\n`,
Version: "1.00", Version: "1.00",
Link: "", Link: "",
Tags:'pre-processing,handbrake,ffmpeg,configurable', Tags: "pre-processing,handbrake,ffmpeg,configurable",
Inputs: [ Inputs: [
{ {
name: 'codecs_to_exclude', name: "codecs_to_exclude",
tooltip: `Input codecs, separated by a comma, that should be excluded when processing. tooltip: `Input codecs, separated by a comma, that should be excluded when processing.
\\nFor example, if you're transcoding into hevc (h265), then add a filter to prevent hevc being transcoded so your newly transcoded files won't be infinitely looped/processed. \\n \\nFor example, if you're transcoding into hevc (h265), then add a filter to prevent hevc being transcoded so your newly transcoded files won't be infinitely looped/processed. \\n
@ -46,10 +42,10 @@ module.exports.details = function details() {
h264,vp9 h264,vp9
` `,
}, },
{ {
name: 'cli', name: "cli",
tooltip: `Enter the CLI to use. tooltip: `Enter the CLI to use.
\\nExample:\\n \\nExample:\\n
@ -58,10 +54,10 @@ module.exports.details = function details() {
\\nExample:\\n \\nExample:\\n
ffmpeg ffmpeg
` `,
}, },
{ {
name: 'transcode_arguments', name: "transcode_arguments",
tooltip: `\\nEnter HandBrake or FFmpeg transcode arguments. tooltip: `\\nEnter HandBrake or FFmpeg transcode arguments.
\\nHandBrake examples: \\nHandBrake examples:
@ -113,10 +109,10 @@ module.exports.details = function details() {
` `,
}, },
{ {
name: 'output_container', name: "output_container",
tooltip: ` tooltip: `
\\nEnter the output container of the new file \\nEnter the output container of the new file
@ -129,80 +125,63 @@ module.exports.details = function details() {
\\nExample:\\n \\nExample:\\n
.mkv .mkv
` `,
}, },
] ],
} };
};
}
module.exports.plugin = function plugin(file, librarySettings, inputs) { module.exports.plugin = function plugin(file, librarySettings, inputs) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false, processFile: false,
preset: '', preset: "",
container: '.mp4', container: ".mp4",
handBrakeMode: false, handBrakeMode: false,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: false, reQueueAfter: false,
infoLog: '', infoLog: "",
};
}
if (
if (inputs.codecs_to_exclude === undefined inputs.codecs_to_exclude === undefined ||
|| inputs.cli === undefined inputs.cli === undefined ||
|| inputs.transcode_arguments === undefined inputs.transcode_arguments === undefined ||
|| inputs.output_container === undefined) { inputs.output_container === undefined
) {
response.processFile = false response.processFile = false;
response.infoLog += "☒ Inputs not entered! \n" response.infoLog += "☒ Inputs not entered! \n";
return response return response;
} }
if (
if (inputs.codecs_to_exclude.includes(file.ffProbeData.streams[0].codec_name)) { inputs.codecs_to_exclude.includes(file.ffProbeData.streams[0].codec_name)
response.processFile = false ) {
response.infoLog += `☑File is already in ${file.ffProbeData.streams[0].codec_name}! \n` response.processFile = false;
return response response.infoLog += `☑File is already in ${file.ffProbeData.streams[0].codec_name}! \n`;
return response;
} }
//transcode settings //transcode settings
if (inputs.cli == `handbrake`) { if (inputs.cli == `handbrake`) {
response.handBrakeMode = true response.handBrakeMode = true;
response.FFmpegMode = false response.FFmpegMode = false;
} else if (inputs.cli == `ffmpeg`) { } else if (inputs.cli == `ffmpeg`) {
response.handBrakeMode = false response.handBrakeMode = false;
response.FFmpegMode = true response.FFmpegMode = true;
} else { } else {
response.processFile = false response.processFile = false;
response.infoLog += "☒ CLI not input correctly! \n" response.infoLog += "☒ CLI not input correctly! \n";
return response return response;
} }
response.processFile = true; response.processFile = true;
response.preset = inputs.transcode_arguments response.preset = inputs.transcode_arguments;
response.container = inputs.output_container response.container = inputs.output_container;
response.reQueueAfter = true; response.reQueueAfter = true;
response.infoLog += `☒File is not in desired codec! \n` response.infoLog += `☒File is not in desired codec! \n`;
return response return response;
};
}

@ -1,70 +1,54 @@
function details() { function details() {
return { return {
id: "Tdarr_Plugin_075b_FFMPEG_HEVC_Generic_Video_Audio_Only", id: "Tdarr_Plugin_075b_FFMPEG_HEVC_Generic_Video_Audio_Only",
Stage: "Pre-processing", Stage: "Pre-processing",
Name: "FFMPEG H265 Video + Audio Kept Only", Name: "FFMPEG H265 Video + Audio Kept Only",
Type: "Video", Type: "Video",
Operation:"Transcode", Operation: "Transcode",
Description: `[Contains built-in filter] This plugin transcodes non h265 files into h265 mkv using default settings. Only video and audio streams are kept. Useful for if you're getting errors because of certain containers not being able to handle certain subtitle/data streams. \n\n`, Description: `[Contains built-in filter] This plugin transcodes non h265 files into h265 mkv using default settings. Only video and audio streams are kept. Useful for if you're getting errors because of certain containers not being able to handle certain subtitle/data streams. \n\n`,
Version: "1.00", Version: "1.00",
Link: "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_075b_FFMPEG_HEVC_Generic_Video_Audio_Only.js", Link:
Tags:'pre-processing,video only,ffmpeg,h265', "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_075b_FFMPEG_HEVC_Generic_Video_Audio_Only.js",
} Tags: "pre-processing,video only,ffmpeg,h265",
};
} }
function plugin(file) { function plugin(file) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false, processFile: false,
preset: '', preset: "",
container: '.mp4', container: ".mp4",
handBrakeMode: false, handBrakeMode: false,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: false, reQueueAfter: false,
infoLog: '', infoLog: "",
};
}
if (file.fileMedium !== "video") { if (file.fileMedium !== "video") {
response.processFile = false response.processFile = false;
response.infoLog += "☒File is not a video! \n" response.infoLog += "☒File is not a video! \n";
return response return response;
} else { } else {
response.infoLog += "☑File is a video! \n" response.infoLog += "☑File is a video! \n";
} }
if (file.ffProbeData.streams[0].codec_name == "hevc") {
if (file.ffProbeData.streams[0].codec_name == 'hevc') { response.processFile = false;
response.processFile = false response.infoLog += "☑File is already in hevc! \n";
response.infoLog += "☑File is already in hevc! \n" return response;
return response
} }
response.processFile = true;
response.preset = `,-map 0:v -map 0:a -c copy -c:v:0 libx265`;
response.processFile = true; response.container = ".mkv";
response.preset = `,-map 0:v -map 0:a -c copy -c:v:0 libx265` response.handBrakeMode = false;
response.container = '.mkv' response.FFmpegMode = true;
response.handBrakeMode = false response.reQueueAfter = true;
response.FFmpegMode = true response.infoLog += `☒File is not hevc! \n`;
response.reQueueAfter = true; return response;
response.infoLog += `☒File is not hevc! \n`
return response
} }
module.exports.details = details; module.exports.details = details;
module.exports.plugin = plugin; module.exports.plugin = plugin;

@ -1,69 +1,53 @@
function details() { function details() {
return { return {
id: "Tdarr_Plugin_075c_FFMPEG_HEVC_Generic_Video_Audio_Only_CRF20", id: "Tdarr_Plugin_075c_FFMPEG_HEVC_Generic_Video_Audio_Only_CRF20",
Name: "FFMPEG H265 Video + Audio Kept Only With CRF 20", Name: "FFMPEG H265 Video + Audio Kept Only With CRF 20",
Type: "Video", Type: "Video",
Operation:"Transcode", Operation: "Transcode",
Description: `[Contains built-in filter] This plugin transcodes non h265 files into h265 mkv using default settings. Only video and audio streams are kept. Useful for if you're getting errors because of certain containers not being able to handle certain subtitle/data streams. A CRF value of 20 is used. \n\n`, Description: `[Contains built-in filter] This plugin transcodes non h265 files into h265 mkv using default settings. Only video and audio streams are kept. Useful for if you're getting errors because of certain containers not being able to handle certain subtitle/data streams. A CRF value of 20 is used. \n\n`,
Version: "1.00", Version: "1.00",
Link: "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_075c_FFMPEG_HEVC_Generic_Video_Audio_Only_CRF20.js", Link:
Tags:'pre-processing,video only,ffmpeg,h265', "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_075c_FFMPEG_HEVC_Generic_Video_Audio_Only_CRF20.js",
} Tags: "pre-processing,video only,ffmpeg,h265",
};
} }
function plugin(file) { function plugin(file) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false, processFile: false,
preset: '', preset: "",
container: '.mp4', container: ".mp4",
handBrakeMode: false, handBrakeMode: false,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: false, reQueueAfter: false,
infoLog: '', infoLog: "",
};
}
if (file.fileMedium !== "video") { if (file.fileMedium !== "video") {
response.processFile = false response.processFile = false;
response.infoLog += "☒File is not a video! \n" response.infoLog += "☒File is not a video! \n";
return response return response;
} else { } else {
response.infoLog += "☑File is a video! \n" response.infoLog += "☑File is a video! \n";
} }
if (file.ffProbeData.streams[0].codec_name == "hevc") {
if (file.ffProbeData.streams[0].codec_name == 'hevc') { response.processFile = false;
response.processFile = false response.infoLog += "☑File is already in hevc! \n";
response.infoLog += "☑File is already in hevc! \n" return response;
return response
} }
response.processFile = true;
response.preset = `,-map 0:v -map 0:a -c copy -c:v:0 libx265 -crf 20`;
response.processFile = true; response.container = ".mkv";
response.preset = `,-map 0:v -map 0:a -c copy -c:v:0 libx265 -crf 20` response.handBrakeMode = false;
response.container = '.mkv' response.FFmpegMode = true;
response.handBrakeMode = false response.reQueueAfter = true;
response.FFmpegMode = true response.infoLog += `☒File is not hevc! \n`;
response.reQueueAfter = true; return response;
response.infoLog += `☒File is not hevc! \n`
return response
} }
module.exports.details = details; module.exports.details = details;
module.exports.plugin = plugin; module.exports.plugin = plugin;

@ -1,69 +1,53 @@
function details() { function details() {
return { return {
id: "Tdarr_Plugin_075d_FFMPEG_HEVC_GPU_Generic_Video_Audio_Only_CRF20", id: "Tdarr_Plugin_075d_FFMPEG_HEVC_GPU_Generic_Video_Audio_Only_CRF20",
Name: "FFMPEG H265 Video + Audio Kept Only With CRF 20 On The GPU", Name: "FFMPEG H265 Video + Audio Kept Only With CRF 20 On The GPU",
Type: "Video", Type: "Video",
Operation:"Transcode", Operation: "Transcode",
Description: `[Contains built-in filter] This plugin transcodes non h265 files into h265 mkv using the graphics card and a CRF value of 20. Only video and audio streams are kept. Useful for if you're getting errors because of certain containers not being able to handle certain subtitle/data streams. A CRF value of 20 is used. The GPU (graphics card) is used. \n\n`, Description: `[Contains built-in filter] This plugin transcodes non h265 files into h265 mkv using the graphics card and a CRF value of 20. Only video and audio streams are kept. Useful for if you're getting errors because of certain containers not being able to handle certain subtitle/data streams. A CRF value of 20 is used. The GPU (graphics card) is used. \n\n`,
Version: "1.00", Version: "1.00",
Link: "https://github.com/moodiest/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_075d_FFMPEG_HEVC_GPU_Generic_Video_Audio_Only_CRF20.js", Link:
Tags:'pre-processing,video only,ffmpeg,h265', "https://github.com/moodiest/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_075d_FFMPEG_HEVC_GPU_Generic_Video_Audio_Only_CRF20.js",
} Tags: "pre-processing,video only,ffmpeg,h265",
};
} }
function plugin(file) { function plugin(file) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false, processFile: false,
preset: '', preset: "",
container: '.mp4', container: ".mp4",
handBrakeMode: false, handBrakeMode: false,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: false, reQueueAfter: false,
infoLog: '', infoLog: "",
};
}
if (file.fileMedium !== "video") { if (file.fileMedium !== "video") {
response.processFile = false response.processFile = false;
response.infoLog += "☒File is not a video! \n" response.infoLog += "☒File is not a video! \n";
return response return response;
} else { } else {
response.infoLog += "☑File is a video! \n" response.infoLog += "☑File is a video! \n";
} }
if (file.ffProbeData.streams[0].codec_name == "hevc") {
if (file.ffProbeData.streams[0].codec_name == 'hevc') { response.processFile = false;
response.processFile = false response.infoLog += "☑File is already in hevc! \n";
response.infoLog += "☑File is already in hevc! \n" return response;
return response
} }
response.processFile = true;
response.preset = `,-map 0:v -map 0:a -c copy -c:v:0 hevc_nvenc -crf 20`;
response.processFile = true; response.container = ".mkv";
response.preset = `,-map 0:v -map 0:a -c copy -c:v:0 hevc_nvenc -crf 20` response.handBrakeMode = false;
response.container = '.mkv' response.FFmpegMode = true;
response.handBrakeMode = false response.reQueueAfter = true;
response.FFmpegMode = true response.infoLog += `☒File is not hevc! \n`;
response.reQueueAfter = true; return response;
response.infoLog += `☒File is not hevc! \n`
return response
} }
module.exports.details = details; module.exports.details = details;
module.exports.plugin = plugin; module.exports.plugin = plugin;

@ -1,8 +1,4 @@
module.exports.details = function details() { module.exports.details = function details() {
return { return {
id: "Tdarr_Plugin_076a_re_order_audio_streams", id: "Tdarr_Plugin_076a_re_order_audio_streams",
Stage: "Pre-processing", Stage: "Pre-processing",
@ -12,10 +8,10 @@ module.exports.details = function details() {
Description: `[TESTING][Contains built-in filter] Specify a language tag for Tdarr to try and put as 1st audio track \n\n`, Description: `[TESTING][Contains built-in filter] Specify a language tag for Tdarr to try and put as 1st audio track \n\n`,
Version: "1.00", Version: "1.00",
Link: "", Link: "",
Tags:'pre-processing,audio only,ffmpeg,configurable', Tags: "pre-processing,audio only,ffmpeg,configurable",
Inputs: [ Inputs: [
{ {
name: 'preferred_language', name: "preferred_language",
tooltip: `Specify one language tag for Tdarr to try and put as 1st audio track tooltip: `Specify one language tag for Tdarr to try and put as 1st audio track
\\nExample:\\n \\nExample:\\n
@ -34,122 +30,99 @@ module.exports.details = function details() {
de de
` `,
} },
] ],
} };
};
}
module.exports.plugin = function plugin(file, librarySettings, inputs) { module.exports.plugin = function plugin(file, librarySettings, inputs) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false, processFile: false,
preset: '', preset: "",
container: '.mp4', container: ".mp4",
handBrakeMode: false, handBrakeMode: false,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: false, reQueueAfter: false,
infoLog: '', infoLog: "",
};
} console.log(inputs.preferred_language);
console.log(inputs.preferred_language)
if (inputs.preferred_language === undefined) { if (inputs.preferred_language === undefined) {
response.processFile = false;
response.processFile = false response.infoLog += "☒ Inputs not entered! \n";
response.infoLog += "☒ Inputs not entered! \n" return response;
return response
} }
var desiredTrackPosition = file.ffProbeData.streams.filter(
var desiredTrackPosition = file.ffProbeData.streams.filter(stream => stream.codec_type.toLowerCase() == "video").length (stream) => stream.codec_type.toLowerCase() == "video"
).length;
var audioInLang = file.ffProbeData.streams.filter(stream => {
var audioInLang = file.ffProbeData.streams.filter((stream) => {
if (
if (stream.codec_type.toLowerCase() == "audio" stream.codec_type.toLowerCase() == "audio" &&
&& stream.tags && stream.tags.language && inputs.preferred_language.includes(stream.tags.language.toLowerCase())) { stream.tags &&
return true stream.tags.language &&
inputs.preferred_language.includes(stream.tags.language.toLowerCase())
) {
return true;
} }
return false return false;
});
})
if (audioInLang.length == 0) { if (audioInLang.length == 0) {
response.processFile = false;
response.processFile = false response.infoLog += "☒ No audio tracks in desired language! \n";
response.infoLog += "☒ No audio tracks in desired language! \n" return response;
return response
} }
var streamToMove = audioInLang[0];
var streamToMove = audioInLang[0]
if (streamToMove.index == desiredTrackPosition) { if (streamToMove.index == desiredTrackPosition) {
response.processFile = false;
response.processFile = false response.infoLog += "☑ Preferred language is already first audio track! \n";
response.infoLog += "☑ Preferred language is already first audio track! \n" return response;
return response
} }
var ffmpegCommand = ", -c copy";
var ffmpegCommand = ', -c copy'
if (file.ffProbeData.streams[0].codec_type.toLowerCase() == "video") { if (file.ffProbeData.streams[0].codec_type.toLowerCase() == "video") {
ffmpegCommand += ` -map 0:v ` ffmpegCommand += ` -map 0:v `;
} }
var allAudioTracks = file.ffProbeData.streams.filter(stream => stream.codec_type.toLowerCase() == "audio") var allAudioTracks = file.ffProbeData.streams.filter(
(stream) => stream.codec_type.toLowerCase() == "audio"
);
var streamIdx var streamIdx;
for (var i = 0; i < allAudioTracks.length; i++) { for (var i = 0; i < allAudioTracks.length; i++) {
if (allAudioTracks[i].index == streamToMove.index) { if (allAudioTracks[i].index == streamToMove.index) {
streamIdx = i streamIdx = i;
break break;
} }
} }
ffmpegCommand += ` -map 0:a:${streamIdx} -disposition:a:${streamIdx} default` ffmpegCommand += ` -map 0:a:${streamIdx} -disposition:a:${streamIdx} default`;
for (var i = 0; i < allAudioTracks.length; i++) { for (var i = 0; i < allAudioTracks.length; i++) {
if (i !== streamIdx) { if (i !== streamIdx) {
ffmpegCommand += ` -map 0:a:${i} -disposition:a:${i} none ` ffmpegCommand += ` -map 0:a:${i} -disposition:a:${i} none `;
} }
} }
ffmpegCommand += ` -map 0:s? -map 0:d? ` ffmpegCommand += ` -map 0:s? -map 0:d? `;
response.processFile = true response.processFile = true;
response.preset = ffmpegCommand response.preset = ffmpegCommand;
response.container = `.` + file.container response.container = `.` + file.container;
response.handBrakeMode = false response.handBrakeMode = false;
response.FFmpegMode = true response.FFmpegMode = true;
response.reQueueAfter = true; response.reQueueAfter = true;
response.infoLog += `☒ Desired audio lang is not first audio stream, moving! \n` response.infoLog += `☒ Desired audio lang is not first audio stream, moving! \n`;
return response return response;
};
}

@ -1,8 +1,4 @@
module.exports.details = function details() { module.exports.details = function details() {
return { return {
id: "Tdarr_Plugin_076b_re_order_subtitle_streams", id: "Tdarr_Plugin_076b_re_order_subtitle_streams",
Stage: "Pre-processing", Stage: "Pre-processing",
@ -12,10 +8,10 @@ module.exports.details = function details() {
Description: `[TESTING][Contains built-in filter] Specify a language tag for Tdarr to try and put as 1st subtitle track \n\n`, Description: `[TESTING][Contains built-in filter] Specify a language tag for Tdarr to try and put as 1st subtitle track \n\n`,
Version: "1.00", Version: "1.00",
Link: "", Link: "",
Tags:'pre-processing,subtitle only,ffmpeg,configurable', Tags: "pre-processing,subtitle only,ffmpeg,configurable",
Inputs: [ Inputs: [
{ {
name: 'preferred_language', name: "preferred_language",
tooltip: `Specify one language tag for Tdarr to try and put as 1st subtitle track tooltip: `Specify one language tag for Tdarr to try and put as 1st subtitle track
\\nExample:\\n \\nExample:\\n
@ -34,124 +30,102 @@ module.exports.details = function details() {
de de
` `,
} },
] ],
} };
};
}
module.exports.plugin = function plugin(file, librarySettings, inputs) { module.exports.plugin = function plugin(file, librarySettings, inputs) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false, processFile: false,
preset: '', preset: "",
container: '.mp4', container: ".mp4",
handBrakeMode: false, handBrakeMode: false,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: false, reQueueAfter: false,
infoLog: '', infoLog: "",
};
} console.log(inputs.preferred_language);
console.log(inputs.preferred_language)
if (inputs.preferred_language === undefined) { if (inputs.preferred_language === undefined) {
response.processFile = false;
response.processFile = false response.infoLog += "☒ Inputs not entered! \n";
response.infoLog += "☒ Inputs not entered! \n" return response;
return response
} }
var desiredTrackPosition = file.ffProbeData.streams.filter(
var desiredTrackPosition = file.ffProbeData.streams.filter(stream => stream.codec_type.toLowerCase() == "video" || stream.codec_type.toLowerCase() == "audio").length (stream) =>
stream.codec_type.toLowerCase() == "video" ||
stream.codec_type.toLowerCase() == "audio"
).length;
var subtitleInLang = file.ffProbeData.streams.filter(stream => {
var subtitleInLang = file.ffProbeData.streams.filter((stream) => {
if (
if (stream.codec_type.toLowerCase() == "subtitle" stream.codec_type.toLowerCase() == "subtitle" &&
&& stream.tags && stream.tags.language && inputs.preferred_language.includes(stream.tags.language.toLowerCase())) { stream.tags &&
return true stream.tags.language &&
inputs.preferred_language.includes(stream.tags.language.toLowerCase())
) {
return true;
} }
return false return false;
});
})
if (subtitleInLang.length == 0) { if (subtitleInLang.length == 0) {
response.processFile = false;
response.processFile = false response.infoLog += "☒ No subtitle tracks in desired language! \n";
response.infoLog += "☒ No subtitle tracks in desired language! \n" return response;
return response
} }
var streamToMove = subtitleInLang[0];
var streamToMove = subtitleInLang[0]
if (streamToMove.index == desiredTrackPosition) { if (streamToMove.index == desiredTrackPosition) {
response.processFile = false;
response.processFile = false response.infoLog +=
response.infoLog += "☑ Preferred language is already first subtitle track! \n" "☑ Preferred language is already first subtitle track! \n";
return response return response;
} }
var ffmpegCommand = ", -c copy ";
var ffmpegCommand = ', -c copy '
if (file.ffProbeData.streams[0].codec_type.toLowerCase() == "video") { if (file.ffProbeData.streams[0].codec_type.toLowerCase() == "video") {
ffmpegCommand += ` -map 0:v -map 0:a ` ffmpegCommand += ` -map 0:v -map 0:a `;
} }
var allSubtitleTracks = file.ffProbeData.streams.filter(stream => stream.codec_type.toLowerCase() == "subtitle") var allSubtitleTracks = file.ffProbeData.streams.filter(
(stream) => stream.codec_type.toLowerCase() == "subtitle"
);
var streamIdx;
var streamIdx
for (var i = 0; i < allSubtitleTracks.length; i++) { for (var i = 0; i < allSubtitleTracks.length; i++) {
if (allSubtitleTracks[i].index == streamToMove.index) { if (allSubtitleTracks[i].index == streamToMove.index) {
streamIdx = i streamIdx = i;
break break;
} }
} }
ffmpegCommand += ` -map 0:s:${streamIdx} -disposition:s:${streamIdx} default` ffmpegCommand += ` -map 0:s:${streamIdx} -disposition:s:${streamIdx} default`;
for (var i = 0; i < allSubtitleTracks.length; i++) { for (var i = 0; i < allSubtitleTracks.length; i++) {
if (i !== streamIdx) { if (i !== streamIdx) {
ffmpegCommand += ` -map 0:s:${i} -disposition:a:${i} none ` ffmpegCommand += ` -map 0:s:${i} -disposition:a:${i} none `;
} }
} }
ffmpegCommand += ` -map 0:d? ` ffmpegCommand += ` -map 0:d? `;
response.processFile = true;
response.processFile = true response.preset = ffmpegCommand;
response.preset = ffmpegCommand response.container = `.` + file.container;
response.container = `.` + file.container response.handBrakeMode = false;
response.handBrakeMode = false response.FFmpegMode = true;
response.FFmpegMode = true
response.reQueueAfter = true; response.reQueueAfter = true;
response.infoLog += `☒ Desired subtitle lang is not first subtitle stream, moving! \n` response.infoLog += `☒ Desired subtitle lang is not first subtitle stream, moving! \n`;
return response return response;
};
}

@ -1,8 +1,4 @@
module.exports.details = function details() { module.exports.details = function details() {
return { return {
id: "Tdarr_Plugin_077b_HandBrake_NVENC_264_Configurable", id: "Tdarr_Plugin_077b_HandBrake_NVENC_264_Configurable",
Stage: "Pre-processing", Stage: "Pre-processing",
@ -12,10 +8,10 @@ module.exports.details = function details() {
Description: `[Contains built-in filter] If files are not in H264, they will be transcoded into H264 using HandBrake NVENC H264. All audio and subtitles are kept. \n\n`, Description: `[Contains built-in filter] If files are not in H264, they will be transcoded into H264 using HandBrake NVENC H264. All audio and subtitles are kept. \n\n`,
Version: "1.00", Version: "1.00",
Link: "", Link: "",
Tags: 'pre-processing,handbrake,nvenc h264,configurable', Tags: "pre-processing,handbrake,nvenc h264,configurable",
Inputs: [ Inputs: [
{ {
name: 'handbrake_preset', name: "handbrake_preset",
tooltip: `\\nEnter the name of a HandBrake preset. tooltip: `\\nEnter the name of a HandBrake preset.
@ -30,10 +26,10 @@ module.exports.details = function details() {
\\nExample:\\n \\nExample:\\n
Fast 1080p30 Fast 1080p30
` `,
}, },
{ {
name: 'output_container', name: "output_container",
tooltip: ` tooltip: `
\\nEnter the output container of the new file \\nEnter the output container of the new file
@ -43,70 +39,55 @@ module.exports.details = function details() {
\\nExample:\\n \\nExample:\\n
.mkv .mkv
` `,
}, },
] ],
} };
};
}
module.exports.plugin = function plugin(file, librarySettings, inputs) { module.exports.plugin = function plugin(file, librarySettings, inputs) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false, processFile: false,
preset: '', preset: "",
container: '.mp4', container: ".mp4",
handBrakeMode: false, handBrakeMode: false,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: false, reQueueAfter: false,
infoLog: '', infoLog: "",
};
if (
inputs.handbrake_preset === undefined ||
inputs.output_container === undefined
) {
response.processFile = false;
response.infoLog += "☒ Inputs not entered! \n";
return response;
} }
if (inputs.handbrake_preset === undefined if (file.ffProbeData.streams[0].codec_name == "h264") {
|| inputs.output_container === undefined) { response.processFile = false;
response.infoLog += "☑ File is already in h264, no need to transcode! \n";
response.processFile = false return response;
response.infoLog += "☒ Inputs not entered! \n"
return response
}
if (file.ffProbeData.streams[0].codec_name == 'h264') {
response.processFile = false
response.infoLog += "☑ File is already in h264, no need to transcode! \n"
return response
} else { } else {
var container = inputs.output_container;
var container = inputs.output_container if (container.charAt(0) != ".") {
container = "." + container;
if (container.charAt(0) != '.') {
container = '.' + container
} }
var response = { var response = {
processFile: true, processFile: true,
preset: `-Z "${inputs.handbrake_preset}" -e nvenc_h264 --all-audio --all-subtitles`, preset: `-Z "${inputs.handbrake_preset}" -e nvenc_h264 --all-audio --all-subtitles`,
container: container, container: container,
handBrakeMode: true, handBrakeMode: true,
FFmpegMode: false, FFmpegMode: false,
reQueueAfter: true, reQueueAfter: true,
infoLog: '☒ File is not in h264, transcoding! \n' infoLog: "☒ File is not in h264, transcoding! \n",
} };
return response
return response;
} }
};
}

@ -1,8 +1,4 @@
module.exports.details = function details() { module.exports.details = function details() {
return { return {
id: "Tdarr_Plugin_43az_add_to_radarr", id: "Tdarr_Plugin_43az_add_to_radarr",
Stage: "Post-processing", Stage: "Post-processing",
@ -12,103 +8,96 @@ module.exports.details = function details() {
Description: `[TESTING]Add movie to Radarr after processing \n\n`, Description: `[TESTING]Add movie to Radarr after processing \n\n`,
Version: "1.00", Version: "1.00",
Link: "", Link: "",
Tags:"3rd party,post-processing,configurable", Tags: "3rd party,post-processing,configurable",
Inputs: [ Inputs: [
{ {
name: 'server_ip', name: "server_ip",
tooltip: ` tooltip: `
Enter the server IP address Enter the server IP address
\\nExample:\\n \\nExample:\\n
192.168.0.10 192.168.0.10
` `,
}, },
{ {
name: 'port', name: "port",
tooltip: ` tooltip: `
Enter the port Radarr is using Enter the port Radarr is using
\\nExample:\\n \\nExample:\\n
7878 7878
` `,
}, },
{ {
name: 'radarr_api_key', name: "radarr_api_key",
tooltip: ` tooltip: `
Enter the Radarr API key. You can find it on Radarr at /settings/general Enter the Radarr API key. You can find it on Radarr at /settings/general
\\nExample:\\n \\nExample:\\n
3ff1ae1c39a2a2a397315e15266dea48 3ff1ae1c39a2a2a397315e15266dea48
` `,
}, },
] ],
} };
} };
module.exports.plugin = function plugin(file, librarySettings, inputs) { module.exports.plugin = function plugin(file, librarySettings, inputs) {
const request = require("request");
const IP = inputs.server_ip;
const port = inputs.port;
const request = require('request') const APIKey = inputs.radarr_api_key;
const IP = inputs.server_ip var term = file.file.split("/");
const port = inputs.port term = term[term.length - 1];
const APIKey = inputs.radarr_api_key term = term.split(".");
term = term[term.length - 2];
term = encodeURI(term);
var term = file.file.split("/")
term = term[term.length - 1] console.log(IP);
term = term.split(".") console.log(term);
term = term[term.length - 2]
term = encodeURI(term) request.get(
`http://${IP}:${port}/api/movie/lookup?term=${term}&apikey=${APIKey}`,
{
console.log(IP) json: {},
console.log(term) },
(error, res, body) => {
request.get(`http://${IP}:${port}/api/movie/lookup?term=${term}&apikey=${APIKey}`, {
json: {
}
}, (error, res, body) => {
if (error) {
console.error(error)
}
// console.log(`statusCode: ${res.statusCode}`)
//console.log(body)
var response = body[0]
console.log(response.title) //Shrek
response.profileId = 6
response.path = file.file
response.qualityProfile = 6
request.post(`http://${IP}:${port}/api/movie?apikey=${APIKey}`, {
json: response
}, (error, res, body) => {
if (error) { if (error) {
console.error(error) console.error(error);
} }
console.log(`statusCode: ${res.statusCode}`) // console.log(`statusCode: ${res.statusCode}`)
// console.log(body) //console.log(body)
})
var response = body[0];
}) console.log(response.title); //e.g. Shrek
response.profileId = 6;
response.path = file.file;
response.qualityProfile = 6;
request.post(
`http://${IP}:${port}/api/movie?apikey=${APIKey}`,
{
json: response,
},
(error, res, body) => {
if (error) {
console.error(error);
}
console.log(`statusCode: ${res.statusCode}`);
// console.log(body)
}
);
}
);
//Optional response if you need to modify database //Optional response if you need to modify database
var response = { var response = {
file, file,
removeFromDB: false, removeFromDB: false,
updateDB: false, updateDB: false,
} };
//return response //return response
};
}

@ -1,171 +1,138 @@
function details() { function details() {
return { return {
id: "Tdarr_Plugin_a8hc_HaveAGitGat_HandBrake_H264_VeryFast1080p30", id: "Tdarr_Plugin_a8hc_HaveAGitGat_HandBrake_H264_VeryFast1080p30",
Stage: "Pre-processing", Stage: "Pre-processing",
Name: "HaveAGitGat HandBrake VeryFast1080p30, No title meta, no subs, 192Kb AAC stereo,MP4 ", Name:
"HaveAGitGat HandBrake VeryFast1080p30, No title meta, no subs, 192Kb AAC stereo,MP4 ",
Type: "Video", Type: "Video",
Description: `[Contains built-in filter] This plugin transcodes into H264 using HandBrake's 'Very Fast 1080p30' preset if the file is not in H264 already. It removes subs, metadata (if a title exists) and adds a stereo 192kbit AAC track if an AAC track (any) doesn't exist. The output container is MP4. \n\n Description: `[Contains built-in filter] This plugin transcodes into H264 using HandBrake's 'Very Fast 1080p30' preset if the file is not in H264 already. It removes subs, metadata (if a title exists) and adds a stereo 192kbit AAC track if an AAC track (any) doesn't exist. The output container is MP4. \n\n
`, `,
Version: "1.00", Version: "1.00",
Link: "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_a8hc_HaveAGitGat_HandBrake_H264_VeryFast1080p30.js", Link:
Tags:'pre-processing,handbrake,ffmpeg,h264', "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_a8hc_HaveAGitGat_HandBrake_H264_VeryFast1080p30.js",
} Tags: "pre-processing,handbrake,ffmpeg,h264",
};
} }
function plugin(file) { function plugin(file) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false,
processFile : false, preset: "",
preset : '', container: ".mp4",
container : '.mp4', handBrakeMode: false,
handBrakeMode : false, FFmpegMode: false,
FFmpegMode : false, reQueueAfter: false,
reQueueAfter : false, infoLog: "",
infoLog : '', };
}
if (file.fileMedium !== "video") { if (file.fileMedium !== "video") {
console.log("File is not video");
response.infoLog += "☒File is not video \n";
console.log("File is not video")
response.infoLog += "☒File is not video \n"
response.processFile = false; response.processFile = false;
return response return response;
} else {
} else { var jsonString = JSON.stringify(file);
var jsonString = JSON.stringify(file) var hasSubs = false;
for (var i = 0; i < file.ffProbeData.streams.length; i++) {
var hasSubs = false try {
if (
file.ffProbeData.streams[i].codec_type.toLowerCase() == "subtitle"
for (var i = 0; i < file.ffProbeData.streams.length; i++) { ) {
hasSubs = true;
try { }
} catch (err) {}
if(file.ffProbeData.streams[i].codec_type.toLowerCase() == "subtitle"){ }
hasSubs = true if (file.ffProbeData.streams[0].codec_name != "h264") {
response.infoLog += "☒File is not in h264! \n";
} response.preset = '-Z "Very Fast 1080p30"';
} catch (err) { }
}
if(file.ffProbeData.streams[0].codec_name != 'h264'){
response.infoLog += "☒File is not in h264! \n"
response.preset = '-Z "Very Fast 1080p30"'
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.handBrakeMode = true response.handBrakeMode = true;
return response return response;
} else {
}else{ response.infoLog += "☑File is already in h264! \n";
response.infoLog += "☑File is already in h264! \n" }
}
///
if(hasSubs){ ///
response.infoLog += "☒File has subs \n" if (hasSubs) {
response.preset = ',-sn -map 0 -c copy' response.infoLog += "☒File has subs \n";
response.preset = ",-sn -map 0 -c copy";
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} else {
}else{ response.infoLog += "☑File has no subs \n";
response.infoLog += "☑File has no subs \n" }
}
if (
if((file.meta.Title != "undefined") && !jsonString.includes("aac") && hasSubs){ file.meta.Title != "undefined" &&
!jsonString.includes("aac") &&
response.infoLog += "☒File has title metadata and no aac and subs \n" hasSubs
response.preset = ',-map_metadata -1 -map 0 -c copy' ) {
response.infoLog += "☒File has title metadata and no aac and subs \n";
response.preset = ",-map_metadata -1 -map 0 -c copy";
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} }
if(!jsonString.includes("aac") && hasSubs){ if (!jsonString.includes("aac") && hasSubs) {
response.infoLog += "☒File has no aac track and has subs \n";
response.infoLog += "☒File has no aac track and has subs \n" response.preset =
response.preset = ',-sn -map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -b:a:0 192k -ac 2' ",-sn -map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -b:a:0 192k -ac 2";
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} }
if(file.meta.Title != "undefined" && hasSubs){ if (file.meta.Title != "undefined" && hasSubs) {
response.infoLog += "☒File has title and has subs \n";
response.infoLog += "☒File has title and has subs \n" response.preset = ",-sn -map_metadata -1 -map 0 -c copy";
response.preset = ',-sn -map_metadata -1 -map 0 -c copy'
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} }
///
if (file.meta.Title != undefined) {
/// response.infoLog += "☒File has title metadata \n";
if(file.meta.Title != undefined ){ response.preset = ",-map_metadata -1 -map 0 -c copy";
response.infoLog += "☒File has title metadata \n"
response.preset = ',-map_metadata -1 -map 0 -c copy'
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
}else{ } else {
response.infoLog += "☑File has no title metadata" response.infoLog += "☑File has no title metadata";
} }
if(!jsonString.includes("aac")){ if (!jsonString.includes("aac")) {
response.infoLog += "☒File has no aac track \n";
response.infoLog += "☒File has no aac track \n" response.preset =
response.preset = ',-map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -b:a:0 192k -ac 2' ",-map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -b:a:0 192k -ac 2";
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} else {
}else{ response.infoLog += "☑File has aac track \n";
response.infoLog += "☑File has aac track \n" }
}
response.infoLog += "☑File meets conditions! \n";
return response;
response.infoLog += "☑File meets conditions! \n"
return response
} }
} }
module.exports.details = details; module.exports.details = details;
module.exports.plugin = plugin; module.exports.plugin = plugin;

@ -1,172 +1,138 @@
function details() { function details() {
return { return {
id: "Tdarr_Plugin_a9hc_HaveAGitGat_HandBrake_H264_Fast1080p30", id: "Tdarr_Plugin_a9hc_HaveAGitGat_HandBrake_H264_Fast1080p30",
Stage: "Pre-processing", Stage: "Pre-processing",
Name: "HaveAGitGat HandBrake Fast1080p30, No title meta, no subs, 192Kb AAC stereo,MP4 ", Name:
"HaveAGitGat HandBrake Fast1080p30, No title meta, no subs, 192Kb AAC stereo,MP4 ",
Type: "Video", Type: "Video",
Description: `[Contains built-in filter] This plugin transcodes into H264 using HandBrake's 'Fast 1080p30' preset if the file is not in H264 already. It removes subs, metadata (if a title exists) and adds a stereo 192kbit AAC track if an AAC track (any) doesn't exist. The output container is MP4. \n\n Description: `[Contains built-in filter] This plugin transcodes into H264 using HandBrake's 'Fast 1080p30' preset if the file is not in H264 already. It removes subs, metadata (if a title exists) and adds a stereo 192kbit AAC track if an AAC track (any) doesn't exist. The output container is MP4. \n\n
`, `,
Version: "1.00", Version: "1.00",
Link: "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_a9hc_HaveAGitGat_HandBrake_H264_Fast1080p30.js", Link:
Tags:'pre-processing,handbrake,ffmpeg,h264', "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_a9hc_HaveAGitGat_HandBrake_H264_Fast1080p30.js",
} Tags: "pre-processing,handbrake,ffmpeg,h264",
};
} }
function plugin(file) { function plugin(file) {
//Must return this object //Must return this object
var response = { var response = {
processFile: false,
processFile : false, preset: "",
preset : '', container: ".mp4",
container : '.mp4', handBrakeMode: false,
handBrakeMode : false, FFmpegMode: false,
FFmpegMode : false, reQueueAfter: false,
reQueueAfter : false, infoLog: "",
infoLog : '', };
}
if (file.fileMedium !== "video") { if (file.fileMedium !== "video") {
console.log("File is not video");
response.infoLog += "☒File is not video \n";
console.log("File is not video")
response.infoLog += "☒File is not video \n"
response.processFile = false; response.processFile = false;
return response return response;
} else {
} else { var jsonString = JSON.stringify(file);
var jsonString = JSON.stringify(file) var hasSubs = false;
for (var i = 0; i < file.ffProbeData.streams.length; i++) {
var hasSubs = false try {
if (
file.ffProbeData.streams[i].codec_type.toLowerCase() == "subtitle"
for (var i = 0; i < file.ffProbeData.streams.length; i++) { ) {
hasSubs = true;
try { }
} catch (err) {}
if(file.ffProbeData.streams[i].codec_type.toLowerCase() == "subtitle"){ }
hasSubs = true if (file.ffProbeData.streams[0].codec_name != "h264") {
response.infoLog += "☒File is not in h264! \n";
} response.preset = '-Z "Fast 1080p30"';
} catch (err) { }
}
if(file.ffProbeData.streams[0].codec_name != 'h264'){
response.infoLog += "☒File is not in h264! \n"
response.preset = '-Z "Fast 1080p30"'
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.handBrakeMode = true response.handBrakeMode = true;
return response return response;
} else {
}else{ response.infoLog += "☑File is already in h264! \n";
response.infoLog += "☑File is already in h264! \n" }
}
///
/// if (hasSubs) {
response.infoLog += "☒File has subs \n";
if(hasSubs){ response.preset = ",-sn -map 0 -c copy";
response.infoLog += "☒File has subs \n"
response.preset = ',-sn -map 0 -c copy'
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} else {
}else{ response.infoLog += "☑File has no subs \n";
response.infoLog += "☑File has no subs \n" }
}
if (
if((file.meta.Title != "undefined") && !jsonString.includes("aac") && hasSubs){ file.meta.Title != "undefined" &&
!jsonString.includes("aac") &&
response.infoLog += "☒File has title metadata and no aac and subs \n" hasSubs
response.preset = ',-map_metadata -1 -map 0 -c copy' ) {
response.infoLog += "☒File has title metadata and no aac and subs \n";
response.preset = ",-map_metadata -1 -map 0 -c copy";
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} }
if(!jsonString.includes("aac") && hasSubs){ if (!jsonString.includes("aac") && hasSubs) {
response.infoLog += "☒File has no aac track and has subs \n";
response.infoLog += "☒File has no aac track and has subs \n" response.preset =
response.preset = ',-sn -map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -b:a:0 192k -ac 2' ",-sn -map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -b:a:0 192k -ac 2";
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} }
if(file.meta.Title != "undefined" && hasSubs){
response.infoLog += "☒File has title and has subs \n" if (file.meta.Title != "undefined" && hasSubs) {
response.preset = ',-sn -map_metadata -1 -map 0 -c copy' response.infoLog += "☒File has title and has subs \n";
response.preset = ",-sn -map_metadata -1 -map 0 -c copy";
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} }
///
if (file.meta.Title != undefined) {
/// response.infoLog += "☒File has title metadata \n";
if(file.meta.Title != undefined ){ response.preset = ",-map_metadata -1 -map 0 -c copy";
response.infoLog += "☒File has title metadata \n"
response.preset = ',-map_metadata -1 -map 0 -c copy'
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
}else{ } else {
response.infoLog += "☑File has no title metadata" response.infoLog += "☑File has no title metadata";
} }
if(!jsonString.includes("aac")){ if (!jsonString.includes("aac")) {
response.infoLog += "☒File has no aac track \n";
response.infoLog += "☒File has no aac track \n" response.preset =
response.preset = ',-map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -b:a:0 192k -ac 2' ",-map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -b:a:0 192k -ac 2";
response.reQueueAfter = true; response.reQueueAfter = true;
response.processFile = true; response.processFile = true;
response.FFmpegMode = true response.FFmpegMode = true;
return response return response;
} else {
}else{ response.infoLog += "☑File has aac track \n";
response.infoLog += "☑File has aac track \n" }
}
response.infoLog += "☑File meets conditions! \n";
return response;
response.infoLog += "☑File meets conditions! \n"
return response
} }
} }
module.exports.details = details; module.exports.details = details;
module.exports.plugin = plugin; module.exports.plugin = plugin;

Loading…
Cancel
Save