def doRestoreSettings1(self): print '[RestoreWizard] Stage 1: Check Version' if fileExists('/tmp/backupimageversion'): imageversion = file('/tmp/backupimageversion').read() print '[RestoreWizard] Backup Image:', imageversion print '[RestoreWizard] Current Image:', about.getVersionString() if imageversion == about.getVersionString( ) or isRestorableSettings(imageversion): print '[RestoreWizard] Stage 1: Image ver OK' self.doRestoreSettings2() else: print '[RestoreWizard] Stage 1: Image ver different' self.noVersion = self.session.openWithCallback( self.doNoVersion, MessageBox, _("Sorry, but the file is not compatible with this image version." ), type=MessageBox.TYPE_INFO, timeout=30, wizard=True) self.noVersion.setTitle(_("Restore Wizard")) else: print '[RestoreWizard] Stage 1: No Image ver to check' self.noVersion = self.session.openWithCallback( self.doNoVersion, MessageBox, _("Sorry, but the file is not compatible with this image version." ), type=MessageBox.TYPE_INFO, timeout=30, wizard=True) self.noVersion.setTitle(_("Restore Wizard"))
def doRestorePlugins1(self): print("[RestoreWizard] Stage 3: Check Kernel") if fileExists("/tmp/backupkernelversion") and fileExists("/tmp/backupimageversion"): imageversion = open("/tmp/backupimageversion").read() kernelversion = open("/tmp/backupkernelversion").read() print("[RestoreWizard] Backup Image:", imageversion) print("[RestoreWizard] Current Image:", about.getVersionString()) print("[RestoreWizard] Backup Kernel:", kernelversion) print("[RestoreWizard] Current Kernel:", about.getKernelVersionString()) if isRestorableKernel(kernelversion) and (imageversion == about.getVersionString() or isRestorablePlugins(imageversion)): print("[RestoreWizard] Stage 3: Kernel and image ver OK") self.doRestorePluginsTest() else: print("[RestoreWizard] Stage 3: Kernel or image ver Differant") if self.didSettingsRestore: self.NextStep = "reboot" else: self.NextStep = "noplugins" self.buildListRef.close(True) else: print("[RestoreWizard] Stage 3: No Kernel to check") if self.didSettingsRestore: self.NextStep = "reboot" else: self.NextStep = "noplugins" self.buildListRef.close(True)
def doRestorePlugins1(self): print '[RestoreWizard] Stage 3: Check Kernel' if fileExists('/tmp/backupkernelversion') and fileExists( '/tmp/backupimageversion'): imageversion = file('/tmp/backupimageversion').read() kernelversion = file('/tmp/backupkernelversion').read() print '[RestoreWizard] Backup Image:', imageversion print '[RestoreWizard] Current Image:', about.getVersionString() print '[RestoreWizard] Backup Kernel:', kernelversion print '[RestoreWizard] Current Kernel:', about.getKernelVersionString( ) if kernelversion == about.getKernelVersionString() and ( imageversion == about.getVersionString() or isRestorablePlugins(imageversion)): print '[RestoreWizard] Stage 3: Kernel and image ver OK' self.doRestorePluginsTest() else: print '[RestoreWizard] Stage 3: Kernel or image ver Differant' if self.didSettingsRestore: self.NextStep = 'reboot' else: self.NextStep = 'noplugins' self.buildListRef.close(True) else: print '[RestoreWizard] Stage 3: No Kernel to check' if self.didSettingsRestore: self.NextStep = 'reboot' else: self.NextStep = 'noplugins' self.buildListRef.close(True)
def doRestorePlugins1(self): print '[RestoreWizard] Stage 3: Check Kernel' if fileExists('/tmp/backupkernelversion') and fileExists('/tmp/backupimageversion'): imageversion = file('/tmp/backupimageversion').read() kernelversion = file('/tmp/backupkernelversion').read() print 'Backup Image:', imageversion print 'Current Image:', about.getVersionString() print 'Backup Kernel:', kernelversion print 'Current Kernel:', about.getKernelVersionString() if kernelversion == about.getKernelVersionString() and imageversion in (about.getVersionString()): print '[RestoreWizard] Stage 3: Kernel and image ver OK' self.doRestorePluginsTest() else: print '[RestoreWizard] Stage 3: Kernel or image ver Differant' if self.didSettingsRestore: self.NextStep = 'reboot' else: self.NextStep = 'noplugins' self.buildListRef.close(True) else: print '[RestoreWizard] Stage 3: No Kernel to check' if self.didSettingsRestore: self.NextStep = 'reboot' else: self.NextStep = 'noplugins' self.buildListRef.close(True)
def settingsRestoreCheck(self, result, retval, extra_args=None): if path.exists('/tmp/backupimageversion'): imageversion = file('/tmp/backupimageversion').read() print 'Backup Image:', imageversion print 'Current Image:', about.getVersionString() if imageversion == about.getVersionString(): print '[RestoreWizard] Stage 1: Image ver OK' self.keyResstore1() else: self.session.open(MessageBox, _("Sorry, but the file is not compatible with this image version."), MessageBox.TYPE_INFO, timeout=10) else: self.session.open(MessageBox, _("Sorry, but the file is not compatible with this image version."), MessageBox.TYPE_INFO, timeout=10)
def __init__(self, session, request): WebScreen.__init__(self, session, request) from WebComponents.Sources.About import About from WebComponents.Sources.Frontend import Frontend from WebComponents.Sources.Hdd import Hdd from WebComponents.Sources.Network import Network from Components.config import config from Components.About import about from Components.Sources.StaticText import StaticText try: from Tools.StbHardware import getFPVersion except: from Tools.DreamboxHardware import getFPVersion from Tools.HardwareInfo import HardwareInfo hw = HardwareInfo() self["About"] = About(session) self["Network"] = Network() self["Hdd"] = Hdd() self["Frontends"] = Frontend() try: from enigma import getEnigmaVersionString from boxbranding import getImageVersion, getImageBuild self["EnigmaVersion"] = StaticText(getEnigmaVersionString()) self["ImageVersion"] = StaticText(getImageVersion() + '.' + getImageBuild()) except: self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString()) self["ImageVersion"] = StaticText(about.getVersionString()) self["WebIfVersion"] = StaticText( config.plugins.Webinterface.version.value) self["FpVersion"] = StaticText(str(getFPVersion())) self["DeviceName"] = StaticText(hw.get_device_name())
def doRestoreSettingsCheck(self): print '[RestoreWizard] Stage 1: Check Version' if fileExists('/tmp/backupimageversion'): imageversion = file('/tmp/backupimageversion').read() print 'Backup Image:', imageversion print 'Current Image:', about.getVersionString() if imageversion == about.getVersionString(): print '[RestoreWizard] Stage 1: Image ver OK' self.NextStep = 'execsettingsrestore' else: print '[RestoreWizard] Stage 1: Image ver Different' self.NextStep = 'incompatsettingsquestion' else: print '[RestoreWizard] Stage 1: No Image ver to check' self.NextStep = 'incompatsettingsquestion' self.buildListRef.close(True)
def __init__(self, session, request): WebScreen.__init__(self, session, request) from WebComponents.Sources.About import About from WebComponents.Sources.Frontend import Frontend from WebComponents.Sources.Hdd import Hdd from WebComponents.Sources.Network import Network from Components.config import config from Components.About import about from Components.Sources.StaticText import StaticText try: from Tools.StbHardware import getFPVersion except: from Tools.DreamboxHardware import getFPVersion from Tools.HardwareInfo import HardwareInfo hw = HardwareInfo() self["About"] = About(session) self["Network"] = Network() self["Hdd"] = Hdd() self["Frontends"] = Frontend() try: from enigma import getImageVersionString, getBuildVersionString, getEnigmaVersionString self["EnigmaVersion"] = StaticText(getEnigmaVersionString()) self["ImageVersion"] = StaticText(getVersionString() + '.' + getBuildVersionString()) except: self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString()) self["ImageVersion"] = StaticText(about.getVersionString()) self["WebIfVersion"] = StaticText(config.plugins.Webinterface.version.value) self["FpVersion"] = StaticText(str(getFPVersion())) self["DeviceName"] = StaticText(hw.get_device_name())
def doRestoreSettingsCheck(self): print '[RestoreWizard] Stage 1: Check Version' if fileExists('/tmp/backupimageversion'): imageversion = file('/tmp/backupimageversion').read() print 'Backup Image:',imageversion print 'Current Image:',about.getVersionString() if imageversion == about.getVersionString(): print '[RestoreWizard] Stage 1: Image ver OK' self.NextStep = 'execsettingsrestore' else: print '[RestoreWizard] Stage 1: Image ver Different' self.NextStep = 'incompatsettingsquestion' else: print '[RestoreWizard] Stage 1: No Image ver to check' self.NextStep = 'incompatsettingsquestion' self.buildListRef.close(True)
def getInfo(): try: from Tools.HardwareInfoVu import HardwareInfoVu DeviceName = HardwareInfoVu().get_device_name() except: try: from Tools.HardwareInfo import HardwareInfo DeviceName = HardwareInfo().get_device_name() except: try: file = open("/proc/stb/info/model", "r") DeviceName = file.readline().strip() file.close() except: DeviceName = "unknown" BoxID = getMac() try: from Components.About import about EnigmaVersion = about.getEnigmaVersionString() ImageVersion = about.getVersionString() except: EnigmaVersion = "unknown" ImageVersion = "unknown" Hash = hashlib.sha512(BoxID.lower()).hexdigest().lower() OUI = BoxID[0:8] return [DeviceName, Hash, OUI, EnigmaVersion, ImageVersion]
def doRestoreSettings1(self): print '[RestoreWizard] Stage 1: Check Version' if fileExists('/tmp/backupimageversion'): imageversion = file('/tmp/backupimageversion').read() print 'Backup Image:', imageversion print 'Current Image:', about.getVersionString() if imageversion in (about.getVersionString(), 'Zeus', 'Helios', 'Apollo', 'Hades', '3.2'): print '[RestoreWizard] Stage 1: Image ver OK' self.doRestoreSettings2() else: print '[RestoreWizard] Stage 1: Image ver Differant' self.noVersion = self.session.openWithCallback(self.doNoVersion, MessageBox, _("Sorry, but the file is not compatible with this image version."), type=MessageBox.TYPE_INFO, timeout=30, wizard=True) self.noVersion.setTitle(_("Restore Wizard")) else: print '[RestoreWizard] Stage 1: No Image ver to check' self.noVersion = self.session.openWithCallback(self.doNoVersion, MessageBox, _("Sorry, but the file is not compatible with this image version."), type=MessageBox.TYPE_INFO, timeout=30, wizard=True) self.noVersion.setTitle(_("Restore Wizard"))
def getImageVersionString(cls): from Components.About import about if hasattr(about,'getVTiVersionString'): creator = about.getVTiVersionString() else: creator = about.getEnigmaVersionString() version = about.getVersionString() return ' / '.join((creator, version))
def updateStatus(self): print "[TVCharts] Status Update ..." self.DBStatusTimer.stop() if not config.plugins.tvcharts.enabled.value or Screens.Standby.inStandby: return # Get Channelname sref = self.session.nav.getCurrentlyPlayingServiceReference() if sref is not None: ref = eServiceReference(sref.toString()) ref.setName("") serviceHandler = eServiceCenter.getInstance() info = serviceHandler.info(ref) channel_name = info and info.getName(ref).replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8") or "" self.serviceref = ref.toString() else: channel_name = "" self.serviceref = "" # Get Event Info service = self.session.nav.getCurrentService() info = service and service.info() event = info and info.getEvent(0) event_name = event and event.getEventName() or "" event_description = "" event_begin = 0 if event is not None: curEvent = parseEvent(event) event_begin = int(curEvent[0])+(config.recording.margin_before.value*60) event_description = event.getExtendedDescription() # Get Box Info self.BoxID = iNetwork.getAdapterAttribute("eth0", "mac") self.DeviceName = HardwareInfo().get_device_name() self.EnigmaVersion = about.getEnigmaVersionString() self.ImageVersion = about.getVersionString() # Get TimerList self.timerlist = "" if config.plugins.tvcharts.submittimers.value and self.LastTimerlistUpdate <= (time()-1800): self.LastTimerlistUpdate = time() try: for timer in self.recordtimer.timer_list: if timer.disabled == 0 and timer.justplay == 0: self.timerlist += "%s|%s|%s|%s|%s|%s\n" % (timer.eit,str(int(timer.begin)+(config.recording.margin_before.value*60)), str(int(timer.end)-(config.recording.margin_after.value*60)), str(timer.service_ref), timer.name, timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8")) except Exception: print "[TVCharts] Error loading timers!" # Status Update getPage(url='http://www.dreambox-plugins.de/feeds/TVCharts/status.php', method='POST', headers={'Content-Type':'application/x-www-form-urlencoded'}, postdata=urlencode({'boxid' : self.BoxID, 'devicename' : self.DeviceName, 'imageversion' : self.ImageVersion, 'enigmaversion' : self.EnigmaVersion, 'lastchannel' : channel_name, 'lastevent' : event_name, 'eventdescr' : event_description, 'lastbegin' : event_begin, 'lastserviceref' : self.serviceref, 'timerlist' : self.timerlist})).addErrback(self.updateError) # Restart Timer self.DBStatusTimer.start(900000, True)
def getImageVersionString(cls): from Components.About import about creator = "n/a" version = "n/a" if hasattr(about,'getVTiVersionString'): creator = about.getVTiVersionString() else: creator = about.getEnigmaVersionString() version = about.getVersionString() return ' / '.join((creator, version))
def getInstance(): global instance if instance is None: initLog() from plugin import VERSION logDebug(" SERIESPLUGIN NEW INSTANCE " + VERSION) try: from Tools.HardwareInfo import HardwareInfo logDebug( " DeviceName " + HardwareInfo().get_device_name().strip() ) except: sys.exc_clear() try: from Components.About import about logDebug( " EnigmaVersion " + about.getEnigmaVersionString().strip() ) logDebug( " ImageVersion " + about.getVersionString().strip() ) except: sys.exc_clear() try: #http://stackoverflow.com/questions/1904394/python-selecting-to-read-the-first-line-only logDebug( " dreamboxmodel " + open("/proc/stb/info/model").readline().strip() ) logDebug( " imageversion " + open("/etc/image-version").readline().strip() ) logDebug( " imageissue " + open("/etc/issue.net").readline().strip() ) except: sys.exc_clear() try: for key, value in config.plugins.seriesplugin.dict().iteritems(): logDebug( " config..%s = %s" % (key, str(value.value)) ) except Exception as e: sys.exc_clear() global CompiledRegexpReplaceChars try: if config.plugins.seriesplugin.replace_chars.value: CompiledRegexpReplaceChars = re.compile('['+config.plugins.seriesplugin.replace_chars.value.replace("\\", "\\\\\\\\")+']') except: logInfo( " Config option 'Replace Chars' is no valid regular expression" ) CompiledRegexpReplaceChars = re.compile("[:\!/\\,\(\)'\?]") instance = SeriesPlugin() logDebug( " ", strftime("%a, %d %b %Y %H:%M:%S", localtime()) ) return instance
def __init__(self, session, request): WebScreen.__init__(self, session, request) from WebComponents.Sources.Network import Network from WebComponents.Sources.Hdd import Hdd from WebComponents.Sources.Frontend import Frontend from Components.config import config from Components.About import about from Components.Sources.StaticText import StaticText from Tools.DreamboxHardware import getFPVersion from Tools.HardwareInfo import HardwareInfo hw = HardwareInfo() self["Network"] = Network() self["Hdd"] = Hdd() self["Frontends"] = Frontend() self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString()) self["ImageVersion"] = StaticText(about.getVersionString()) self["WebIfVersion"] = StaticText(config.plugins.Webinterface.version.value) self["FpVersion"] = StaticText(str(getFPVersion())) self["DeviceName"] = StaticText("\t%s %s\n" % (getMachineBrand(), getMachineName()))
def Stage3(self): print '[BackupManager] Restoring Stage 3: Kernel Version/Feeds Checks' if self.feeds == 'OK': print '[BackupManager] Restoring Stage 3: Feeds are OK' if path.exists('/tmp/backupkernelversion') and path.exists('/tmp/backupimageversion'): kernelversion = file('/tmp/backupkernelversion').read() imageversion = file('/tmp/backupimageversion').read() if kernelversion == about.getKernelVersionString() and imageversion == about.getVersionString(): # print '[BackupManager] Restoring Stage 3: Kernel Version is same as backup' self.kernelcheck = True self.Console.ePopen('opkg list-installed', self.Stage3Complete) else: print '[BackupManager] Restoring Stage 3: Kernel or Image Version does not match, exiting' self.kernelcheck = False self.Stage6() else: print '[BackupManager] Restoring Stage 3: Kernel or Image Version check failed' self.kernelcheck = False self.Stage6() elif self.feeds == 'DOWN': print '[BackupManager] Restoring Stage 3: Feeds are down, plugin restore not possible' self.kernelcheck = False AddPopupWithCallback(self.Stage6, _("Sorry feeds are down for maintenance, Please try again later."), MessageBox.TYPE_INFO, 15, NOPLUGINS ) elif self.feeds == 'BAD': print '[BackupManager] Restoring Stage 3: no network connection, plugin restore not possible' self.kernelcheck = False AddPopupWithCallback(self.Stage6, _("Your %s %s is not connected to the internet, please check your network settings and try again.") % (getMachineBrand(), getMachineName()), MessageBox.TYPE_INFO, 15, NOPLUGINS ) else: print '[BackupManager] Restoring Stage 3: Feeds state is unknown aborting' self.Stage6()
#!/usr/bin/python # -*- coding: utf-8 -*- from __future__ import print_function from . import _ from os import listdir, path, stat from Components.About import about from Components.Console import Console from Components.Pixmap import Pixmap from Screens.WizardLanguage import WizardLanguage from Screens.Rc import Rc from Screens.MessageBox import MessageBox from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS from boxbranding import getKernelVersion currentkernelversion = getKernelVersion() currentimageversion = about.getVersionString() class RestoreWizard(WizardLanguage, Rc): def __init__(self, session): self.xmlfile = resolveFilename( SCOPE_PLUGINS, "SystemPlugins/Vision/restorewizard.xml") WizardLanguage.__init__(self, session, showSteps=False, showStepSlider=False) Rc.__init__(self) self.session = session self["wizard"] = Pixmap() self.selectedAction = None self.NextStep = None
def updateStatus(self): print "[TVCharts] Status Update ..." self.DBStatusTimer.stop() if not config.plugins.tvcharts.enabled.value or Screens.Standby.inStandby: return # Get Channelname sref = self.session.nav.getCurrentlyPlayingServiceReference() if sref is not None: ref = eServiceReference(sref.toString()) ref.setName("") serviceHandler = eServiceCenter.getInstance() info = serviceHandler.info(ref) channel_name = info and info.getName(ref).replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8") or "" self.serviceref = ref.toString() else: channel_name = "" self.serviceref = "" # Get Event Info service = self.session.nav.getCurrentService() info = service and service.info() event = info and info.getEvent(0) event_name = event and event.getEventName() or "" event_description = "" event_begin = 0 if event is not None: curEvent = parseEvent(event) event_begin = int(curEvent[0])+(config.recording.margin_before.value*60) event_description = event.getExtendedDescription() # Get Box Info ifaces = iNetworkInfo.getConfiguredInterfaces() iface = None if len(ifaces) > 0: iface = ifaces.get( "eth0", ifaces.get(ifaces.keys()[0]) ) if not iface: return self.BoxID = iface.ethernet.mac self.DeviceName = HardwareInfo().get_device_name() self.EnigmaVersion = about.getEnigmaVersionString() self.ImageVersion = about.getVersionString() # Get TimerList self.timerlist = "" if config.plugins.tvcharts.submittimers.value and self.LastTimerlistUpdate <= (time()-1800): self.LastTimerlistUpdate = time() try: for timer in self.recordtimer.timer_list: if timer.disabled == 0 and timer.justplay == 0: self.timerlist += "%s|%s|%s|%s|%s|%s|%s\n" % (timer.eit,str(int(timer.begin)+(config.recording.margin_before.value*60)), str(int(timer.end)-(config.recording.margin_after.value*60)), str(timer.service_ref), timer.name, timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8"), timer.repeated) except Exception: print "[TVCharts] Error loading timers!" # Get Pluginlist if config.plugins.tvcharts.submitplugins.value and self.pluginlist == "": try: os_system("opkg list_installed | grep enigma2-plugin- > /tmp/plugins.txt") for plugin in open('/tmp/plugins.txt', 'r'): self.pluginlist += plugin[0:plugin.find(' - ')]+"\n" os_system("rm -f /tmp/plugins.txt") except Exception: print "[TVCharts] Error loading plugins!" # Status Update getPage(url='http://www.dreambox-plugins.de/feeds/TVCharts/status.php', agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)", timeout=60, method='POST', headers={'Content-Type':'application/x-www-form-urlencoded'}, postdata=urlencode({'boxid' : self.BoxID, 'devicename' : self.DeviceName, 'imageversion' : self.ImageVersion, 'enigmaversion' : self.EnigmaVersion, 'lastchannel' : channel_name, 'lastevent' : event_name, 'eventdescr' : event_description, 'lastbegin' : event_begin, 'lastserviceref' : self.serviceref, 'timerlist' : self.timerlist, 'pluginlist' : self.pluginlist})).addErrback(self.updateError) # Restart Timer self.DBStatusTimer.start(900000, True)
def getInstance(): global instance if instance is None: from plugin import VERSION splog("SP: SERIESPLUGIN NEW INSTANCE " + VERSION) try: from Tools.HardwareInfo import HardwareInfo splog( "SP: DeviceName " + HardwareInfo().get_device_name().strip() ) #from os import uname #uname()[0]'Linux' #uname()[1]'dm7080' #uname()[2]'3.4-3.0-dm7080' #uname()[3]'#13 SMP Thu Dec 4 00:25:51 UTC 2014' #uname()[4]'mips' except: sys.exc_clear() try: from Components.About import about splog( "SP: EnigmaVersion " + about.getEnigmaVersionString().strip() ) splog( "SP: ImageVersion " + about.getVersionString().strip() ) except: sys.exc_clear() try: #http://stackoverflow.com/questions/1904394/python-selecting-to-read-the-first-line-only splog( "SP: dreamboxmodel " + open("/proc/stb/info/model").readline().strip() ) splog( "SP: imageversion " + open("/etc/image-version").readline().strip() ) splog( "SP: imageissue " + open("/etc/issue.net").readline().strip() ) except: sys.exc_clear() try: for key, value in config.plugins.seriesplugin.dict().iteritems(): splog( "SP: config..%s = %s" % (key, str(value.value)) ) except Exception as e: sys.exc_clear() #try: # if os.path.exists(SERIESPLUGIN_PATH): # dirList = os.listdir(SERIESPLUGIN_PATH) # for fname in dirList: # splog( "SP: ", fname, datetime.fromtimestamp( int( os.path.getctime( os.path.join(SERIESPLUGIN_PATH,fname) ) ) ).strftime('%Y-%m-%d %H:%M:%S') ) #except Exception as e: # sys.exc_clear() #try: # if os.path.exists(AUTOTIMER_PATH): # dirList = os.listdir(AUTOTIMER_PATH) # for fname in dirList: # splog( "SP: ", fname, datetime.fromtimestamp( int( os.path.getctime( os.path.join(AUTOTIMER_PATH,fname) ) ) ).strftime('%Y-%m-%d %H:%M:%S') ) #except Exception as e: # sys.exc_clear() instance = SeriesPlugin() #instance[os.getpid()] = SeriesPlugin() splog( "SP: ", strftime("%a, %d %b %Y %H:%M:%S", localtime()) ) return instance
def updateStatus(self): print "[TVCharts] Status Update ..." self.DBStatusTimer.stop() if not config.plugins.tvcharts.enabled.value or Screens.Standby.inStandby: return # Get Channelname sref = self.session.nav.getCurrentlyPlayingServiceReference() if sref is not None: ref = eServiceReference(sref.toString()) ref.setName("") serviceHandler = eServiceCenter.getInstance() info = serviceHandler.info(ref) channel_name = ( info and info.getName(ref) .replace("\xc2\x86", "") .replace("\xc2\x87", "") .decode("utf-8", "ignore") .encode("utf-8") or "" ) self.serviceref = ref.toString() else: channel_name = "" self.serviceref = "" # Get Event Info service = self.session.nav.getCurrentService() info = service and service.info() event = info and info.getEvent(0) event_name = event and event.getEventName() or "" event_description = "" event_begin = 0 if event is not None: curEvent = parseEvent(event) event_begin = int(curEvent[0]) + (config.recording.margin_before.getValue() * 60) event_description = event.getExtendedDescription() # Get Box Info self.BoxID = iNetwork.getAdapterAttribute("eth0", "mac") self.DeviceName = HardwareInfo().get_device_name() try: from enigma import getEnigmaVersionString from boxbranding import getImageVersion, getImageBuild self.EnigmaVersion = getEnigmaVersionString() self.ImageVersion = getImageVersion() + "." + getImageBuild() except: self.EnigmaVersion = about.getEnigmaVersionString() self.ImageVersion = about.getVersionString() # Get TimerList self.timerlist = "" if config.plugins.tvcharts.submittimers.value and self.LastTimerlistUpdate <= (time() - 1800): self.LastTimerlistUpdate = time() try: for timer in self.recordtimer.timer_list: if timer.disabled == 0 and timer.justplay == 0: self.timerlist += "%s|%s|%s|%s|%s|%s|%s\n" % ( timer.eit, str(int(timer.begin) + (config.recording.margin_before.getValue() * 60)), str(int(timer.end) - (config.recording.margin_after.getValue() * 60)), str(timer.service_ref), timer.name, timer.service_ref.getServiceName() .replace("\xc2\x86", "") .replace("\xc2\x87", "") .decode("utf-8", "ignore") .encode("utf-8"), timer.repeated, ) except Exception: print "[TVCharts] Error loading timers!" # Get Pluginlist if config.plugins.tvcharts.submitplugins.value and self.pluginlist == "": try: os_system("opkg list_installed | grep enigma2-plugin- > /tmp/plugins.txt") for plugin in open("/tmp/plugins.txt", "r"): self.pluginlist += plugin[0 : plugin.find(" - ")] + "\n" os_system("rm -f /tmp/plugins.txt") except Exception: print "[TVCharts] Error loading plugins!" # Status Update getPage( url="http://www.dreambox-plugins.de/feeds/TVCharts/status.php", agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)", timeout=60, method="POST", headers={"Content-Type": "application/x-www-form-urlencoded"}, postdata=urlencode( { "boxid": self.BoxID, "devicename": self.DeviceName, "imageversion": self.ImageVersion, "enigmaversion": self.EnigmaVersion, "lastchannel": channel_name, "lastevent": event_name, "eventdescr": event_description, "lastbegin": event_begin, "lastserviceref": self.serviceref, "timerlist": self.timerlist, "pluginlist": self.pluginlist, } ), ).addErrback(self.updateError) # Restart Timer self.DBStatusTimer.start(900000, True)
def updateStatus(self): print("[TVCharts] Status Update ...") self.DBStatusTimer.stop() if not config.plugins.tvcharts.enabled.value or Screens.Standby.inStandby: return # Get Channelname sref = self.session.nav.getCurrentlyPlayingServiceReference() if sref is not None: ref = eServiceReference(sref.toString()) ref.setName("") serviceHandler = eServiceCenter.getInstance() info = serviceHandler.info(ref) channel_name = info and info.getName(ref).replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8") or "" self.serviceref = ref.toString() else: channel_name = "" self.serviceref = "" # Get Event Info service = self.session.nav.getCurrentService() info = service and service.info() event = info and info.getEvent(0) event_name = event and event.getEventName() or "" event_description = "" event_begin = 0 if event is not None: curEvent = parseEvent(event) event_begin = int(curEvent[0])+(config.recording.margin_before.getValue()*60) event_description = event.getExtendedDescription() # Get Box Info self.BoxID = iNetwork.getAdapterAttribute("eth0", "mac") self.DeviceName = getBoxType() try: from enigma import getEnigmaVersionString from boxbranding import getImageVersion, getImageBuild self.EnigmaVersion = getEnigmaVersionString() self.ImageVersion = getImageVersion() + '.' + getImageBuild() except: self.EnigmaVersion = about.getEnigmaVersionString() self.ImageVersion = about.getVersionString() # Get TimerList self.timerlist = "" if config.plugins.tvcharts.submittimers.value and self.LastTimerlistUpdate <= (time()-1800): self.LastTimerlistUpdate = time() try: for timer in self.recordtimer.timer_list: if timer.disabled == 0 and timer.justplay == 0: self.timerlist += "%s|%s|%s|%s|%s|%s|%s\n" % (timer.eit, str(int(timer.begin)+(config.recording.margin_before.getValue()*60)), str(int(timer.end)-(config.recording.margin_after.getValue()*60)), str(timer.service_ref), timer.name, timer.service_ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8"), timer.repeated) except Exception: print("[TVCharts] Error loading timers!") # Get Pluginlist if config.plugins.tvcharts.submitplugins.value and self.pluginlist == "": try: Console().ePopen("opkg list_installed | grep enigma2-plugin- > /tmp/plugins.txt") for plugin in open('/tmp/plugins.txt', 'r'): self.pluginlist += plugin[0:plugin.find(' - ')]+"\n" Console().ePopen("rm -f /tmp/plugins.txt") except Exception: print("[TVCharts] Error loading plugins!") # Status Update getPage(url='http://www.dreambox-plugins.de/feeds/TVCharts/status.php', agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)", timeout=60, method='POST', headers={'Content-Type':'application/x-www-form-urlencoded'}, postdata=urlencode({'boxid' : self.BoxID, 'devicename' : self.DeviceName, 'imageversion' : self.ImageVersion, 'enigmaversion' : self.EnigmaVersion, 'lastchannel' : channel_name, 'lastevent' : event_name, 'eventdescr' : event_description, 'lastbegin' : event_begin, 'lastserviceref' : self.serviceref, 'timerlist' : self.timerlist, 'pluginlist' : self.pluginlist})).addErrback(self.updateError) # Restart Timer self.DBStatusTimer.start(900000, True)
def getInstance(): global instance if instance is None: log.reinit() from plugin import VERSION log.debug(" SERIESPLUGIN NEW INSTANCE " + VERSION) log.debug( " ", strftime("%a, %d %b %Y %H:%M:%S", localtime()) ) try: from Tools.HardwareInfo import HardwareInfo log.debug( " DeviceName " + HardwareInfo().get_device_name().strip() ) except: sys.exc_clear() try: from Components.About import about log.debug( " EnigmaVersion " + about.getEnigmaVersionString().strip() ) log.debug( " ImageVersion " + about.getVersionString().strip() ) except: sys.exc_clear() try: #http://stackoverflow.com/questions/1904394/python-selecting-to-read-the-first-line-only log.debug( " dreamboxmodel " + open("/proc/stb/info/model").readline().strip() ) log.debug( " imageversion " + open("/etc/image-version").readline().strip() ) log.debug( " imageissue " + open("/etc/issue.net").readline().strip() ) except: sys.exc_clear() try: for key, value in config.plugins.seriesplugin.dict().iteritems(): log.debug( " config..%s = %s" % (key, str(value.value)) ) except Exception as e: sys.exc_clear() global CompiledRegexpReplaceChars try: if config.plugins.seriesplugin.replace_chars.value: CompiledRegexpReplaceChars = re.compile('['+config.plugins.seriesplugin.replace_chars.value.replace("\\", "\\\\\\\\")+']') except: log.exception( " Config option 'Replace Chars' is no valid regular expression" ) CompiledRegexpReplaceChars = re.compile("[:\!/\\,\(\)'\?]") # Check autotimer try: from Plugins.Extensions.AutoTimer.plugin import autotimer deprecated = False try: from Plugins.Extensions.AutoTimer.plugin import AUTOTIMER_VERSION if int(AUTOTIMER_VERSION[0]) < 4: deprecated = True except ImportError: AUTOTIMER_VERSION = "deprecated" deprecated = True log.debug( " AutoTimer: " + AUTOTIMER_VERSION ) if deprecated: log.warning( _("Your autotimer is deprecated") + "\n" +_("Please update it") ) except ImportError: log.debug( " AutoTimer: Not found" ) # Check dependencies start = True from imp import find_module dependencies = ["difflib", "json", "re", "xml", "xmlrpclib"] for dependency in dependencies: try: find_module(dependency) except ImportError: start = False log.error( _("Error missing dependency") + "\n" + "python-"+dependency + "\n\n" +_("Please install missing python paket manually") ) if start: instance = SeriesPlugin() return instance