diff --git a/MaNGranA_Pelis.groovy b/MaNGranA_Pelis.groovy index 0c3f8c9..f5ed23d 100755 --- a/MaNGranA_Pelis.groovy +++ b/MaNGranA_Pelis.groovy @@ -1,7 +1,7 @@ //by @xeviff /* HARDCODED */ def skipAudioCheck = true -def relocation = false +def relocation = true /*************/ /** RUTAS **/ def ubuntu_desktop=false @@ -135,88 +135,64 @@ try { //empieza el script /* RESULTADO MEDIAINFO */ def bloqueCalidadVideo = calidad + formato_distribucion def bloqueDescVideo = myBitrate + profundidadColor + myFps + hdr_info - - def bloqueVideo = ' ['+codecVideo+' '+bloqueCalidadVideo+'] ['+bloqueDescVideo+']' + def bloqueVideo = ' ['+codecVideo+' '+bloqueCalidadVideo+' '+bloqueDescVideo+']' - /** Audio (ejecución) **/ - def catalanAudios=[] - def spanishAudios=[] - def englishAudios=[] - def otherAudios=[] - def audioDeclUndefined=false - for (item in audio) { - def idioma - try { - idioma = item.Language_String - if (idioma==null) otherAudios.add("audio_no_def") //throw new Exception("[idioma_audio_no_definido0]") - if ("Catalan"==idioma) catalanAudios.add(item) - else if (idioma=~/(?i)(Spanish|Espa.ol)/) spanishAudios.add(item) - else if ("English"==idioma) englishAudios.add(item) - else if ("Undefined"==idioma) audioDeclUndefined=true - else otherAudios.add(item) - } catch (err) { - if (idioma==null) { - try { //si tampoco tiene item.Title - def audioTitle=item.Title - if (audioTitle!=null) { - if (any{audioTitle}{0} =~ /(?i)\bcat\b/) - catalanAudios.add(item) - else if (any{audioTitle}{0} =~ /(?i)\bcast\b|\bspa\b/) - spanishAudios.add(item) - else if (any{audioTitle}{0} =~ /(?i)\bingl.es\b|\beng\b/) - englishAudios.add(item) - else otherAudios.add(item) - } - } catch (ex) {} - } else if (!skipAudioCheck) throw err + /** AUDIO (ejecución) **/ + def bloqueAudio='' + def audiosMap = [:] + for (aud in audio) { + def shortDesc = aud.Language_String3 + audiosMap[shortDesc] = audiosMap[shortDesc] ?: [:] + audiosMap[shortDesc][aud.Format] = audiosMap[shortDesc][aud.Format] ?: [] + audiosMap[shortDesc][aud.Format] << aud + } + def groupedAudiosMap = [:] + for (audioElms in audiosMap) { + def k = audioElms.key + def v = audioElms.value + if (!k.contains('+') && countAudiosInMap(v)>1) k += '+' + def mQ = getMaxQuality(v) + def mQstr = (mQ==null || mQ.isEmpty()) ? 'und' : printAudio(mQ) + if (groupedAudiosMap.containsKey(mQstr)) groupedAudiosMap[mQstr].add(k) + else groupedAudiosMap[mQstr] = [k] + } + audiosMap=null + def temp='' + for (audioGroup in groupedAudiosMap) { + def k = audioGroup.key + def v = audioGroup.value + def gS = v.size() + def str='' + for (int i=0; i1) k += '+' def mQ = getMaxQuality2(v) - if (v.size()>1 && !k.contains('+')) k += '+' - def mQstr = printAudio2(mQ) + def mQstr = (mQ==null || mQ.isEmpty()) ? 'und' : printAudio2(mQ) if (groupedAudiosMap.containsKey(mQstr)) groupedAudiosMap[mQstr].add(k) else groupedAudiosMap[mQstr] = [k] } + audiosMap=null def temp='' for (audioGroup in groupedAudiosMap) { @@ -183,30 +177,25 @@ def getMaxQuality2 (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)){ - return getBestChannelFromList2(mapAudioIndexedByFormat[cFormat]) + def difChannelsList = mapAudioIndexedByFormat[cFormat] + return difChannelsList.size()==1 ? difChannelsList[0] : getBestChannelFromList2(difChannelsList) } } + return null } def printAudio2 (audio2Print) { - def formato_audio = audio2Print.Format_Commercial.replace("Dolby Digital":"Dolby").replace(" Plus","+") - .replace("DTS-HD Master Audio","DTS-MA").replace("DTS-HD High Resolution Audio","DTS-HD-H") - .replace("MPEG Audio","MPEG").replace("HE-AAC","AAC+") - .replace(" with Dolby Atmos", "Atmos").replace("TrueHD", "HD") + def formato_audio = audio2Print.Format_Commercial.replaceAll(/Dolby Digital/, 'Dolby') + .replaceAll(/ Plus/, '+') + .replaceAll(/DTS-HD Master Audio/, 'DTS-MA') + .replaceAll(/DTS-HD High Resolution Audio/, 'DTS-HD-H') + .replaceAll(/MPEG Audio/, 'MPEG') + .replaceAll(/HE-AAC/, 'AAC+') + .replaceAll(/ with Dolby Atmos/, 'Atmos') + .replaceAll(/TrueHD/, 'HD') def canales = audio2Print.Channels.replace(2:'2.0', 6:'5.1', 8:'7.1') return formato_audio + ' ' + canales } - - -def getAudiosFromListByFormat2 (format, listAudios) { - def result=[] - for (singleAudio in listAudios) { - if (singleAudio.Format==format) { - result.add(singleAudio) - } - } - return result -} def getBestChannelFromList2 (audiosFormatFound) { def bestChanel def currentValue=0 @@ -218,7 +207,11 @@ def getBestChannelFromList2 (audiosFormatFound) { } return bestChanel } - +def countAudiosInMap(audMap){ + int count=0 + for (aud in audMap) count += aud.value.size() + return count +}