Beispiel #1
0
	def prepareRefresh(self):
		print("[EPGRefresh] About to start refreshing EPG")

		# Maybe read in configuration
		try:
			self.readConfiguration()
		except Exception as e:
			print("[EPGRefresh] Error occured while reading in configuration:", e)

		self.scanServices = self.generateServicelist(self.services[0], self.services[1])

		# Debug
		print("[EPGRefresh] Services we're going to scan:", ', '.join([repr(x) for x in self.scanServices]))

		self.maybeStopAdapter()
		# NOTE: start notification is handled in adapter initializer
		if config.plugins.epgrefresh.adapter.value.startswith("pip"):
			hidden = config.plugins.epgrefresh.adapter.value == "pip_hidden"
			refreshAdapter = PipAdapter(self.session, hide=hidden)
		elif config.plugins.epgrefresh.adapter.value.startswith("record"):
			refreshAdapter = RecordAdapter(self.session)
		else:
			refreshAdapter = MainPictureAdapter(self.session)

		if (not refreshAdapter.backgroundCapable and Screens.Standby.inStandby) or not refreshAdapter.prepare():
			print("[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter")
			refreshAdapter = MainPictureAdapter(self.session)
			refreshAdapter.prepare()
		self.refreshAdapter = refreshAdapter

		self.refresh()
 def prepareRefresh(self):
     print("[EPGRefresh] About to start refreshing EPG")
     try:
         self.readConfiguration()
     except Exception as e:
         print("[EPGRefresh] Error occured while reading in configuration:",
               e)
     self.scanServices = self.generateServicelist(self.services[0],
                                                  self.services[1])
     print("[EPGRefresh] Services we're going to scan:",
           ', '.join([repr(x) for x in self.scanServices]))
     self.maybeStopAdapter()
     if config.plugins.epgrefresh.adapter.value == "main":
         refreshAdapter = MainPictureAdapter(self.session)
     elif config.plugins.epgrefresh.adapter.value == "record":
         refreshAdapter = RecordAdapter(self.session)
     else:
         if config.plugins.epgrefresh.adapter.value == "pip":
             hidden = False
         elif config.plugins.epgrefresh.adapter.value == "pip_hidden":
             hidden = True
         refreshAdapter = PipAdapter(self.session, hide=hidden)
     if (not refreshAdapter.backgroundCapable
             and Screens.Standby.inStandby) or not refreshAdapter.prepare():
         print(
             "[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter"
         )
         refreshAdapter = MainPictureAdapter(self.session)
         refreshAdapter.prepare()
     self.refreshAdapter = refreshAdapter
     self.isrunning = True
     self.refresh()
     print("[EPGRefresh] pre start...")
Beispiel #3
0
    def prepareRefresh(self):
        if not self.isRefreshAllowed():
            return
        self.isrunning = True
        print("[EPGRefresh] About to start refreshing EPG")

        self._initFinishTodos()
        # Maybe read in configuration
        try:
            self.readConfiguration()
        except Exception as e:
            print("[EPGRefresh] Error occured while reading in configuration:",
                  e)

        self.scanServices = self.generateServicelist(self.services[0],
                                                     self.services[1])

        # Debug
        print("[EPGRefresh] Services we're going to scan:",
              ', '.join([repr(x) for x in self.scanServices]))

        self.maybeStopAdapter()
        # NOTE: start notification is handled in adapter initializer
        if config.plugins.epgrefresh.adapter.value.startswith("pip"):
            hidden = config.plugins.epgrefresh.adapter.value == "pip_hidden"
            refreshAdapter = PipAdapter(self.session, hide=hidden)
        elif config.plugins.epgrefresh.adapter.value.startswith("record"):
            refreshAdapter = RecordAdapter(self.session)
        else:
            refreshAdapter = MainPictureAdapter(self.session)

        if (not refreshAdapter.backgroundCapable
                and Screens.Standby.inStandby) or not refreshAdapter.prepare():
            print(
                "[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter"
            )
            refreshAdapter = MainPictureAdapter(self.session)
            refreshAdapter.prepare()
        self.refreshAdapter = refreshAdapter

        try:
            from plugin import AdjustExtensionsmenu, extStopDescriptor, extPendingServDescriptor, extRunDescriptor
            AdjustExtensionsmenu(True, extPendingServDescriptor)
            AdjustExtensionsmenu(True, extStopDescriptor)
            AdjustExtensionsmenu(False, extRunDescriptor)
        except:
            print(
                "[EPGRefresh] Error while adding 'Stop Running EPG-Refresh' to Extensionmenu"
            )
            print_exc(file=stdout)
        if config.plugins.epgrefresh.erase.value:
            print("[EPGRefresh] flushing EPG cache...")
            from enigma import eEPGCache
            epgcache = eEPGCache.getInstance()
            epgcache.flushEPG()
        self.refresh()
    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))
Beispiel #5
0
 def nextService(self):
     print("[EPGRefresh] Maybe zap to next service")
     try:
         service = self.scanServices.pop(0)
     except IndexError:
         print("[EPGRefresh] Done refreshing EPG")
         self.cleanUp()
     else:
         Notifications.RemovePopup("Parental control")
         if self.isServiceProtected(service):
             skipProtectedServices = config.plugins.epgrefresh.skipProtectedServices.value
             adapter = config.plugins.epgrefresh.adapter.value
             if (not self.forcedScan
                 ) or skipProtectedServices == "always" or (
                     self.forcedScan and Screens.Standby.inStandby is None
                     and skipProtectedServices == "bg_only" and
                     (adapter == "pip" or adapter == "main")):
                 print("[EPGRefresh] Service is protected, skipping!")
                 self.refresh()
                 return
         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()
         self.refreshAdapter.play(eServiceReference(service.sref))
         delay = service.duration or config.plugins.epgrefresh.interval_seconds.value
         if not delay:
             delay = 20
         if not self.wait.isActive():
             self.wait.start(int(delay * 1000), 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))
Beispiel #7
0
    def prepareRefresh(self):
        print("[EPGRefresh] About to start refreshing EPG")

        # Maybe read in configuration
        try:
            self.readConfiguration()
        except Exception as e:
            print("[EPGRefresh] Error occured while reading in configuration:",
                  e)

        # This will hold services which are not explicitely in our list
        additionalServices = []
        additionalBouquets = []

        # See if we are supposed to read in autotimer services
        if config.plugins.epgrefresh.inherit_autotimer.value:
            removeInstance = False
            try:
                # Import Instance
                from Plugins.Extensions.AutoTimer.plugin import autotimer

                if autotimer is None:
                    removeInstance = True
                    # Create an instance
                    from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer
                    autotimer = AutoTimer()

                # Read in configuration
                autotimer.readXml()
            except Exception as e:
                print("[EPGRefresh] Could not inherit AutoTimer Services:", e)
            else:
                # Fetch services
                for timer in autotimer.getEnabledTimerList():
                    additionalServices.extend(
                        [EPGRefreshService(x, None) for x in timer.services])
                    additionalBouquets.extend(
                        [EPGRefreshService(x, None) for x in timer.bouquets])
            finally:
                # Remove instance if there wasn't one before
                if removeInstance:
                    autotimer = None

        scanServices = []
        channelIdList = []
        self.addServices(self.services[0], scanServices, channelIdList)

        serviceHandler = eServiceCenter.getInstance()
        for bouquet in self.services[1].union(additionalBouquets):
            myref = eServiceReference(bouquet.sref)
            list = serviceHandler.list(myref)
            if list is not None:
                while 1:
                    s = list.getNext()
                    # TODO: I wonder if its sane to assume we get services here (and not just new lists)
                    if s.valid():
                        additionalServices.append(
                            EPGRefreshService(s.toString(), None))
                    else:
                        break
        del additionalBouquets[:]

        self.addServices(additionalServices, scanServices, channelIdList)
        del additionalServices[:]

        # Debug
        print("[EPGRefresh] Services we're going to scan:",
              ', '.join([repr(x) for x in scanServices]))

        self.maybeStopAdapter()
        # NOTE: start notification is handled in adapter initializer
        if config.plugins.epgrefresh.adapter.value.startswith("pip"):
            hidden = config.plugins.epgrefresh.adapter.value == "pip_hidden"
            refreshAdapter = PipAdapter(self.session, hide=hidden)
        elif config.plugins.epgrefresh.adapter.value.startswith("record"):
            refreshAdapter = RecordAdapter(self.session)
        else:
            refreshAdapter = MainPictureAdapter(self.session)

        if (not refreshAdapter.backgroundCapable
                and Screens.Standby.inStandby) or not refreshAdapter.prepare():
            print(
                "[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter"
            )
            refreshAdapter = MainPictureAdapter(self.session)
            refreshAdapter.prepare()
        self.refreshAdapter = refreshAdapter

        self.scanServices = scanServices
        self.refresh()
Beispiel #8
0
				scanServices.append(scanservice)
				channelIdList.append(channelID)
		del additionalServices[:]

		# Debug
		print "[EPGRefresh] Services we're going to scan:", ', '.join([repr(x) for x in scanServices])

		self.maybeStopAdapter()
		# NOTE: start notification is handled in adapter initializer
		if config.plugins.epgrefresh.adapter.value.startswith("pip"):
			hidden = config.plugins.epgrefresh.adapter.value == "pip_hidden"
			refreshAdapter = PipAdapter(self.session, hide=hidden)
		elif config.plugins.epgrefresh.adapter.value.startswith("record"):
			refreshAdapter = RecordAdapter(self.session)
		else:
			refreshAdapter = MainPictureAdapter(self.session)

		if (not refreshAdapter.backgroundCapable and Screens.Standby.inStandby) or not refreshAdapter.prepare():
			print "[EPGRefresh] Adapter is not able to run in background or not available, falling back to MainPictureAdapter"
			refreshAdapter = MainPictureAdapter(self.session)
			refreshAdapter.prepare()
		self.refreshAdapter = refreshAdapter

		self.scanServices = scanServices
		self.refresh()

	def cleanUp(self):
		config.plugins.epgrefresh.lastscan.value = int(time())
		config.plugins.epgrefresh.lastscan.save()

		# Eventually force autotimer to parse epg