def __init__(self, parent): self.languageui = Gtk.Builder() self.languageui.add_from_file("transmageddon-language-chooser.ui") langscroll = self.languageui.get_object("langscroll") cancelbutton = self.languageui.get_object("cancelbutton") selectbutton = self.languageui.get_object("selectbutton") self.languageui.connect_signals(self) # Initialize User Interface self.langcode=None # this will hold the selected language value store = Gtk.ListStore(str) self.langcodeList=GstTag.tag_get_language_codes() langcontents = [] for item in self.langcodeList: langcontents.append([GstTag.tag_get_language_name(item)]) for act in langcontents: store.append([act[0]]) self.langview = Gtk.TreeView(store) self.langview.set_reorderable(False) self.langview.set_headers_visible(False) langscroll.add(self.langview) self.create_columns(self.langview) self.languagewindow = self.languageui.get_object("languageui") self.languagewindow.set_modal(True) self.languagewindow.set_transient_for(parent) self.languagewindow.show_all()
def __init__(self, parent): self.languageui = Gtk.Builder() self.languageui.add_from_file("transmageddon-language-chooser.ui") langscroll = self.languageui.get_object("langscroll") cancelbutton = self.languageui.get_object("cancelbutton") selectbutton = self.languageui.get_object("selectbutton") self.languageui.connect_signals(self) # Initialize User Interface self.langcode = None # this will hold the selected language value store = Gtk.ListStore(str) self.langcodeList = GstTag.tag_get_language_codes() langcontents = [] for item in self.langcodeList: langcontents.append([GstTag.tag_get_language_name(item)]) for act in langcontents: store.append([act[0]]) self.langview = Gtk.TreeView(store) self.langview.set_reorderable(False) self.langview.set_headers_visible(False) langscroll.add(self.langview) self.create_columns(self.langview) self.languagewindow = self.languageui.get_object("languageui") self.languagewindow.set_modal(True) self.languagewindow.set_transient_for(parent) self.languagewindow.show_all()
def _parse_tags(self, trackname): count = self._element.get_property('n-%s' % trackname) for index in range(count): tags = self._element.emit('get-%s-tags' % trackname, index) if tags is not None: for tagidx in range(tags.n_tags()): name = tags.nth_tag_name(tagidx) if name == 'language-code': code = tags.get_string(name)[1] lang = GstTag.tag_get_language_name(code) yield StreamTrack(index, lang or code) break
def _update_languages_menu(self): """Update the audio language selection menu.""" menu = self.get_menubar_section("audio-languages-placeholder") menu.remove_all() tracks = self.player.get_audio_infos() for i, track in enumerate(tracks): title = track.title or _("Track {:d}").format(i + 1) lang = None if track.language_code is not None: lang = GstTag.tag_get_language_name(track.language_code) if lang is None: lang = track.language_name name = title if lang is None else "{} - [{}]".format( title, lang.title()) action = "win.set-audio-language::{:d}".format(i) menu.append(name, action) if i == self.player.audio_track: action = self.get_action("set-audio-language") action.set_state(str(i))
def __init__(self, parent, DVDDEVICE): self.dvdpickui = Gtk.Builder() self.dvdpickui.add_from_file("transmageddon-dvdtrack-chooser.ui") dvdscroll = self.dvdpickui.get_object("dvdscroll") cancelbutton = self.dvdpickui.get_object("cancelbutton") selectbutton = self.dvdpickui.get_object("selectbutton") self.cachedir=GLib.get_user_cache_dir()+"/transmageddon" CheckDir = os.path.isdir(self.cachedir) if CheckDir == (False): os.mkdir(self.cachedir) sys.path.append(self.cachedir) self.dvdpickui.connect_signals(self) # Initialize User Interface self.dvdtrack=None # this will hold the selected DVD track value self.isdvd=False self.dvdtitle=False self.dvdpath=DVDDEVICE store = Gtk.ListStore(str, int) # use lsdvd tool to get DVD track information self.Title = False self.Tracks = False self.dvdread(self.dvdpath) scounter=0 longesttime = 0 self.listoftracks=[] languages=[] while scounter < len(self.Tracks): tcounter=0 language="" langcodes=[] self.ix=int(self.Tracks[scounter]['ix']) while tcounter < len(self.Tracks[scounter]['audio']): if self.Tracks[scounter]['audio']: if GstTag.tag_check_language_code(self.Tracks[scounter]['audio'][tcounter]['langcode']): if self.Tracks[scounter]['audio'][tcounter]['langcode'] not in langcodes: langcodes.append(self.Tracks[scounter]['audio'][tcounter]['langcode']) language=language + GstTag.tag_get_language_name(self.Tracks[scounter]['audio'][tcounter]['langcode']) + ", " tcounter=tcounter+1 languages.append(language) # create a string to push into the listview self.listoftracks.append(_("Title:") + " " + str(scounter) + ", " + _("Languages:") + " " + languages[scounter] + " " + _("Length:") + " " + str(round((self.Tracks[scounter]['length']/60), 2)) + " " + _("Minutes")) scounter=scounter+1 x=1 for act in self.listoftracks: store.append([act,x]) x=x+1 self.dvdtrackview = Gtk.TreeView(store) self.dvdtrackview.set_reorderable(False) self.dvdtrackview.set_headers_visible(False) dvdscroll.add(self.dvdtrackview) self.create_columns(self.dvdtrackview) self.dvdwindow = self.dvdpickui.get_object("dvdpickui") self.dvdwindow.set_modal(True) self.dvdwindow.set_transient_for(parent) self.dvdwindow.show_all()
def onEos(self, pElement, pMessage): super().onEos(pElement, pMessage) if self.sOperation == 'replay-gain': self.nOperation = 1 self.sOperation = 'encode' for sKey in ['track-number', 'track-count', 'album-disc-number', 'album-disc-count', 'date', 'image']: if sKey in self.dTags: if self.dTags[sKey]: if sKey == 'track-number': self.dTags[sKey] = GObject.Value(GObject.TYPE_UINT, int(self.dTags[sKey])) elif sKey == 'track-count': self.dTags[sKey] = GObject.Value(GObject.TYPE_UINT, int(self.dTags[sKey])) elif sKey == 'album-disc-number': self.dTags[sKey] = GObject.Value(GObject.TYPE_UINT, int(self.dTags[sKey])) elif sKey == 'album-disc-count': self.dTags[sKey] = GObject.Value(GObject.TYPE_UINT, int(self.dTags[sKey])) elif sKey == 'date': self.dTags['extended-comment'] = 'DATE=' + self.dTags[sKey] self.dTags[sKey] = GLib.Date.new_dmy(1, 1, int(self.dTags[sKey])) elif sKey == 'image': with open(self.dTags[sKey], 'rb') as pFile: self.dTags[sKey] = pFile.read() self.dTags[sKey] = GstTag.tag_image_data_to_image_sample(self.dTags[sKey], GstTag.TagImageType.FRONT_COVER) else: del self.dTags[sKey] self.dTags['replaygain-reference-level'] = 89.0 if self.sEncoder == 'flac': self.init('filesrc location="' + escape(self.sPathIn) + '" ! decodebin ! audioconvert ! audio/x-raw, channels=(int)' + self.sChannels + ' ! flacenc name=enc quality=8 ! filesink location="' + escape(self.sPathTmp) + '"', self.dTags) self.play() else: self.pProc = subprocess.Popen('neroAacEnc -if "' + escape(self.sPathIn) + '" -of "' + escape(self.sPathTmp) + '" -q 1.0 ', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, universal_newlines = True) self.sOperation = 'nero-encode' elif self.sOperation == 'encode' or self.sOperation == 'nero-tag': if self.sOperation == 'nero-tag': shutil.move(self.sPathTmp.replace('m4a', 'tmp.m4a'), self.sPathTmp) pMp4 = MP4(self.sPathTmp) pMp4['----:com.apple.iTunes:replaygain_track_gain'] = str(round(self.dTags['replaygain-track-gain'], 2)).encode() pMp4['----:com.apple.iTunes:replaygain_track_peak'] = str(round(self.dTags['replaygain-track-peak'], 6)).encode() pMp4.save() shutil.move(self.sPathTmp, self.sPathOut) self.nState = GstState.DONE GLib.idle_add(self.pCallback, self.pParam)
def __init__(self, parent, DVDDEVICE): self.dvdpickui = Gtk.Builder() self.dvdpickui.add_from_file("transmageddon-dvdtrack-chooser.ui") dvdscroll = self.dvdpickui.get_object("dvdscroll") cancelbutton = self.dvdpickui.get_object("cancelbutton") selectbutton = self.dvdpickui.get_object("selectbutton") self.cachedir = GLib.get_user_cache_dir() + "/transmageddon" CheckDir = os.path.isdir(self.cachedir) if CheckDir == (False): os.mkdir(self.cachedir) sys.path.append(self.cachedir) self.dvdpickui.connect_signals(self) # Initialize User Interface self.dvdtrack = None # this will hold the selected DVD track value self.isdvd = False self.dvdtitle = False self.dvdpath = DVDDEVICE store = Gtk.ListStore(str, int) # use lsdvd tool to get DVD track information self.Title = False self.Tracks = False self.dvdread(self.dvdpath) scounter = 0 longesttime = 0 self.listoftracks = [] languages = [] while scounter < len(self.Tracks): tcounter = 0 language = "" langcodes = [] self.ix = int(self.Tracks[scounter]['ix']) while tcounter < len(self.Tracks[scounter]['audio']): if self.Tracks[scounter]['audio']: if GstTag.tag_check_language_code( self.Tracks[scounter]['audio'][tcounter] ['langcode']): if self.Tracks[scounter]['audio'][tcounter][ 'langcode'] not in langcodes: langcodes.append(self.Tracks[scounter]['audio'] [tcounter]['langcode']) language = language + GstTag.tag_get_language_name( self.Tracks[scounter]['audio'][tcounter] ['langcode']) + ", " tcounter = tcounter + 1 languages.append(language) # create a string to push into the listview minutes = round((self.Tracks[scounter]['length'] / 60), 2) self.listoftracks.append( _("Title:") + " " + str(scounter) + ", " + _("Languages:") + " " + languages[scounter] + " " + _("Length:") + " " + str(minutes) + " " + gettext.ngettext("Minute", "Minutes", minutes)) scounter = scounter + 1 x = 1 for act in self.listoftracks: store.append([act, x]) x = x + 1 self.dvdtrackview = Gtk.TreeView(store) self.dvdtrackview.set_reorderable(False) self.dvdtrackview.set_headers_visible(False) dvdscroll.add(self.dvdtrackview) self.create_columns(self.dvdtrackview) self.dvdwindow = self.dvdpickui.get_object("dvdpickui") self.dvdwindow.set_modal(True) self.dvdwindow.set_transient_for(parent) self.dvdwindow.show_all()