Remade plugin to convert user-selected codecs to FLAC

This commit is contained in:
aunefyren 2022-03-29 12:46:38 +02:00
parent ab47ab7e92
commit 87d3051cfc
2 changed files with 77 additions and 49 deletions

View file

@ -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: '<io> -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;

View file

@ -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: '<io> -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;