Hi @rednoah i need help to simplify the bitrate (now it dont work sometimes), the rest more or less i did it. And also i need help with the subs if there are more than 6 languages change everything for just multisub. I hope somebody can help, bests.
Reading the forum i simplified the audio codec + channels, THANKS TO THIS:
viewtopic.php?f=5&t=5285&start=25
BEFORE:
Code: Select all
{def audlang=media.audiolanguagelist.toString().replace("Spanish","ESP").replace("Japanese","JAP").replace("English","ENG") .replace("Croatian","CRO").replace("Czech","CHE").replace("Danish","DAN").replace("Dutch","HOL").replace("Estonian","EST") .replace("Finnish","FIN").replace("French","FRA").replace("German","GER").replace("Greek","GRI").replace("Hebrew","HEB") .replace("Hungarian","HUN").replace("Icelandic","ISL").replace("Indonesian","IND").replace("Italian","ITA").replace("Norwegian","NOR") .replace("Persian","PER").replace("Polish","POL").replace("Portuguese","POR").replace("Romanian","RUM").replace("Russian","RUS") .replace("Slovenian","SLO").replace("Serbian","SER").replace("Swedish","SUE").replace("Korean","KOR").replace("Norwegian","NOR") .replace("Turkish","TUR").replace("Vietnamese","VIT").replace("Latin","LAT").replace("Catalan","CAT").toUpperCase(); def audcodec=media.audiocodeclist.toString().replace("AAC LC-SBR","AAC").replace("AAC LC","AAC").replace("MPEG-1 Audio layer 3","MP3").toLowerCase();
AFTER:
Code: Select all
{
def codecList =
[
'MP3' : 'mp3',
'FLAC' : 'flac',
'PCM' : 'pcm',
'AAC LC' : 'aac',
'AAC LC SBR' : 'aac',
'AC 3' : 'ac3',
'AC 3 Dep' : 'eac3',
'E AC 3' : 'eac3',
'E AC 3 JOC' : 'eac3 Atmos',
'DTS' : 'dts',
'DTS 96 24' : 'dts',
'DTS ES' : 'dtses',
'DTS ES XXCH' : 'dtses',
'DTS XBR' : 'dts',
'DTS ES XBR' : 'dtses',
'DTS ES XXCH XBR' : 'dtses',
'DTS XLL' : 'dts',
'DTS ES XLL' : 'dtses',
'DTS ES XXCH XLL' : 'dtses',
'DTS XLL X' : 'dtsx',
'MLP FBA' : 'truehd',
'MLP FBA 16 ch' : 'truehd Atmos'
]
def filter = { [it.lang, it.codec, it.ch, it.objects] }
def audioStreams = []
def audioClean = { it.replaceAll(/[\p{Pd}\p{Space}]/, ' ').replaceAll(/\p{Space}{2,}/, ' ').slash(' ') }
def channelClean = { it.replaceAll(/Debug.+|Object\sBased\s?\/?|(\d+)?\sobjects\s\/\s|0.(?=\d.\d)|20/).replaceAll(/6.0/,'5.1').replaceAll(/8.0/,'7.1')}
def oneStream = { it.collect{ filter(it) }*.minus(null).unique().flatten().join(' ') }
def dString = { it.toDouble().toString() }
def toInt = { it.toInteger() }
audio.collect{ au ->
def codec = audioClean(any{ au['CodecID/Hint'] }{ au['Format'] })
def format_profile = any{ audioClean(au['Format_AdditionalFeatures'])}{}
def String ch = any{ channelClean(au.ChannelPositionsString2).tokenize('\\/')*.toDouble().toString().sum() }
{ channelClean(dString(au.ChannelsOriginal)) } { channelClean(dString(au.Channels)) }
def chFilter = (( ( (ac == 'AAC'||ac == 'MP3') && ch != '2.0') || ( (ac == 'AC3'||ac == 'EAC3'||ac == 'DTS'||ac == 'TrueHD'||ac == 'MLPFBA') && ch != '5.1' ) ) ? ch : null)
def combined = allOf{codec}{format_profile}.join(' ')
audioStreams << ['index' : codecList.findIndexOf {it.key == combined}, 'default' : au['default'][0].toBoolean(),
'codec' : codecList.get(combined, 'UNKNOWN_FORMAT'), 'combined' : combined, 'ch' : ch,
'bitrate' : any{toInt(au.BitRate)}{toInt(au.BitRate_Maximum)}{au.FrameRate.toDouble()}{null},
'objects' : any{'[' + au['NumberOfDynamicObjects'] + ' Objs]'}{null}, 'lang' : any{au.'LanguageString3'.upper().replaceAll("SPA","ESP")}{null} ]
return audioStreams
}
def allStreams = audioStreams.collect{ filter(it) }*.minus(null).unique()*.join(' ')
def preferredStream = oneStream(audioStreams.findAll{ it.index == audioStreams.index.max() })
def bestBitRate = oneStream(audioStreams.findAll{ it.bitrate == audioStreams.bitrate.max() })
def defaultStream = oneStream(audioStreams.findAll{it.default == true})
allStreams.join(' ').space(' ')
preferredStream.space(' ')
defaultStream.space(' ')
bestBitRate.space(' ')
[bestBitRate, preferredStream].unique().join(' ')
[defaultStream, bestBitRate].unique().join(' ')
}