1
0
Fork 0
filebot-presets/split/functions.groovy

88 lines
3.0 KiB
Groovy
Executable File

/********************************************************/
/********************************************************/
/************** FUNCIONES *******************************/
/********************************************************/
/********************************************************/
/********* AUDIO *****************/
def removeLastComa(txt) {
return txt.substring(0, txt.size()-2)
}
def getMaxQuality (mapAudioIndexedByFormat) {
def formatSet = ["PCM", "MLP FBA" ,"DTS", "FLAC", "AC-3", "E-AC-3", "EAC3", "AAC", "MPEG Audio", "MP3"]
for (cFormat in formatSet) {
if (mapAudioIndexedByFormat.containsKey(cFormat)){
def difChannelsList = mapAudioIndexedByFormat[cFormat]
return difChannelsList.size()==1 ? difChannelsList[0] : getBestChannelFromList(difChannelsList)
}
}
return null
}
def printAudio (audio2Print) {
def format = audio2Print.Format
def fCom = audio2Print.Format_Commercial
switch (format) {
case "AC-3" -> fCom = "DD"
case "E-AC-3" -> fCom = "DD+"
case "MPEG Audio" -> fCom = "MPEG"
case "DTS" -> { if (fCom.contains("Master Audio")) fCom="DTS_MA"
else if (fCom.contains("DTS-HD High Resolution Audio")) fCom="DTS_HRA"
else if (fCom.contains("DTS-ES")) fCom="DTS-ES"
}
case "MLP FBA" -> {def tmp = "D_HD"; if (fCom.contains("Atmos")) tmp+="_Atmos"; fCom = tmp}
}
def canales = audio2Print.Channels.replace(2:'2.0', 6:'5.1', 7:'6.1', 8:'7.1')
return fCom + ' ' + canales
}
def getBestChannelFromList (audiosFormatFound) {
def bestChanel
def currentValue=0
for (myAudio2 in audiosFormatFound) {
if (myAudio2.Channels>currentValue) {
currentValue = myAudio2.Channels
bestChanel = myAudio2
}
}
return bestChanel
}
def countAudiosInMap(audMap){
int count=0
for (aud in audMap) count += aud.value.size()
return count
}
/********* SUBS ***************/
def handleSub(sub, capturedSubs) {
def lang = sub.Language_String3 !=null ? sub.Language_String3
: (sub.Title=~/(?i).+spa.+/?'spa': sub.Title.substring(0,3).toLowerCase())
if (sub.Title!=null && sub.Title=~/(?i).*latin.*/) lang='lat'
def forced = sub.title!=null ? sub.title.toLowerCase().contains("forzado") : false
if (!capturedSubs.containsKey(lang)) {
capturedSubs[lang] = lang+(forced?' F':'')
} else {
def existing=capturedSubs[lang]
def newTxt=''+existing
if (!existing.contains('+')) newTxt += '+'
if (forced && !existing.contains('F')) newTxt += ' F'
capturedSubs[lang]=newTxt
}
}
/***********/
/* otras funciones */
def getInicial () {
def nomIngles = localize.English.n
if (nomIngles.startsWith("The ") || nomIngles.startsWith("A "))
nomIngles = nomIngles.replaceFirst("The ",'').replaceFirst("A ",'')
def ini0 = nomIngles[0].toUpperCase()
def iniClear = nomIngles.size()>1 ? ini0.replaceAll(/[¡¿'#*\(]/,nomIngles[1].toUpperCase()) : ini0
def inicial = iniClear.replaceAll(/[0-9]/,'#')+'/'
return inicial
}
def sanityCheck(newId) {
def oldId = fn.find(/\{tmdb-\d+\}/)?.find(/\d+/)
return oldId!=null ? oldId == newId.toString() : true
}
/***********/