def refresh(self): if self.doStopRunningRefresh: self.cleanUp() return if self.forcedScan: self.nextService() else: # Abort if a scan finished later than our begin of timespan if self.beginOfTimespan < config.plugins.epgrefresh.lastscan.value: return if config.plugins.epgrefresh.force.value \ or (Screens.Standby.inStandby and \ not self.session.nav.RecordTimer.isRecording()): self.nextService() # We don't follow our rules here - If the Box is still in Standby and not recording we won't reach this line else: if not checkTimespan( config.plugins.epgrefresh.begin.value, config.plugins.epgrefresh.end.value): print("[EPGRefresh] Gone out of timespan while refreshing, sorry!") self.cleanUp() else: print("[EPGRefresh] Box no longer in Standby or Recording started, rescheduling") # Recheck later epgrefreshtimer.add(EPGRefreshTimerEntry( time() + config.plugins.epgrefresh.delay_standby.value*60, self.refresh, nocheck = True) )
def refresh(self): if self.forcedScan: self.nextService() else: # Abort if a scan finished later than our begin of timespan if self.beginOfTimespan < config.plugins.epgrefresh.lastscan.value: return if config.plugins.epgrefresh.force.value \ or (Screens.Standby.inStandby and \ not self.session.nav.RecordTimer.isRecording()): self.nextService() # We don't follow our rules here - If the Box is still in Standby and not recording we won't reach this line else: if not checkTimespan(config.plugins.epgrefresh.begin.value, config.plugins.epgrefresh.end.value): print( "[EPGRefresh] Gone out of timespan while refreshing, sorry!" ) self.cleanUp() else: print( "[EPGRefresh] Box no longer in Standby or Recording started, rescheduling" ) # Recheck later epgrefreshtimer.add( EPGRefreshTimerEntry( time() + config.plugins.epgrefresh.delay_standby.value * 60, self.refresh, nocheck=True))
def nextService(self): # Debug print("[EPGRefresh] Maybe zap to next service") try: # Get next reference service = self.scanServices.pop(0) except IndexError: # Debug print("[EPGRefresh] Done refreshing EPG") # Clean up self.cleanUp() else: # If the current adapter is unable to run in background and we are in fact in background now, # fall back to main picture if (not self.refreshAdapter.backgroundCapable and Screens.Standby.inStandby): print( "[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter" ) self.maybeStopAdapter() self.refreshAdapter = MainPictureAdapter(self.session) self.refreshAdapter.prepare() # Play next service # XXX: we might want to check the return value self.refreshAdapter.play(eServiceReference(service.sref)) # Start Timer delay = service.duration or config.plugins.epgrefresh.interval_seconds.value epgrefreshtimer.add( EPGRefreshTimerEntry(time() + delay, self.refresh, nocheck=True))
def _onCacheStateChanged(self, cState): sref = self.currentServiceRef if sref is None: print("[EPGRefresh] - got EPG message but no epgrefresh running... ignore") return if cState.state in (cachestate.load_finished, cachestate.save_finished, cachestate.aborted): print("[EPGRefresh] - assuming the state is not relevant for EPGRefresh. State:" + str(cState.state)) return sdata = sref.getUnsignedData tsid = sdata(2) onid = sdata(3) ns = sdata(4) if cState.tsid != tsid or cState.onid != onid or cState.dvbnamespace != ns: print("[EPGRefresh] - ignored EPG message for wrong transponder %04x:%04x:%08x <> %04x:%04x:%08x" %(cState.tsid, cState.onid, cState.dvbnamespace, tsid, onid, ns)) return print("[EPGRefresh] - state is:" + str(cState.state)) self.epgTimeoutTimer.stop() if cState.state == cachestate.started: print("[EPGRefresh] - EPG update started for transponder %04x:%04x:%08x" %(tsid, onid, ns)) elif cState.state == cachestate.stopped or cState.state == cachestate.deferred: print("[EPGRefresh] - EPG update finished for transponder %04x:%04x:%08x" %(tsid, onid, ns)) if self.refreshAdapter: self.refreshAdapter.stop() epgrefreshtimer.add(EPGRefreshTimerEntry( time(), self.refresh, nocheck = True) )
def nextService(self): # Debug print("[EPGRefresh] Maybe zap to next service") try: # Get next reference service = self.scanServices.pop(0) except IndexError: # Debug print("[EPGRefresh] Done refreshing EPG") # Clean up self.cleanUp() else: # If the current adapter is unable to run in background and we are in fact in background now, # fall back to main picture if not self.refreshAdapter.backgroundCapable and Screens.Standby.inStandby: print( "[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter" ) self.maybeStopAdapter() self.refreshAdapter = MainPictureAdapter(self.session) self.refreshAdapter.prepare() # Play next service # XXX: we might want to check the return value self.refreshAdapter.play(eServiceReference(service.sref)) # Start Timer delay = service.duration or config.plugins.epgrefresh.interval_seconds.value epgrefreshtimer.add(EPGRefreshTimerEntry(time() + delay, self.refresh, nocheck=True))
def nextService(self): # Debug print "[EPGRefresh] Maybe zap to next service" try: # Get next reference service = self.scanServices.pop(0) except IndexError: # Debug print "[EPGRefresh] Done refreshing EPG" # Clean up self.cleanUp() else: # Play next service # XXX: we might want to check the return value self.refreshAdapter.play(eServiceReference(service.sref)) # Start Timer delay = service.duration or config.plugins.epgrefresh.interval.value epgrefreshtimer.add(EPGRefreshTimerEntry( time() + delay*60, self.refresh, nocheck = True) )
def nextService(self): # Debug print("[EPGRefresh] Maybe zap to next service") try: # Get next reference service = self.scanServices.pop(0) except IndexError: # Debug print("[EPGRefresh] Done refreshing EPG") # Clean up self.cleanUp() else: # Play next service # XXX: we might want to check the return value self.refreshAdapter.play(eServiceReference(service.sref)) # Start Timer delay = service.duration or config.plugins.epgrefresh.interval.value epgrefreshtimer.add(EPGRefreshTimerEntry( time() + delay*60, self.refresh, nocheck = True) )
def nextService(self): # Debug print("[EPGRefresh] Maybe zap to next service") try: # Get next reference service = self.scanServices.pop(0) except IndexError: # Debug print("[EPGRefresh] Done refreshing EPG") # Clean up self.cleanUp() else: if self.myEpgCacheInstance is None and config.plugins.epgrefresh.usetimebased.value == False: # get eEPGCache instance if None and eEPGCache-signal based is used print("[EPGRefresh] - myEpgCacheInstance is None. Get it") self.myEpgCacheInstance = eEPGCache.getInstance() self.EpgCacheStateChanged_conn = self.myEpgCacheInstance.cacheState.connect( self._onCacheStateChanged) if self.isServiceProtected(service): if ( not self.forcedScan ) or config.plugins.epgrefresh.skipProtectedServices.value == "always": print("[EPGRefresh] Service is protected, skipping!") self.refresh() return # If the current adapter is unable to run in background and we are in fact in background now, # fall back to main picture if (not self.refreshAdapter.backgroundCapable and Screens.Standby.inStandby): print( "[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter" ) self.maybeStopAdapter() self.refreshAdapter = MainPictureAdapter(self.session) self.refreshAdapter.prepare() if config.plugins.epgrefresh.usetimebased.value == False: # set timeout timer for eEPGCache-signal based refresh self.epgTimeoutTimer.start(5000, True) # Play next service # XXX: we might want to check the return value self.currentServiceRef = eServiceReference(service.sref) self.refreshAdapter.play(self.currentServiceRef) ref = ServiceReference(service.sref) channelname = ref.getServiceName().replace('\xc2\x86', '').replace( '\xc2\x87', '') print("[EPGRefresh] - Service is: %s" % (str(channelname))) if config.plugins.epgrefresh.usetimebased.value: # Start Timer delay = service.duration or config.plugins.epgrefresh.interval_seconds.value epgrefreshtimer.add( EPGRefreshTimerEntry(time() + delay, self.refresh, nocheck=True))
def epgTimeout(self): if eDVBSatelliteEquipmentControl.getInstance().isRotorMoving(): # rotor is moving, timeout raised too early...check again in 5 seconds self.epgTimeoutTimer.start(5000, True) else: # epgcache-signal is not responding...maybe service/transponder is already running or cache was already updated...? step to next entry print( "[EPGRefresh] - finished channel without epg update. Reason: epgTimeout" ) epgrefreshtimer.add( EPGRefreshTimerEntry(time(), self.refresh, nocheck=True))
def epgTimeout(self): if eDVBSatelliteEquipmentControl.getInstance().isRotorMoving(): # rotor is moving, timeout raised too early...check again in 5 seconds self.epgTimeoutTimer.start(5000, True) else: # epgcache-signal is not responding...maybe service/transponder is already running or cache was already updated...? step to next entry print("[EPGRefresh] - finished channel without epg update. Reason: epgTimeout") epgrefreshtimer.add(EPGRefreshTimerEntry( time(), self.refresh, nocheck = True) )
def nextService(self): # Debug print("[EPGRefresh] Maybe zap to next service") try: # Get next reference service = self.scanServices.pop(0) except IndexError: # Debug print("[EPGRefresh] Done refreshing EPG") # Clean up self.cleanUp() else: if self.myEpgCacheInstance is None and config.plugins.epgrefresh.usetimebased.value == False: # get eEPGCache instance if None and eEPGCache-signal based is used print("[EPGRefresh] - myEpgCacheInstance is None. Get it") self.myEpgCacheInstance = eEPGCache.getInstance() self.EpgCacheStateChanged_conn = self.myEpgCacheInstance.cacheState.connect(self._onCacheStateChanged) if self.isServiceProtected(service): if (not self.forcedScan) or config.plugins.epgrefresh.skipProtectedServices.value == "always": print("[EPGRefresh] Service is protected, skipping!") self.refresh() return # If the current adapter is unable to run in background and we are in fact in background now, # fall back to main picture if (not self.refreshAdapter.backgroundCapable and Screens.Standby.inStandby): print("[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter") self.maybeStopAdapter() self.refreshAdapter = MainPictureAdapter(self.session) self.refreshAdapter.prepare() if config.plugins.epgrefresh.usetimebased.value == False: # set timeout timer for eEPGCache-signal based refresh self.epgTimeoutTimer.start(5000, True) # Play next service # XXX: we might want to check the return value self.currentServiceRef = eServiceReference(service.sref) self.refreshAdapter.play(self.currentServiceRef) ref = ServiceReference(service.sref) channelname = ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '') print("[EPGRefresh] - Service is: %s" %(str(channelname))) if config.plugins.epgrefresh.usetimebased.value: # Start Timer delay = service.duration or config.plugins.epgrefresh.interval_seconds.value epgrefreshtimer.add(EPGRefreshTimerEntry( time() + delay, self.refresh, nocheck = True) )
def refresh(self): if self.wait.isActive(): self.wait.stop() if self.forcedScan: self.nextService() else: if self.beginOfTimespan < config.plugins.epgrefresh.lastscan.value: if not self.wait.isActive(): self.isrunning = False return check_standby = False stop_service = False if Screens.Standby.inStandby: check_standby = True if not config.plugins.epgrefresh.force.value and check_standby: rec_time = self.session.nav.RecordTimer.getNextRecordingTime() interval = config.plugins.epgrefresh.interval_seconds.value if interval <= 20: interval = 25 if rec_time > 0 and (rec_time - time()) <= interval: stop_service = True if config.plugins.epgrefresh.force.value or ( check_standby and not self.session.nav.RecordTimer.isRecording() and not stop_service): self.nextService() else: if not checkTimespan(config.plugins.epgrefresh.begin.value, config.plugins.epgrefresh.end.value): print( "[EPGRefresh] Gone out of timespan while refreshing, sorry!" ) self.cleanUp() else: print( "[EPGRefresh] Box no longer in Standby or Recording started, rescheduling" ) if check_standby and config.plugins.epgrefresh.adapter.value == "main": self.session.nav.stopService() epgrefreshtimer.add( EPGRefreshTimerEntry( time() + config.plugins.epgrefresh.delay_standby.value * 60, self.refresh, nocheck=True))
def refresh(self): if self.wait.isActive(): self.wait.stop() if self.forcedScan: self.nextService() else: if self.beginOfTimespan < config.plugins.epgrefresh.lastscan.value: if not self.wait.isActive(): self.isrunning = False return check_standby = False stop_service = False if Screens.Standby.inStandby: check_standby = True if not config.plugins.epgrefresh.force.value and check_standby: rec_time = self.session.nav.RecordTimer.getNextRecordingTime() interval = config.plugins.epgrefresh.interval_seconds.value if interval <= 20: interval = 25 if rec_time > 0 and (rec_time - time()) <= interval: stop_service = True if config.plugins.epgrefresh.force.value or (check_standby and not self.session.nav.RecordTimer.isRecording() and not stop_service): self.nextService() else: if not checkTimespan( config.plugins.epgrefresh.begin.value, config.plugins.epgrefresh.end.value): print("[EPGRefresh] Gone out of timespan while refreshing, sorry!") self.cleanUp() else: print("[EPGRefresh] Box no longer in Standby or Recording started, rescheduling") if check_standby and config.plugins.epgrefresh.adapter.value == "main": self.session.nav.stopService() epgrefreshtimer.add(EPGRefreshTimerEntry( time() + config.plugins.epgrefresh.delay_standby.value*60, self.refresh, nocheck = True) )
def nextService(self): # Debug print "[EPGRefresh] Maybe zap to next service" try: # Get next reference service = self.scanServices.pop(0) except IndexError: # Debug print "[EPGRefresh] Done refreshing EPG" # Clean up self.cleanUp() else: # Play next service self.session.nav.playService(eServiceReference(service.sref)) # Start Timer delay = service.duration or config.plugins.epgrefresh.interval.value epgrefreshtimer.add(EPGRefreshTimerEntry( time() + delay*60, self.refresh, nocheck = True) )
def createWaitTimer(self): self.beginOfTimespan = time() epgrefreshtimer.add(EPGRefreshTimerEntry(time() + 30, self.prepareRefresh))
def createWaitTimer(self): self.beginOfTimespan = time() # Add wait timer to epgrefreshtimer epgrefreshtimer.add( EPGRefreshTimerEntry(time() + 30, self.prepareRefresh))