@ -1,18 +1,18 @@
function details ( ) {
return {
const details = ( ) => ( {
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' ,
+ '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" ,
name : 'codecs' ,
type : 'string' ,
defaultValue : 'alac,pcm_s16be,pcm_s16le,pcm_s24be,pcm_s24le,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le' ,
inputUI : {
@ -28,22 +28,14 @@ function details() {
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 ) {
// eslint-disable-next-line no-unused-vars
const 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' ,
@ -54,24 +46,34 @@ function details() {
infoLog : '' ,
} ;
if ( inputs . codecs === '' || inputs . codecs === undefined ) {
response . infoLog += '☒No codecs selected!\n' ;
return response ;
}
// eslint-disable-next-line no-param-reassign
inputs . codecs = inputs . codecs . split ( ',' ) ;
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 ( ) ) {
for ( let i = 0 ; i < file . ffProbeData . streams . length ; i += 1 ) {
for ( let j = 0 ; j < inputs . codecs . length ; j += 1 ) {
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' ;
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 ;
module . exports . details = details ;
module . exports . plugin = plugin ;