From 100681320b09e764b447b00a22cb3ee53d15edf7 Mon Sep 17 00:00:00 2001 From: Fraxinas Date: Thu, 13 Nov 2008 13:01:17 +0100 Subject: [PATCH] improve audio language detection --- lib/python/Plugins/Extensions/DVDBurn/DVDTitle.py | 13 ++++----- lib/python/Plugins/Extensions/DVDBurn/Process.py | 2 +- .../Plugins/Extensions/DVDBurn/TitleCutter.py | 9 +++--- .../Plugins/Extensions/DVDBurn/TitleProperties.py | 34 ++++++++++++++++++---- 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/lib/python/Plugins/Extensions/DVDBurn/DVDTitle.py b/lib/python/Plugins/Extensions/DVDBurn/DVDTitle.py index 26f51e6..94e5c0f 100644 --- a/lib/python/Plugins/Extensions/DVDBurn/DVDTitle.py +++ b/lib/python/Plugins/Extensions/DVDBurn/DVDTitle.py @@ -136,7 +136,7 @@ class DVDTitle: self.estimatedDiskspace = usedsize self.length = accumulated_in / 90000 - def getChapterMarks(self): + def getChapterMarks(self, template="$h:$m:$s.$t"): timestamps = [ ] chapters = [ ] minutes = self.properties.autochapter.getValue() @@ -148,10 +148,9 @@ class DVDTitle: else: chapters = self.chaptermarks for p in chapters: - h = p / (90000 * 3600) - m = p % (90000 * 3600) / (90000 * 60) - s = p % (90000 * 60) / 90000 - ms = (p % 90000) / 90 - timestamps.append("%d:%02d:%02d.%03d" % (h, m, s, ms)) - print "timestamps:", timestamps + timestring = template.replace("$h", str(p / (90000 * 3600))) + timestring = timestring.replace("$m", ("%02d" % (p % (90000 * 3600) / (90000 * 60)))) + timestring = timestring.replace("$s", ("%02d" % (p % (90000 * 60) / 90000))) + timestring = timestring.replace("$t", ("%03d" % ((p % 90000) / 90))) + timestamps.append(timestring) return timestamps \ No newline at end of file diff --git a/lib/python/Plugins/Extensions/DVDBurn/Process.py b/lib/python/Plugins/Extensions/DVDBurn/Process.py index c1ba863..89ca90f 100644 --- a/lib/python/Plugins/Extensions/DVDBurn/Process.py +++ b/lib/python/Plugins/Extensions/DVDBurn/Process.py @@ -126,7 +126,7 @@ class DemuxTask(Task): self.currentPID = str(int(line.rstrip()[-6:].rsplit('0x',1)[-1],16)) def haveNewFile(self, file): - print "[DemuxTask] produced file:", file + print "[DemuxTask] produced file:", file, self.currentPID self.generated_files.append(file) if self.currentPID in self.relevantAudioPIDs or file.endswith("m2v"): self.mplex_streamfiles.append(file) diff --git a/lib/python/Plugins/Extensions/DVDBurn/TitleCutter.py b/lib/python/Plugins/Extensions/DVDBurn/TitleCutter.py index 5cbd5d5..210a3d5 100644 --- a/lib/python/Plugins/Extensions/DVDBurn/TitleCutter.py +++ b/lib/python/Plugins/Extensions/DVDBurn/TitleCutter.py @@ -26,19 +26,18 @@ class TitleCutter(CutListEditor): self.t.properties.audiotracks = ConfigSubList() for x in range(n): i = audio.getTrackInfo(x) - language = i.getLanguage() + DVB_lang = i.getLanguage() description = i.getDescription() pid = str(i.getPID()) if description == "MPEG": description = "MP2" - if not languageChoices.langdict.has_key(language): - language="nolang" - print "[audiotrack] pid:", pid, "description:", description, "language:", language + print "[audiotrack] pid:", pid, "description:", description, "language:", DVB_lang self.t.properties.audiotracks.append(ConfigSubsection()) self.t.properties.audiotracks[-1].active = ConfigYesNo(default = True) self.t.properties.audiotracks[-1].format = ConfigFixedText(description) - self.t.properties.audiotracks[-1].language = ConfigSelection(choices = languageChoices.choices, default=language) + self.t.properties.audiotracks[-1].language = ConfigSelection(choices = languageChoices.choices, default=languageChoices.getLanguage(DVB_lang)) self.t.properties.audiotracks[-1].pid = ConfigFixedText(pid) + self.t.properties.audiotracks[-1].DVB_lang = ConfigFixedText(DVB_lang) sAspect = service.info().getInfo(iServiceInformation.sAspect) if sAspect in ( 1, 2, 5, 6, 9, 0xA, 0xD, 0xE ): aspect = "4:3" diff --git a/lib/python/Plugins/Extensions/DVDBurn/TitleProperties.py b/lib/python/Plugins/Extensions/DVDBurn/TitleProperties.py index fdd331d..505dd09 100644 --- a/lib/python/Plugins/Extensions/DVDBurn/TitleProperties.py +++ b/lib/python/Plugins/Extensions/DVDBurn/TitleProperties.py @@ -71,11 +71,11 @@ class TitleProperties(Screen,ConfigListScreen): self.list.append(getConfigListEntry("DVD " + _("Title"), self.properties.menutitle)) self.list.append(getConfigListEntry("DVD " + _("Description"), self.properties.menusubtitle)) for audiotrack in self.properties.audiotracks: - pid = audiotrack.pid.getValue() - self.list.append(getConfigListEntry("burn audio track (%s)" % pid, audiotrack.active)) + DVB_aud = audiotrack.DVB_lang.getValue() or audiotrack.pid.getValue() + self.list.append(getConfigListEntry("burn audio track (%s)" % DVB_aud, audiotrack.active)) if audiotrack.active.getValue(): - self.list.append(getConfigListEntry("audio track (%s) format" % pid, audiotrack.format)) - self.list.append(getConfigListEntry("audio track (%s) language" % pid, audiotrack.language)) + self.list.append(getConfigListEntry("audio track (%s) format" % DVB_aud, audiotrack.format)) + self.list.append(getConfigListEntry("audio track (%s) language" % DVB_aud, audiotrack.language)) self.list.append(getConfigListEntry("DVD " + _("Aspect Ratio"), self.properties.aspect)) if self.properties.aspect.getValue() == "16:9": @@ -89,7 +89,7 @@ class TitleProperties(Screen,ConfigListScreen): if len(title.chaptermarks) == 0: self.list.append(getConfigListEntry(_("Auto chapter split every ? minutes (0=never)"), self.properties.autochapter)) infotext = _("Title") + ': ' + title.DVBname + "\n" + _("Description") + ': ' + title.DVBdescr + "\n" + _("Channel") + ': ' + title.DVBchannel - chaptermarks = title.getChapterMarks() + chaptermarks = title.getChapterMarks(template="$h:$m:$s") chapters_count = len(chaptermarks) if chapters_count >= 1: infotext += ', ' + str(chapters_count+1) + ' ' + _("chapters") + ' (' @@ -127,9 +127,9 @@ class TitleProperties(Screen,ConfigListScreen): def cancel(self): self.close() +from Tools.ISO639 import LanguageCodes class LanguageChoices(): def __init__(self): - from Tools.ISO639 import LanguageCodes from Components.Language import language as syslanguage syslang = syslanguage.getLanguage()[:2] self.langdict = { } @@ -146,4 +146,26 @@ class LanguageChoices(): self.choices.insert(1,(syslang, self.langdict[syslang])) self.choices.insert(2,("en", self.langdict["en"])) + def getLanguage(self, DVB_lang): + DVB_lang = DVB_lang.lower() + isocodes = [ ] + stripwords = ["stereo", "audio", "description", "2ch"] + for word in stripwords: + DVB_lang = DVB_lang.replace(word,"").strip() + for key, val in LanguageCodes.iteritems(): + if DVB_lang.find(key.lower()) == 0: + if len(key) == 2: + return key + else: + DVB_lang = (LanguageCodes[key])[0] + elif DVB_lang.find(val[0].lower()) > -1: + if len(key) == 2: + return key + else: + DVB_lang = (LanguageCodes[key])[0] + for key, val in self.langdict.iteritems(): + if val == DVB_lang: + return key + return "nolang" + languageChoices = LanguageChoices() \ No newline at end of file -- 2.7.4