Beispiel #1
0
 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"))
Beispiel #2
0
	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)
Beispiel #3
0
 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)
Beispiel #4
0
	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)
Beispiel #5
0
	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)
Beispiel #6
0
    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())
Beispiel #7
0
 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())
Beispiel #9
0
	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)
Beispiel #10
0
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]
Beispiel #11
0
	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"))
Beispiel #12
0
	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
Beispiel #16
0
	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()))
Beispiel #17
0
	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
Beispiel #19
0
	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
Beispiel #21
0
    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)
Beispiel #22
0
	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:
		
		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
Beispiel #24
0
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