Exemple #1
0
    def __init__(self):
        self.killed = False
        self.showOutput = False

        self.pp = eConsoleAppContainer()
        self.appClosed_conn = eConnectCallback(self.pp.appClosed, self._finishCB)
        self.stderrAvail_conn = eConnectCallback(self.pp.stderrAvail, self._outputCB)
Exemple #2
0
    def __init__(self):
        self.killed = False
        self.showOutput = False

        self.pp = eConsoleAppContainer()
        self.appClosed_conn = eConnectCallback(self.pp.appClosed,
                                               self._finishCB)
        self.stderrAvail_conn = eConnectCallback(self.pp.stderrAvail,
                                                 self._outputCB)
Exemple #3
0
 def __init__(self, name, url, destDir, filename=None, quiet=False, headers={}):
     if filename is None:
         filename = url2name(url)
     if not filename.endswith(VIDEO_EXTENSIONS):
         filename = os.path.splitext(filename)[0] +'.mp4'
     Download.__init__(self, name, url, destDir, filename, quiet)
     self.pp = eConsoleAppContainer()
     #self.pp.dataAvail.append(self.__startCB)
     self.appClosed_conn = eConnectCallback(self.pp.appClosed, self.__finishCB)
     self.stderrAvail_conn = eConnectCallback(self.pp.stderrAvail, self.__outputCB)
Exemple #4
0
    def __init__(self, session, addon, lst_items):
        self.addon = addon
        contentHandler = VideoAddonContentHandler(session, self, addon.provider)
        BaseContentScreen.__init__(self, session, contentHandler, lst_items)

        # include DownloadList
        DownloadList.__init__(self)

        self.updateGUITimer = eTimer()
        self.updateGUITimer_conn = eConnectCallback(self.updateGUITimer.timeout, self.updateAddonGUI)
        self.onUpdateGUI.append(self.changeAddon)
        self.onClose.append(self.__onClose)
        self.picload = ePicLoad()
        
        #self.picload.PictureData.get().append(self.showCoverCallback)
        # OE2.0 - OE2.5 compatibility
        self.picload_conn = eConnectCallback(self.picload.PictureData, self.showCoverCallback)
        self.procPosterImage = False
        self.posterChanged = False
        self.lastPoster = "none"
        self.posterStartProc = datetime.datetime.now()

        #settigns
        self.showImageEnabled = config.plugins.archivCZSK.downloadPoster.getValue()
        self.maxSavedImages = int(config.plugins.archivCZSK.posterImageMax.getValue())
        self.imagePosterDir = os.path.join(config.plugins.archivCZSK.posterPath.getValue(),'archivczsk_poster')
        self.noImage = os.path.join(settings.PLUGIN_PATH, 'gui','icon', 'no_movie_image.png')

        # include TipList
        TipBar.__init__(self, [self.CSFD_TIP, self.CONTEXT_TIP, self.INFO_TIP], startOnShown=True)

        self["key_red"] = Label("")
        self["key_green"] = Label(_("Downloads"))
        self["key_yellow"] = Label(_("Shortcuts"))
        self["key_blue"] = Label(_("Settings"))
        self["movie_poster_image"] = Pixmap()
        self["movie_rating"] = Label("")
        self["movie_duration"] = Label("")
        self["movie_plot"] = Label("")
        
        self["actions"] = ActionMap(["archivCZSKActions"],
            {
                "ok": self.ok,
                "up": self.up,
                "down": self.down,
                "cancel": self.cancel,
                "green" : self.openAddonDownloads,
                "blue": self.openAddonSettings,
                "yellow": self.openAddonShortcuts,
                "info": self.openInfo,
                "menu": self.menu,
                "csfd": self.openCSFD
            }, -2)
        #self.onUpdateGUI.append(self.updateFullTitle)
        self.onLayoutFinish.append(self.setWindowTitle)
Exemple #5
0
 def __init__(self, name, url, destDir, filename=None, live=False, quiet=False, realtime=True):
     if not filename:
         filename = name + '.flv'
         filename = sanitizeFilename(filename)
     Download.__init__(self, name, url, destDir, filename, quiet)
     self.pp = eConsoleAppContainer()
     #self.pp.dataAvail.append(self.__startCB)
     self.appClosed_conn = eConnectCallback(self.pp.appClosed, self.__finishCB)
     self.stderrAvail_conn = eConnectCallback(self.pp.stderrAvail, self.__outputCB)
     self.live = live
     self.realtime = realtime
Exemple #6
0
 def __init__(self, name, url, destDir, filename=None, quiet=False, headers={}):
     if filename is None:
         path = urlparse.urlparse(url).path
         filename = os.path.basename(path)
     Download.__init__(self, name, url, destDir, filename, quiet)
     self.pp = eConsoleAppContainer()
     #self.pp.dataAvail.append(self.__startCB)
     self.appClosed_conn = eConnectCallback(self.pp.appClosed, self.__finishCB)
     self.stderrAvail_conn = eConnectCallback(self.pp.stderrAvail, self.__outputCB)
     if len(headers) > 0:
         self.headers = '--header ' + ' --header '.join([("'" + key + ': ' + value + "'") for key, value in headers.iteritems()])
     else: self.headers = ""
Exemple #7
0
 def __init__(self, processPath):
     self.toRead = None
     self.pPayload = None
     self.data = ""
     self.__stopping = False
     self.processPath = processPath
     self.appContainer = eConsoleAppContainer()
     self.stdoutAvail_conn = eConnectCallback(self.appContainer.stdoutAvail,
                                              self.dataOutCB)
     self.stderrAvail_conn = eConnectCallback(self.appContainer.stderrAvail,
                                              self.dataErrCB)
     self.appContainer_conn = eConnectCallback(self.appContainer.appClosed,
                                               self.finishedCB)
Exemple #8
0
 def __init__(self, poster_widget, poster_processing, no_image_path):
     self.poster_widget = poster_widget
     self.poster_processing = poster_processing
     self.poster_processing.got_image_callback = self._got_image_data
     self.no_image_path = no_image_path
     self._decoding_url = None
     self._decoding_path = None
     self.last_decoded_url = None
     self.last_selected_url = None
     self.picload = ePicLoad()
     self.picload_conn = eConnectCallback(self.picload.PictureData, self._got_picture_data)
     self.retry_timer = eTimer()
     self.retry_timer_conn = eConnectCallback(self.retry_timer.timeout, self._decode_current_image)
     self._max_retry_times = 3
     self._retry_times = 0
Exemple #9
0
 def __init__(self, session, provider):
     contentHandler = VideoAddonManagementScreenContentHandler(session, self, provider)
     addonItems = provider.get_content({'category_addons':'all_addons', 'filter_enabled':False})
     BaseContentScreen.__init__(self, session, contentHandler, addonItems)
     self.skinName = "ArchivCZSKContentScreen"
     self["menu"].style = "management"
     self.updateGUITimer = eTimer()
     self.updateGUITimer_conn = eConnectCallback(self.updateGUITimer.timeout, self.updateAddonGUI)
     self.onUpdateGUI.append(self.changeAddon)
     self.onClose.append(self.__onClose)
     self["image"] = Pixmap()
     self["title"] = Label("")
     self["author"] = Label("")
     self["version"] = Label("")
     self["about"] = Label("")
     self["key_red"] = Label("")
     self["key_green"] = Label("")
     self["key_yellow"] = Label("")
     self["key_blue"] = Label("")
     self["actions"] = ActionMap(["archivCZSKActions"],
          {
                 "ok": self.menu,
                 "cancel": self.close,
                 "up": self.up,
                 "down": self.down,
                 "menu" : self.menu
          }, -2)
     self.onLayoutFinish.append(self.updateAddonGUI)
Exemple #10
0
    def play_item(self, item, mode='play', *args, **kwargs):
        def startWatchingTimer():
            self.cmdTimer.start(timerPeriod)

        def timerEvent():
            self.cmdStats(item, 'watching')

        def end_play():
            try:
                self.cmdTimer.stop()
                del self.cmdTimer
                del self.cmdTimer_conn
            except:
                log.logDebug("Release cmd timer failed.\n%s" %
                             traceback.format_exc())
            self.content_screen.workingFinished()
            self.content_provider.resume()
            self.cmdStats(item, 'end')

        timerPeriod = 10 * 60 * 1000  #10min
        self.cmdTimer = eTimer()
        self.cmdTimer_conn = eConnectCallback(self.cmdTimer.timeout,
                                              timerEvent)

        self.content_screen.workingStarted()
        self.content_provider.pause()
        self.content_provider.play(self.session, item, mode, end_play)

        # send command
        self.cmdStats(item, 'play', successCB=startWatchingTimer)
Exemple #11
0
 def __init__(self, session):
     self.skin = """
         <screen position="center,center" size="1280,720" backgroundColor="#002C2C39">
             <widget name="myPic" position="center,center" size="1000,620" zPosition="11" alphatest="on" />
         </screen>"""
     self.picPath = os.path.join(IMAGE_PATH, 'icon.png')
     whatWidth = getDesktop(0).size().width()
     if whatWidth >= 3000:
         self.skin = """
             <screen position="center,center" size="3840,2160" backgroundColor="#002C2C39">
                 <widget name="myPic" position="center,center" size="3000,1860" zPosition="11" alphatest="on" />
             </screen>"""
         self.picPath = os.path.join(IMAGE_PATH, 'icon4k.png')
     if whatWidth >= 1900 and whatWidth < 3000:
         self.skin = """
             <screen position="center,center" size="1920,1080" backgroundColor="#002C2C39">
                 <widget name="myPic" position="center,center" size="1500,930" zPosition="11" alphatest="on" />
             </screen>"""
         self.picPath = os.path.join(IMAGE_PATH, 'icon2k.png')
     Screen.__init__(self, session)
     self.PicLoad = ePicLoad()
     self["myPic"] = Pixmap()
     self["actions"] = ActionMap(["OkCancelActions"], {
         "ok": self.close,
         "cancel": self.close
     }, -1)
     self.picLoad_conn = eConnectCallback(self.PicLoad.PictureData,
                                          self.DecodePicture)
     self.onLayoutFinish.append(self.ShowPicture)
     self.onClose.append(self.__onClose)
Exemple #12
0
 def __init__(self, session, provider):
     contentHandler = VideoAddonManagementScreenContentHandler(session, self, provider)
     addonItems = provider.get_content({'category_addons':'all_addons', 'filter_enabled':False})
     BaseContentScreen.__init__(self, session, contentHandler, addonItems)
     TipBar.__init__(self, [self.CONTEXT_TIP], startOnShown=False)
     self.skinName = "ArchivCZSKContentScreen"
     self["menu"].style = "management"
     self.updateGUITimer = eTimer()
     self.updateGUITimer_conn = eConnectCallback(self.updateGUITimer.timeout, self.updateAddonGUI)
     self.onUpdateGUI.append(self.changeAddon)
     self.onClose.append(self.__onClose)
     self["image"] = Pixmap()
     self["title"] = Label("")
     self["author"] = Label("")
     self["version"] = Label("")
     self["about"] = Label("")
     self["key_red"] = Label("")
     self["key_green"] = Label("")
     self["key_yellow"] = Label("")
     self["key_blue"] = Label("")
     self["actions"] = ActionMap(["archivCZSKActions"],
          {
                 "ok": self.menu,
                 "cancel": self.close,
                 "up": self.up,
                 "down": self.down,
                 "menu" : self.menu
          }, -2)
     self.onLayoutFinish.append(self.updateAddonGUI)
Exemple #13
0
    def stop(self):
        def check_stopped():
            if not self.appContainer.running():
                self.stopTimer.stop()
                del self.stopTimer_conn
                del self.stopTimer
                del self.__i
                return
            if self.__i == 0:
                self.__i += 1
                self.appContainer.kill()
            elif self.__i == 1:
                self.stopTimer.stop()
                del self.stopTimer_conn
                del self.stopTimer
                raise Exception("cannot kill process")

        if self.__stopping:
            return
        self.__stopping = True
        self.__i = 0

        if self.appContainer.running():
            self.appContainer.sendCtrlC()
            self.stopTimer = eTimer()
            self.stopTimer_conn = eConnectCallback(self.stopTimer.timeout,
                                                   check_stopped)
            self.stopTimer.start(2000, False)
Exemple #14
0
 def start_download_callback(download):
     download_obj.append(download)
     messagebox.append(session.openWithCallback(
             play_video_callback, MessageBox, "",
             MessageBox.TYPE_INFO, close_on_any_key=True))
     etimer.append(eTimer())
     etimer.append(eConnectCallback(etimer[0].timeout, check_prefill_state))
     etimer[0].start(1000, True)
 def start_download_callback(download):
     download_obj.append(download)
     messagebox.append(session.openWithCallback(
             play_video_callback, MessageBox, "",
             MessageBox.TYPE_INFO, close_on_any_key=True))
     etimer.append(eTimer())
     etimer.append(eConnectCallback(etimer[0].timeout, check_prefill_state))
     etimer[0].start(1000, True)
Exemple #16
0
 def __init__(self,
              name,
              url,
              destDir,
              filename=None,
              quiet=False,
              headers={}):
     if filename is None:
         filename = url2name(url)
     if not filename.endswith(VIDEO_EXTENSIONS):
         filename = os.path.splitext(filename)[0] + '.mp4'
     Download.__init__(self, name, url, destDir, filename, quiet)
     self.pp = eConsoleAppContainer()
     #self.pp.dataAvail.append(self.__startCB)
     self.appClosed_conn = eConnectCallback(self.pp.appClosed,
                                            self.__finishCB)
     self.stderrAvail_conn = eConnectCallback(self.pp.stderrAvail,
                                              self.__outputCB)
Exemple #17
0
 def __init__(self, session, captcha_file):  
     BaseArchivCZSKScreen.__init__(self,session,False)
     VirtualKeyBoard.__init__(self, session, title=removeDiac(_('Type text of picture')))
     self["captcha"] = Pixmap()
     self.Scale = AVSwitch().getFramebufferScale()
     self.picPath = captcha_file
     self.picLoad = ePicLoad()
     self.picLoad_conn = eConnectCallback(self.picLoad.PictureData, self.decodePicture)
     self.onLayoutFinish.append(self.showPicture)
     self.onClose.append(self.__onClose)
Exemple #18
0
 def startWorkerThread():
     log.debug("[Task] starting workerThread")
     global m_pump_conn
     if m_pump_conn is not None:
         del m_pump_conn
     global m_pump
     if m_pump is None:
         m_pump = ePythonMessagePump()
     m_pump_conn = eConnectCallback(m_pump.recv_msg, run_in_main_thread)
     Task.worker_thread = WorkerThread()
     Task.worker_thread.start()
Exemple #19
0
    def __init__(self, session):
        self.session = session
        Screen.__init__(self, session)

        self["spinner"] = Pixmap()
        self.curr = 0
        self.__shown = False

        self.timer = eTimer()
        self.timer_conn = eConnectCallback(self.timer.timeout, self.showNextSpinner)
        self.onClose.append(self.__onClose)
Exemple #20
0
 def startWorkerThread():
     log.debug("[Task] starting workerThread")
     global m_pump_conn
     if m_pump_conn is not None:
         del m_pump_conn
     global m_pump
     if m_pump is None:
         m_pump = ePythonMessagePump()
     m_pump_conn = eConnectCallback(m_pump.recv_msg, run_in_main_thread)
     Task.worker_thread = WorkerThread()
     Task.worker_thread.start()
Exemple #21
0
 def __init__(self, session, captcha_file):
     BaseArchivCZSKScreen.__init__(self, session, False)
     VirtualKeyBoard.__init__(self, session, _('Type text of picture'))
     self["captcha"] = Pixmap()
     self.Scale = AVSwitch().getFramebufferScale()
     self.picPath = captcha_file
     self.picLoad = ePicLoad()
     self.picLoad_conn = eConnectCallback(self.picLoad.PictureData,
                                          self.decodePicture)
     self.onLayoutFinish.append(self.showPicture)
     self.onClose.append(self.__onClose)
Exemple #22
0
 def __init__(self,
              name,
              url,
              destDir,
              filename=None,
              live=False,
              quiet=False,
              realtime=True):
     if not filename:
         filename = name + '.flv'
         filename = sanitizeFilename(filename)
     Download.__init__(self, name, url, destDir, filename, quiet)
     self.pp = eConsoleAppContainer()
     #self.pp.dataAvail.append(self.__startCB)
     self.appClosed_conn = eConnectCallback(self.pp.appClosed,
                                            self.__finishCB)
     self.stderrAvail_conn = eConnectCallback(self.pp.stderrAvail,
                                              self.__outputCB)
     self.live = live
     self.realtime = realtime
Exemple #23
0
 def __init__(self, session, player_callback):
     Screen.__init__(self, session)
     self.skinName = ["ArchivCZSKMoviePlayer", "MoviePlayer"]
     InfoBarBase.__init__(self)
     InfoBarShowHide.__init__(self)
     InfoBarSeek.__init__(self)
     # disable slowmotion/fastforward
     self.seekFwd = self.seekFwdManual
     self.seekBack = self.seekBackManual
     initSubsSettings()
     SubsSupport.__init__(self,
                          defaultPath=config_archivczsk.tmpPath.value,
                          forceDefaultPath=True,
                          searchSupport=True,
                          embeddedSupport=True,
                          preferEmbedded=True)
     SubsSupportStatus.__init__(self)
     InfoBarAudioSelectionNoSubtitles.__init__(self)
     InfoBarNotifications.__init__(self)
     InfoBarSubservicesSupport.__init__(self)
     InfoBarAspectChange.__init__(self)
     self.postAspectChange.append(self.__aspect_changed)
     HelpableScreen.__init__(self)
     self.status_dialog = self.session.instantiateDialog(StatusScreen)
     self.player_callback = player_callback
     self.__timer = eTimer()
     self.__timer_conn = eConnectCallback(self.__timer.timeout,
                                          self.__pts_available)
     self.__subtitles_url = None
     self.__resume_time_sec = None
     self["actions"] = HelpableActionMap(
         self, "ArchivCZSKMoviePlayerActions", {
             "showPlaylist": (boundFunction(self.player_callback, (
                 "playlist",
                 "show",
             )), _("Show playlist")),
             "nextEntry": (boundFunction(self.player_callback, (
                 "playlist",
                 "next",
             )), _("Play next entry in playlist")),
             "prevEntry": (boundFunction(self.player_callback, (
                 "playlist",
                 "prev",
             )), _("Play previous entry in playlist")),
             "cancel": (boundFunction(self.player_callback,
                                      ("exit", )), _("Exit player")),
         }, -2)
     self.__event_tracker = ServiceEventTracker(
         screen=self,
         eventmap={
             iPlayableService.evStart: self.__service_started,
         })
     self.onClose.append(self.__on_close)
Exemple #24
0
    def __init__(self, session):
        self.session = session
        Screen.__init__(self, session)

        self["spinner"] = Pixmap()
        self.curr = 0
        self.__shown = False

        self.timer = eTimer()
        self.timer_conn = eConnectCallback(self.timer.timeout,
                                           self.showNextSpinner)
        self.onClose.append(self.__onClose)
Exemple #25
0
    def __init__(self, session, archivCZSK):
        provider = ArchivCZSKContentProvider(archivCZSK, os.path.join(settings.PLUGIN_PATH, 'categories'))
        provider.start()
        contentHandler = ArchivCZSKContentHandler(session, self, provider)
        defaultCategory = config.plugins.archivCZSK.defaultCategory.value
        categoryItem = categoryAddons = None
        if defaultCategory != 'categories':
            categoryItem = provider.get_content({'category':defaultCategory})
            categoryAddons = provider.get_content({'category_addons':defaultCategory})
            categoryAddons is not None and categoryAddons.insert(0, PExit())
        categoryItems = provider.get_content()
        BaseContentScreen.__init__(self, session, contentHandler, categoryItems)
        if categoryItem is not None  and categoryAddons is not None:
            self.save()
            self.load({'lst_items':categoryAddons,
                            'parent_it':categoryItem,
                            'refresh':False})
        self.ctx_items.append((_("Add Category"), None, self.addCategory))
        self.provider = provider
        self.updateGUITimer = eTimer()
        self.updateGUITimer_conn = eConnectCallback(self.updateGUITimer.timeout, self.updateAddonGUI)

        # include DownloadList
        DownloadList.__init__(self)

        # include TipList
        TipBar.__init__(self, [self.CONTEXT_TIP], startOnShown=True)
        self.onUpdateGUI.append(self.changeAddon)
        self.onClose.append(self.__onClose)

        self["image"] = Pixmap()
        self["title"] = Label("")
        self["author"] = Label("")
        self["version"] = Label("")
        self["about"] = Label("")

        self["key_red"] = Label(_("Manager"))
        self["key_green"] = Label()
        self["key_yellow"] = Label("")
        self["key_blue"] = Label(_("Settings"))

        self["actions"] = ActionMap(["archivCZSKActions"],
            {
                "ok": self.ok,
                "cancel": self.cancel,
                "up": self.up,
                "down": self.down,
                "blue": self.openSettings,
                "red": self.openAddonManagement,
                "menu" : self.menu
            }, -2)
        # after layout show update item "GUI" - edit: shamann
        self.onLayoutFinish.append(self.updateAddonGUI)
Exemple #26
0
    def __init__(self, session, archivCZSK):
        provider = ArchivCZSKContentProvider(archivCZSK, os.path.join(settings.PLUGIN_PATH, 'categories'))
        provider.start()
        contentHandler = ArchivCZSKContentHandler(session, self, provider)
        defaultCategory = config.plugins.archivCZSK.defaultCategory.value
        categoryItem = categoryAddons = None
        if defaultCategory != 'categories':
            categoryItem = provider.get_content({'category':defaultCategory})
            categoryAddons = provider.get_content({'category_addons':defaultCategory})
            categoryAddons is not None and categoryAddons.insert(0, PExit())
        categoryItems = provider.get_content()
        BaseContentScreen.__init__(self, session, contentHandler, categoryItems)
        if categoryItem is not None  and categoryAddons is not None:
            self.save()
            self.load({'lst_items':categoryAddons,
                            'parent_it':categoryItem,
                            'refresh':False})
        self.ctx_items.append((_("Add Category"), None, self.addCategory))
        self.provider = provider
        self.updateGUITimer = eTimer()
        self.updateGUITimer_conn = eConnectCallback(self.updateGUITimer.timeout, self.updateAddonGUI)

        # include DownloadList
        DownloadList.__init__(self)

        # include TipList
        TipBar.__init__(self, [self.CONTEXT_TIP], startOnShown=True)
        self.onUpdateGUI.append(self.changeAddon)
        self.onClose.append(self.__onClose)

        self["image"] = Pixmap()
        self["title"] = Label("")
        self["author"] = Label("")
        self["version"] = Label("")
        self["about"] = Label("")

        self["key_red"] = Label(_("Manager"))
        self["key_green"] = Label()
        self["key_yellow"] = Label("")
        self["key_blue"] = Label(_("Settings"))

        self["actions"] = ActionMap(["archivCZSKActions"],
            {
                "ok": self.ok,
                "cancel": self.cancel,
                "up": self.up,
                "down": self.down,
                "blue": self.openSettings,
                "red": self.openAddonManagement,
                "menu" : self.menu
            }, -2)
        # after layout show update item "GUI" - edit: shamann
        self.onLayoutFinish.append(self.updateAddonGUI)
Exemple #27
0
 def __init__(self, session):
     Screen.__init__(self, session)
     self.stand_alone = True
     width, height = e2util.get_desktop_width_and_height()
     skin = '<screen position="%d,%d" size="%d,%d" backgroundColor="transparent" flags="wfNoBorder">' % (
         0.05 * width, 0.05 * height, 0.9 * width, 0.1 * height)
     skin += '<widget name="status" position="0,0" size="%d,%d" valign="center" halign="left" font="Regular;22" transparent="1" shadowColor="#40101010" shadowOffset="3,3" />' % (
         0.9 * width, 0.1 * height)
     skin += '</screen>'
     self.skin = skin
     self["status"] = Label()
     self.timer = eTimer()
     self.timer_conn = eConnectCallback(self.timer.timeout, self.hide)
     self.onClose.append(self.__on_close)
Exemple #28
0
 def __init__(self, session):
     Screen.__init__(self, session)
     self.stand_alone = True
     width, height = e2util.get_desktop_width_and_height()
     skin = '<screen position="%d,%d" size="%d,%d" backgroundColor="transparent" flags="wfNoBorder">'%(
             0.05 * width, 0.05 * height, 0.9 * width, 0.1 * height)
     skin+= '<widget name="status" position="0,0" size="%d,%d" valign="center" halign="left" font="Regular;22" transparent="1" shadowColor="#40101010" shadowOffset="3,3" />'%(
             0.9 * width, 0.1 * height)
     skin+= '</screen>'
     self.skin = skin
     self["status"] = Label()
     self.timer = eTimer()
     self.timer_conn = eConnectCallback(self.timer.timeout, self.hide)
     self.onClose.append(self.__on_close)
Exemple #29
0
 def __init__(self,
              name,
              url,
              destDir,
              filename=None,
              quiet=False,
              headers={}):
     if filename is None:
         path = urlparse.urlparse(url).path
         filename = os.path.basename(path)
     Download.__init__(self, name, url, destDir, filename, quiet)
     self.pp = eConsoleAppContainer()
     #self.pp.dataAvail.append(self.__startCB)
     self.appClosed_conn = eConnectCallback(self.pp.appClosed,
                                            self.__finishCB)
     self.stderrAvail_conn = eConnectCallback(self.pp.stderrAvail,
                                              self.__outputCB)
     if len(headers) > 0:
         self.headers = '--header ' + ' --header '.join(
             [("'" + key + ': ' + value + "'")
              for key, value in headers.iteritems()])
     else:
         self.headers = ""
Exemple #30
0
    def __init__(self, session, download):
        BaseArchivCZSKScreen.__init__(self, session)
        self.title = _("Download progress")

        self["filename"] = Label("")
        self["size_label"] = Label(_("Size:"))
        self["size"] = Label("")
        self["path_label"] = Label(_("Path:"))
        self["path"] = Label("")
        self["start_label"] = Label(_("Start time:"))
        self["start"] = Label("")
        self["finish_label"] = Label(_("Finish time:"))
        self["finish"] = Label("")
        self["state_label"] = Label(_("State:"))
        self["state"] = MultiColorLabel("")
        self["speed_label"] = Label(_("Speed:"))
        self["speed"] = Label("0 KB/s")
        self["status"] = Label("")

        self["actions"] = ActionMap(["WizardActions", "DirectionActions"],
        {
            "ok": self.cancel,
            "back": self.cancel,
        }, -1)

        self._download = download

        self._download.onOutputCB.append(self.outputCallback)
        self._download.onFinishCB.append(self.updateState)
        self._download.onFinishCB.append(self.updateFinishTime)
        self._download.onFinishCB.append(self.stopTimer)

        self.timer = eTimer()
        self.timer_conn = eConnectCallback(self.timer.timeout, self.updateStatus)
        self.timer_interval = 3000

        self.onShown.append(self.updateStaticInfo)
        self.onShown.append(self.updateState)
        self.onShown.append(self.updateFinishTime)
        self.onShown.append(self.startTimer)

        self.onLayoutFinish.append(self.startRun)  # dont start before gui is finished
        self.onLayoutFinish.append(self.updateGUI)



        self.onClose.append(self.__onClose)
Exemple #31
0
    def __init__(self, session, download):
        BaseArchivCZSKScreen.__init__(self, session)
        self.title = _("Download progress")

        self["filename"] = Label("")
        self["size_label"] = Label(_("Size:"))
        self["size"] = Label("")
        self["path_label"] = Label(_("Path:"))
        self["path"] = Label("")
        self["start_label"] = Label(_("Start time:"))
        self["start"] = Label("")
        self["finish_label"] = Label(_("Finish time:"))
        self["finish"] = Label("")
        self["state_label"] = Label(_("State:"))
        self["state"] = MultiColorLabel("")
        self["speed_label"] = Label(_("Speed:"))
        self["speed"] = Label("0 KB/s")
        self["status"] = Label("")

        self["actions"] = ActionMap(["WizardActions", "DirectionActions"],
        {
            "ok": self.cancel,
            "back": self.cancel,
        }, -1)

        self._download = download

        self._download.onOutputCB.append(self.outputCallback)
        self._download.onFinishCB.append(self.updateState)
        self._download.onFinishCB.append(self.updateFinishTime)
        self._download.onFinishCB.append(self.stopTimer)

        self.timer = eTimer()
        self.timer_conn = eConnectCallback(self.timer.timeout, self.updateStatus)
        self.timer_interval = 3000

        self.onShown.append(self.updateStaticInfo)
        self.onShown.append(self.updateState)
        self.onShown.append(self.updateFinishTime)
        self.onShown.append(self.startTimer)

        self.onLayoutFinish.append(self.startRun)  # dont start before gui is finished
        self.onLayoutFinish.append(self.updateGUI)



        self.onClose.append(self.__onClose)
Exemple #32
0
    def __init__(self, tip_list=[], startOnShown=False, tip_timer_refresh=10):

        self["tip_pixmap"] = Pixmap()
        self["tip_label"] = Label("")

        self.tip_list = tip_list
        self.tip_selection = 0
        self.tip_timer_refresh = tip_timer_refresh * 1000
        self.tip_timer = eTimer()
        self.tip_timer_conn = eConnectCallback(self.tip_timer.timeout, self.changeTip)
        if startOnShown:
            self.onFirstExecBegin.append(self.startTipTimer)

        self.onStartWork.append(self.__stop)
        self.onStopWork.append(self.__start)

        self.onClose.append(self.__exit)
Exemple #33
0
    def play_item(self, item, mode='play', *args, **kwargs):
        def endPlayFinish():
            self.content_screen.workingFinished()
            if self.content_provider.isPaused():
                self.content_provider.resume()
        def startWatchingTimer():
            self.cmdTimer.start(timerPeriod)
        def timerEvent():
            self.cmdStats(item, 'watching')
        def end_play():
            # @TODO toto sa tak ci tak zjebe ked sa posiela trakt a stlaca sa exit tak to znova zavola dalsie vlakno a potom je crash
            try:
                self.cmdTimer.stop()
                del self.cmdTimer
                del self.cmdTimer_conn
            except:
                log.logDebug("Release cmd timer failed.\n%s" % traceback.format_exc())
            
            sendTrakt = False
            try:
                if 'trakt' in self.content_provider.capabilities and self.isValidForTrakt(item):
                    totalSec = (datetime.datetime.now()-playStartAt).total_seconds()
                    durSec = float(item.dataItem['duration'])
                    # movie time from start play after 80% then mark as watched
                    if totalSec >= durSec*0.80:
                        sendTrakt = True
                    else:
                        log.logDebug('Movie not mark as watched ( <80% watch time).')
            except:
                log.logError("Trakt AUTO mark as watched failed.\n%s"%traceback.format_exc())

            # na DEBUG
            #sendTrakt = True
            self.cmdStats(item, 'end', finishCB=endPlayFinish, sendTraktWatchedCmd=sendTrakt)

        timerPeriod = 10*60*1000 #10min
        self.cmdTimer = eTimer()
        self.cmdTimer_conn = eConnectCallback(self.cmdTimer.timeout, timerEvent)

        self.content_screen.workingStarted()
        self.content_provider.pause()
        self.content_provider.play(self.session, item, mode, end_play)

        # send command
        playStartAt = datetime.datetime.now()
        self.cmdStats(item, 'play', finishCB=startWatchingTimer)
Exemple #34
0
    def __init__(self, tip_list=[], startOnShown=False, tip_timer_refresh=10):

        self["tip_pixmap"] = Pixmap()
        self["tip_label"] = Label("")

        self.tip_list = tip_list
        self.tip_selection = 0
        self.tip_timer_refresh = tip_timer_refresh * 1000
        self.tip_timer = eTimer()
        self.tip_timer_conn = eConnectCallback(self.tip_timer.timeout,
                                               self.changeTip)
        if startOnShown:
            self.onFirstExecBegin.append(self.startTipTimer)

        self.onStartWork.append(self.__stop)
        self.onStopWork.append(self.__start)

        self.onClose.append(self.__exit)
Exemple #35
0
 def __init__(self, session, player_callback):
     Screen.__init__(self, session)
     self.skinName = ["ArchivCZSKMoviePlayer", "MoviePlayer"]
     InfoBarBase.__init__(self)
     InfoBarShowHide.__init__(self)
     InfoBarSeek.__init__(self)
     # disable slowmotion/fastforward
     self.seekFwd = self.seekFwdManual
     self.seekBack = self.seekBackManual
     initSubsSettings()
     SubsSupport.__init__(self, 
             defaultPath = config_archivczsk.tmpPath.value,
             forceDefaultPath = True,
             searchSupport = True)
     SubsSupportStatus.__init__(self)
     InfoBarAudioSelectionNoSubtitles.__init__(self)
     InfoBarNotifications.__init__(self)
     InfoBarSubservicesSupport.__init__(self)
     InfoBarAspectChange.__init__(self)
     self.postAspectChange.append(self.__aspect_changed)
     HelpableScreen.__init__(self)
     self.status_dialog = self.session.instantiateDialog(StatusScreen)
     self.player_callback = player_callback
     self.__timer = eTimer()
     self.__timer_conn = eConnectCallback(self.__timer.timeout, self.__pts_available)
     self.__subtitles_url = None
     self.__resume_time_sec = None
     self["actions"] = HelpableActionMap(self, "ArchivCZSKMoviePlayerActions",
             {"showPlaylist": (boundFunction(self.player_callback, ("playlist", "show",)),
                 _("Show playlist")),
                 "nextEntry":(boundFunction(self.player_callback, ("playlist", "next",)),
                     _("Play next entry in playlist")),
                 "prevEntry":(boundFunction(self.player_callback, ("playlist", "prev",)),
                     _("Play previous entry in playlist")),
                 "cancel":(boundFunction(self.player_callback, ("exit",)),
                     _("Exit player")),
             }, -2)
     self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
     {
         iPlayableService.evStart: self.__service_started,
     })
     self.onClose.append(self.__on_close)
Exemple #36
0
    def __init__(self, session, it):
        BaseArchivCZSKScreen.__init__(self, session)
        self.image_link = None
        self.it = it
        self.image_dest = None
        if it.image is not None:
            self.image_link = it.image.encode('utf-8', 'ignore')
            self.image_dest = os.path.join('/tmp/',
                                           self.image_link.split('/')[-1])
        self.plot = ''
        self.genre = ''
        self.rating = ''
        self.year = ''

        for key, value in it.info.iteritems():
            if key == 'Plot' or key == 'plot':
                self.plot = value.encode('utf-8', 'ignore')
            if key == 'Genre' or key == 'genre':
                self.genre = value.encode('utf-8', 'ignore')
            if key == 'Rating' or key == 'rating':
                self.rating = value.encode('utf-8', 'ignore')
            if key == 'Year' or key == 'year':
                self.year = value.encode('utf-8', 'ignore')

        self["img"] = Pixmap()
        self["genre"] = Label(_("Genre: ") + self.genre)
        self["year"] = Label(_("Year: ") + self.year)
        self["rating"] = Label(_("Rating: ") + self.rating)
        self["plot"] = ScrollLabel(self.plot)

        self["actions"] = NumberActionMap(["archivCZSKActions"], {
            "cancel": self.close,
            "up": self.pageUp,
            "down": self.pageDown,
        }, -2)
        self.title = self.it.name.encode('utf-8', 'ignore')
        self.Scale = AVSwitch().getFramebufferScale()
        self.picLoad = ePicLoad()
        self.picLoad_conn = eConnectCallback(self.picLoad.PictureData,
                                             self.decodePicture)
        self.onLayoutFinish.append(self.showPicture)
        self.onClose.append(self.__onClose)
Exemple #37
0
	def __init__(self, session, it):
		BaseArchivCZSKScreen.__init__(self, session)
		self.image_link = None
		self.it = it
		self.image_dest = None
		if it.image is not None:
			self.image_link = it.image.encode('utf-8', 'ignore')
			self.image_dest = os.path.join('/tmp/', self.image_link.split('/')[-1])
		self.plot = ''
		self.genre = ''
		self.rating = ''
		self.year = ''
		
		for key, value in it.info.iteritems():		
			if key == 'Plot' or key == 'plot':
				self.plot = value.encode('utf-8', 'ignore')
			if key == 'Genre' or key == 'genre':
				self.genre = value.encode('utf-8', 'ignore')
			if key == 'Rating' or key == 'rating':
				self.rating = value.encode('utf-8', 'ignore')
			if key == 'Year' or key == 'year':
				self.year = value.encode('utf-8', 'ignore')
			
		self["img"] = Pixmap()
		self["genre"] = Label(_("Genre: ") + self.genre)
		self["year"] = Label(_("Year: ") + self.year)
		self["rating"] = Label(_("Rating: ") + self.rating)
		self["plot"] = ScrollLabel(self.plot)
			
		self["actions"] = NumberActionMap(["archivCZSKActions"],
		{
			"cancel": self.close,
			"up": self.pageUp,
			"down": self.pageDown,
		}, -2)	
		self.title = self.it.name.encode('utf-8', 'ignore')
		self.Scale = AVSwitch().getFramebufferScale()
		self.picLoad = ePicLoad()
		self.picLoad_conn = eConnectCallback(self.picLoad.PictureData, self.decodePicture)
		self.onLayoutFinish.append(self.showPicture)
		self.onClose.append(self.__onClose)
Exemple #38
0
    def __init__(self, session):
        desktop = getDesktop(0)
        size = desktop.size()
        self.sc_width = size.width()
        self.sc_height = size.height()

        statusPositionX = 50
        statusPositionY = 100
        self.delayTimer = eTimer()
        self.delayTimer_conn = eConnectCallback(self.delayTimer.timeout, self.hideStatus)
        self.delayTimerDelay = 1500

        self.skin = """
            <screen name="StatusScreen" position="%s,%s" size="%s,90" zPosition="0" backgroundColor="transparent" flags="wfNoBorder">
                    <widget name="status" position="0,0" size="%s,70" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="yellow" shadowColor="#40101010" shadowOffset="3,3" />
            </screen>""" % (str(statusPositionX), str(statusPositionY), str(self.sc_width), str(self.sc_width))

        Screen.__init__(self, session)
        self.stand_alone = True
        self["status"] = Label("")
        self.onClose.append(self.__onClose)
Exemple #39
0
    def startRTMPGWProcess(self, media_it):
        log.debug('starting rtmpgw process')
        ret = util.check_program(RTMPGW_PATH)
        if ret is None:
            raise RTMPGWMissingError()

        if RTMPGWSupport.__port > 8905:
            RTMPGWSupport.__port = 8902
        else:
            RTMPGWSupport.__port += 1
        port = RTMPGWSupport.__port

        stream = media_it.stream
        url = media_it.url
        live = media_it.live
        try:
            cmd = "%s %s --sport %d" % (RTMPGW_PATH, stream.getRtmpgwUrl(),
                                        port)
        except Exception:
            urlList = url.split()
            rtmpTimeout = self.settings.rtmpTimeout.getValue()
            rtmpBuffer = (live and self.liveRTMPBuffer) or (
                not live and self.archiveRTMPBuffer)
            rtmp_url = []
            for url in urlList[1:]:
                rtmp = url.split('=', 1)
                rtmp_url.append(' --' + rtmp[0])
                rtmp_url.append("'%s'" % rtmp[1])
            rtmpUrl = "'%s'" % urlList[0] + ' '.join(rtmp_url)
            if not '--buffer' in rtmpUrl:
                rtmpUrl = '%s --buffer %d' % (rtmpUrl, int(rtmpBuffer))
            if not '--timeout' in rtmpUrl:
                rtmpUrl = '%s --timeout %d' % (rtmpUrl, int(rtmpTimeout))
            cmd = '%s --quiet --rtmp %s --sport %d' % (RTMPGW_PATH, rtmpUrl,
                                                       self.__port)
        log.debug('rtmpgw server streaming: %s', cmd)
        self.__rtmpgwProcess = eConsoleAppContainer()
        self.__appClosed_conn = eConnectCallback(
            self.__rtmpgwProcess.appClosed, self.__endRTMPGWProcess)
        self.__rtmpgwProcess.execute(cmd)
Exemple #40
0
    def startService(self):
        """
        Get real start of service
        @return: deferred, fires success when gets service or errback when dont get service in time limit
        """
        def fireDeferred():
            del self.__serviceTimer_conn
            self.__deferred.callback(None)
            self.__deferred = None

        def fireDeferredErr():
            del self.__serviceTimer_conn
            self.__deferred.errback(defer.failure.Failure(Exception("")))
            self.__deferred = None

        def getService():
            if self.__deferred is None:
                return

            if self.service is None:
                if self.__serviceTryTime < self.__serviceTryLimit:
                    self.__serviceTimer.start(self.__serviceTimerTryDelay,
                                              True)
                else:
                    fireDeferredErr()
            else:
                fireDeferred()

        def setService():
            self.__serviceTryTime += self.__serviceTimerTryDelay
            self.service = self.session.nav.getCurrentService()
            getService()

        self.__deferred = defer.Deferred()
        self.__serviceTimer_conn = eConnectCallback(
            self.__serviceTimer.timeout, setService)
        getService()
        return self.__deferred
Exemple #41
0
    def __init__(self, session):
        desktop = getDesktop(0)
        size = desktop.size()
        self.sc_width = size.width()
        self.sc_height = size.height()

        statusPositionX = 50
        statusPositionY = 100
        self.delayTimer = eTimer()
        self.delayTimer_conn = eConnectCallback(self.delayTimer.timeout,
                                                self.hideStatus)
        self.delayTimerDelay = 1500

        self.skin = """
            <screen name="StatusScreen" position="%s,%s" size="%s,90" zPosition="0" backgroundColor="transparent" flags="wfNoBorder">
                    <widget name="status" position="0,0" size="%s,70" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="yellow" shadowColor="#40101010" shadowOffset="3,3" />
            </screen>""" % (str(statusPositionX), str(statusPositionY),
                            str(self.sc_width), str(self.sc_width))

        Screen.__init__(self, session)
        self.stand_alone = True
        self["status"] = Label("")
        self.onClose.append(self.__onClose)
Exemple #42
0
 def startService(self):
     """
     Get real start of service
     @return: deferred, fires success when gets service or errback when dont get service in time limit
     """
     
     def fireDeferred():
         del self.__serviceTimer_conn
         self.__deferred.callback(None)
         self.__deferred = None
         
     def fireDeferredErr():
         del self.__serviceTimer_conn
         self.__deferred.errback(defer.failure.Failure(Exception("")))
         self.__deferred = None
         
     def getService():
         if self.__deferred is None:
             return
         
         if self.service is None:
             if self.__serviceTryTime < self.__serviceTryLimit:
                 self.__serviceTimer.start(self.__serviceTimerTryDelay, True)
             else:
                 fireDeferredErr()
         else:
             fireDeferred()
             
     def setService():
         self.__serviceTryTime += self.__serviceTimerTryDelay
         self.service = self.session.nav.getCurrentService()
         getService()
     
     self.__deferred = defer.Deferred()
     self.__serviceTimer_conn = eConnectCallback(self.__serviceTimer.timeout, setService)
     getService()
     return self.__deferred    
Exemple #43
0
	def startRTMPGWProcess(self, media_it):
		log.debug('starting rtmpgw process')
		ret = util.check_program(RTMPGW_PATH)
		if ret is None:
			raise RTMPGWMissingError()

		if RTMPGWSupport.__port > 8905:
			RTMPGWSupport.__port = 8902
		else:
			RTMPGWSupport.__port += 1
		port = RTMPGWSupport.__port

		stream = media_it.stream
		url = media_it.url
		live = media_it.live
		try:
			cmd = "%s %s --sport %d" % (RTMPGW_PATH, stream.getRtmpgwUrl(), port)
		except Exception:
			urlList = url.split()
			rtmpTimeout = self.settings.rtmpTimeout.getValue()
			rtmpBuffer = (live and self.liveRTMPBuffer) or (not live and self.archiveRTMPBuffer)
			rtmp_url = []
			for url in urlList[1:]:
				rtmp = url.split('=', 1)
				rtmp_url.append(' --' + rtmp[0])
				rtmp_url.append("'%s'" % rtmp[1])
			rtmpUrl = "'%s'" % urlList[0] + ' '.join(rtmp_url)
			if not '--buffer' in rtmpUrl:
				rtmpUrl = '%s --buffer %d' % (rtmpUrl, int(rtmpBuffer))
			if not '--timeout' in rtmpUrl:
				rtmpUrl = '%s --timeout %d' % (rtmpUrl, int(rtmpTimeout))
			cmd = '%s --quiet --rtmp %s --sport %d' % (RTMPGW_PATH, rtmpUrl, self.__port)
		log.debug('rtmpgw server streaming: %s' , cmd)
		self.__rtmpgwProcess = eConsoleAppContainer()
		self.__appClosed_conn = eConnectCallback(self.__rtmpgwProcess.appClosed, self.__endRTMPGWProcess)
		self.__rtmpgwProcess.execute(cmd)
Exemple #44
0
    def start(self, play_and_download):
        self.video = self.video_player.video

        self.video_length_total = self.video.getCurrentLength()
        self.update_video_length()

        # only start video check when we have total length
        if play_and_download and self.video_length_total:

            self.buffering_timer = eTimer()
            self.buffering_timer_conns = []
            self.buffering_timer_conns.append(eConnectCallback(self.buffering_timer.timeout, self.check_position))
            self.buffering_timer_conns.append(eConnectCallback(self.buffering_timer.timeout, self._update_download_status))
            self.buffering_timer_conns.append(eConnectCallback(self.buffering_timer.timeout, self._update_info_bar))

            self.check_timer = eTimer()
            self.check_timer_conns.append(eConnectCallback(self.check_timer.timeout, self.check_position))
            self.check_timer_conns.append(eConnectCallback(self.check_timer.timeout, self._update_download_status))
            self.check_timer_conns.append(eConnectCallback(self.check_timer.timeout, self._update_info_bar))

            self.start_video_check()
        else:
            log.debug("play_and_download=%s video_length_total=%s", play_and_download, self.video_length_total)
Exemple #45
0
    def start(self, play_and_download):
        self.video = self.video_player.video

        self.video_length_total = self.video.getCurrentLength()
        self.update_video_length()

        # only start video check when we have total length
        if play_and_download and self.video_length_total:

            self.buffering_timer = eTimer()
            self.buffering_timer_conns = []
            self.buffering_timer_conns.append(
                eConnectCallback(self.buffering_timer.timeout,
                                 self.check_position))
            self.buffering_timer_conns.append(
                eConnectCallback(self.buffering_timer.timeout,
                                 self._update_download_status))
            self.buffering_timer_conns.append(
                eConnectCallback(self.buffering_timer.timeout,
                                 self._update_info_bar))

            self.check_timer = eTimer()
            self.check_timer_conns.append(
                eConnectCallback(self.check_timer.timeout,
                                 self.check_position))
            self.check_timer_conns.append(
                eConnectCallback(self.check_timer.timeout,
                                 self._update_download_status))
            self.check_timer_conns.append(
                eConnectCallback(self.check_timer.timeout,
                                 self._update_info_bar))

            self.start_video_check()
        else:
            log.debug("play_and_download=%s video_length_total=%s",
                      play_and_download, self.video_length_total)
Exemple #46
0
	def __init__(self, default = None):
		Pixmap.__init__(self)
		self.picload = ePicLoad()
		self.picload_conn = eConnectCallback(self.picload.PictureData, self.setPixmapCB)
		self.cachedir = "/tmp/"
		self.default = default
Exemple #47
0
    def __init__(self, session, eventName, year, args = None):
        try:
            Screen.__init__(self, session)
            self.eventName = eventName
            self["poster"] = Pixmap()
            self.picload = ePicLoad()
            #self.picload.PictureData.get().append(self.paintPosterPixmapCB)
            # OE2.0 - OE2.5 compatibility
            self.picload_conn = eConnectCallback(self.picload.PictureData, self.paintPosterPixmapCB)
            self["stars"] = ProgressBar()
            self["starsbg"] = Pixmap()
            self["stars"].hide()
            self["starsbg"].hide()
            self["poster"].hide()
            
            self.ratingstars = -1
            #self["titlelabel"] = Label("CSFD Lite")
            self["detailslabel"] = ScrollLabel("")
            self["extralabel"] = ScrollLabel("")
            self["statusbar"] = Label("")
            self["ratinglabel"] = Label("")
            self["baseFilmInfo"] = Label("")
            self.resultlist = []
            self["menu"] = MenuList(self.resultlist)
            self["menu"].hide()

            self["detailslabel"].hide()
            self["baseFilmInfo"].hide()
            self["key_red"] = Button("Exit")
            self["key_green"] = Button("")
            self["key_yellow"] = Button("")
            self["key_blue"] = Button("")
        
            # 0 = multiple query selection menu page
            # 1 = movie info page
            # 2 = extra infos page
            self.Page = 0

            self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "MovieSelectionActions", "DirectionActions"],
            {
                "ok": self.showDetails,
                #"cancel": self.close,
                "cancel": self.__onClose,
                "down": self.pageDown,
                "up": self.pageUp,
                #"right": self.pageDown,
                #"left": self.pageUp,
                #"red": self.close,
                "red": self.__onClose,
                "green": self.showMenu,
                "yellow": self.showDetails,
                "blue": self.showExtras,
                #"contextMenu": self.openChannelSelection,
                "showEventInfo": self.showDetails
            }, -1)

            self.rokEPG = year
        
            self.getCSFD()
        except:
            log.logError("Init ArchivCSFD failed.\n%s"%traceback.format_exc())