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)
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)
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)
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)
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
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 = ""
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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()
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)
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()
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)
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
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)
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)
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)
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)
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)
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)
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 = ""
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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)
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
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)
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)
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)
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
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())