@ -5,14 +5,34 @@ function details() {
Name : "Migz-Clean title metadata" ,
Type : "Video" ,
Operation : "Clean" ,
Description : ` This plugin removes title metadata from video/audio/subtitles, if it exists. \n \n ` ,
Version : "1. 1 0",
Description : ` This plugin removes title metadata from video/audio/subtitles, if it exists. Video checking is mandatory, audio and subtitles are optional. \n \n ` ,
Version : "1. 2 0",
Link : "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_MC93_Migz2CleanTitle.js" ,
Tags : 'pre-processing,ffmpeg' ,
Tags : 'pre-processing,ffmpeg,configurable' ,
Inputs : [
{
name : 'clean_audio' ,
tooltip : ` Specify if audio titles should be checked & cleaned. Optional.
\ \ nExample : \ \ n
true
\ \ nExample : \ \ n
false `
} ,
{
name : 'clean_subtitles' ,
tooltip : ` Specify if subtitle titles should be checked & cleaned. Optional.
\ \ nExample : \ \ n
true
\ \ nExample : \ \ n
false `
} ,
]
}
}
function plugin ( file ) {
function plugin ( file , librarySettings , inputs ) {
var response = {
processFile : false ,
preset : '' ,
@ -23,7 +43,7 @@ function plugin(file) {
infoLog : '' ,
}
var ffmpegCommandInsert = ''
var videoIdx = 0
var audioIdx = 0
@ -36,47 +56,43 @@ function plugin(file) {
response . processFile = false ;
return response
}
try {
if ( typeof file . meta . Title != 'undefined' ) {
if ( typeof file . meta . Title != 'undefined' ) try {
ffmpegCommandInsert += ` -metadata title="" `
response . infoLog += "1"
convert = true
}
} catch ( err ) { }
for ( var i = 0 ; i < file . ffProbeData . streams . length ; i ++ ) {
} catch ( err ) { }
for ( var i = 0 ; i < file . ffProbeData . streams . length ; i ++ ) try {
if ( file . ffProbeData . streams [ i ] . codec _type . toLowerCase ( ) == "video" ) {
try {
if ( typeof file . ffProbeData . streams [ i ] . tags . title != 'undefined' ) {
ffmpegCommandInsert += ` -metadata:s:v: ${ videoIdx } title="" `
convert = true
}
} catch ( err ) { }
if ( typeof file . ffProbeData . streams [ i ] . tags . title != 'undefined' ) {
response . infoLog += ` ☒Video stream title is not empty, most likely junk metadata. Removing title from stream ${ i } \n `
ffmpegCommandInsert += ` -metadata:s:v: ${ videoIdx } title="" `
convert = true
}
videoIdx ++
}
if ( file . ffProbeData . streams [ i ] . codec _type . toLowerCase ( ) == "audio" ) {
try {
if ( typeof file . ffProbeData . streams [ i ] . tags . title != 'undefined' ) {
ffmpegCommandInsert += ` -metadata:s:a: ${ audioIdx } title="" `
convert = true
}
} catch ( err ) { }
if ( file . ffProbeData . streams [ i ] . codec _type . toLowerCase ( ) == "audio" && inputs . clean _audio . toLowerCase ( ) == "true" ) {
if ( file . ffProbeData . streams [ i ] . tags . title . split ( '.' ) . length - 1 > 3 ) {
response . infoLog += ` ☒More then 3 full stops detected in subtitle title, likely to be junk metadata. Removing title from stream ${ i } \n `
ffmpegCommandInsert += ` -metadata:s:a: ${ audioIdx } title="" `
convert = true
}
audioIdx ++
}
if ( file . ffProbeData . streams [ i ] . codec _type . toLowerCase ( ) == "subtitle" ) {
try {
if ( typeof file . ffProbeData . streams [ i ] . tags . title != 'undefined' ) {
ffmpegCommandInsert += ` -metadata:s:s: ${ subtitleIdx } title="" `
convert = true
}
} catch ( err ) { }
if ( file . ffProbeData . streams [ i ] . codec _type . toLowerCase ( ) == "subtitle" && inputs . clean _subtitles . toLowerCase ( ) == "true" ) {
if ( file . ffProbeData . streams [ i ] . tags . title . split ( '.' ) . length - 1 > 3 ) {
response . infoLog += ` ☒More then 3 full stops detected in subtitle title, likely to be junk metadata. Removing title from stream ${ i } \n `
ffmpegCommandInsert += ` -metadata:s:s: ${ subtitleIdx } title="" `
convert = true
}
subtitleIdx ++
}
}
if ( convert == true ) {
response . infoLog += "☒File has title metadata \n"
} catch ( err ) { }
if ( convert == true ) {
response . infoLog += "☒File has title metadata . Removing \n"
response . preset = ` , ${ ffmpegCommandInsert } -c copy `
response . reQueueAfter = true ;
response . processFile = true ;
@ -87,4 +103,4 @@ function plugin(file) {
}
module . exports . details = details ;
module . exports . plugin = plugin ;
module . exports . plugin = plugin ;