/** AUDIO (ejecución) **/ def bloqueAudio='' def audiosMap = [:] for (aud in audio) { def shortDesc = aud.Language_String3 !=null ? aud.Language_String3 : aud.Title!=null ? (aud.Title=~/(?i).+spa.+/?'spa': aud.Title.substring(0,3).toLowerCase()) : 'und' if (aud.Title!=null && aud.Title=~/(?i).*latin.*/) shortDesc='lat' 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; i