From 87d3051cfc2a01e8bb791871ebebec0e2acaa523 Mon Sep 17 00:00:00 2001 From: aunefyren Date: Tue, 29 Mar 2022 12:46:38 +0200 Subject: [PATCH] Remade plugin to convert user-selected codecs to FLAC --- .../Tdarr_Plugin_fu69_aune_audio_to_flac.js | 77 +++++++++++++++++++ .../Tdarr_Plugin_fu72_aune_alac_to_flac.js | 49 ------------ 2 files changed, 77 insertions(+), 49 deletions(-) create mode 100644 Community/Tdarr_Plugin_fu69_aune_audio_to_flac.js delete mode 100644 Community/Tdarr_Plugin_fu72_aune_alac_to_flac.js diff --git a/Community/Tdarr_Plugin_fu69_aune_audio_to_flac.js b/Community/Tdarr_Plugin_fu69_aune_audio_to_flac.js new file mode 100644 index 0000000..ce546cf --- /dev/null +++ b/Community/Tdarr_Plugin_fu69_aune_audio_to_flac.js @@ -0,0 +1,77 @@ +function details() { + return { + id: 'Tdarr_Plugin_fu69_aune_audio_to_flac', + Stage: 'Pre-processing', + Name: 'Aune - Audio to FLAC', + Type: 'Audio', + Operation: 'Transcode', + Description: 'This plugin transcodes different audio codecs to FLAC. ' + + 'Leaving the default inputs results in lossless conversion as ALAC and PCM codecs don\'t require transcoding for FLAC. It ignores files that contains video streams and is made for music libraries.\n\n', + Version: '1.00', + Link: 'https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_fu69_aune_audio_to_flac.js', + Tags: 'pre-processing,ffmpeg,audio only', + Inputs: [ + { + name: "codecs", + type: 'string', + defaultValue: 'alac,pcm_s16be,pcm_s16le,pcm_s24be,pcm_s24le,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le', + inputUI: { + type: 'text', + }, + tooltip: + `Select the codec(s) (comma seperated) you would like to transcode to FLAC. + \\nExample:\\n + alac + \\nExample:\\n + alac, pcm_s16be, mp3 + \\nExample:\\n + alac,pcm_s16be,pcm_s16le,pcm_s24be,pcm_s24le,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le`, + }, + ], + }; + } + + // eslint-disable-next-line no-unused-vars + function plugin(file, librarySettings, inputs, otherArguments) { + const lib = require('../methods/lib')(); + // eslint-disable-next-line no-unused-vars,no-param-reassign + inputs = lib.loadDefaultValues(inputs, details); + + if (inputs.codecs == "" || inputs.codecs == "undefined") { + response.infoLog += '☒No codecs selected!\n'; + return response; + } else { + inputs.codecs = inputs.codecs.split(","); + } + + const response = { + processFile: false, + preset: ' -c:a flac -f flac', + container: '.flac', + handBrakeMode: false, + FFmpegMode: true, + reQueueAfter: true, + infoLog: '', + }; + + if (file.ffProbeData.streams.filter((x) => x.codec_type === 'video' && x.avg_frame_rate !== '0/0').length) { + response.infoLog += '☒File contains video!\n'; + return response; + } + + // Either transcode to FLAC or ignore file + for(var i = 0; i < file.ffProbeData.streams.length; i++) { + for(var j = 0; j < inputs.codecs.length; j++) { + if(file.ffProbeData.streams[i].codec_type === 'audio' && file.ffProbeData.streams[i].codec_name.toLowerCase() === inputs.codecs[j].toLowerCase().trim()) { + response.processFile = true; + response.infoLog += '☒Found ' + inputs.codecs[j].toLowerCase().trim() + ' codec!\n'; + return response; + } + } + } + response.infoLog += '☑No matching codecs found!\n'; + return response; + } + + module.exports.details = details; + module.exports.plugin = plugin; diff --git a/Community/Tdarr_Plugin_fu72_aune_alac_to_flac.js b/Community/Tdarr_Plugin_fu72_aune_alac_to_flac.js deleted file mode 100644 index 1a5a5ba..0000000 --- a/Community/Tdarr_Plugin_fu72_aune_alac_to_flac.js +++ /dev/null @@ -1,49 +0,0 @@ -function details() { - return { - id: 'Tdarr_Plugin_fu72_aune_alac_to_flac', - Stage: 'Pre-processing', - Name: 'Aune - ALAC to FLAC', - Type: 'Audio', - Operation: 'Transcode', - Description: '[Contains built-in filter] This plugin transcodes all ALAC-tracks to FLAC. ' - + 'It ignores files that contains video streams and is made for music libraries.\n\n', - Version: '1.00', - Link: 'https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_fu72_aune_alac_to_flac.js', - Tags: 'pre-processing,ffmpeg,audio only', - }; - } - - // eslint-disable-next-line no-unused-vars - function plugin(file, librarySettings, inputs, otherArguments) { - const lib = require('../methods/lib')(); - // eslint-disable-next-line no-unused-vars,no-param-reassign - inputs = lib.loadDefaultValues(inputs, details); - const response = { - processFile: false, - preset: ' -f flac', - container: '.flac', - handBrakeMode: false, - FFmpegMode: true, - reQueueAfter: true, - infoLog: '', - }; - - if (file.ffProbeData.streams.filter((x) => x.codec_type === 'video' && x.avg_frame_rate !== '0/0').length) { - response.infoLog += '☒File contains video!\n'; - return response; - } - - // Either transcode to FLAC (lossless) or ignore file - if (file.ffProbeData.streams.filter( - (x) => x.codec_type.toLowerCase() === 'audio' && x.codec_name.toLowerCase() === 'alac', - ).length) { - response.processFile = true; - response.infoLog += '☒Found ALAC codec!\n'; - return response; - } - response.infoLog += '☑No ALAC codec found!\n'; - return response; - } - - module.exports.details = details; - module.exports.plugin = plugin;