diff options
| author | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2008-06-02 12:08:26 +0000 |
|---|---|---|
| committer | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2008-06-02 12:08:26 +0000 |
| commit | 1c6c579ff6302c3301eb21bd0933d5ede824a384 (patch) | |
| tree | 5e91e141aff7fd85c036b0dc30537063ea9b0726 /lib/python/Plugins | |
| parent | e2cb873547511511067f8eca6cd6b2e99133464d (diff) | |
| download | enigma2-1c6c579ff6302c3301eb21bd0933d5ede824a384.tar.gz enigma2-1c6c579ff6302c3301eb21bd0933d5ede824a384.zip | |
add DefaultServicesScanner plugin to do automatic services scans and build a lamedb and .info file for every sat (stored in /tmp)
Diffstat (limited to 'lib/python/Plugins')
4 files changed, 136 insertions, 1 deletions
diff --git a/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/Makefile.am b/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/Makefile.am new file mode 100644 index 00000000..1d3b2f92 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/Makefile.am @@ -0,0 +1,6 @@ +installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/DefaultServicesScanner + +install_PYTHON = \ + __init__.py \ + plugin.py + diff --git a/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/__init__.py b/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/__init__.py diff --git a/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/plugin.py b/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/plugin.py new file mode 100644 index 00000000..96ff43a0 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/DefaultServicesScanner/plugin.py @@ -0,0 +1,129 @@ +#from Components.ActionMap import ActionMap, NumberActionMap +#from Components.Input import Input +#from Components.Ipkg import IpkgComponent +#from Components.Label import Label +#from Components.MenuList import MenuList +#from Components.Slider import Slider +from Components.NimManager import nimmanager +from Plugins.Plugin import PluginDescriptor +from Screens.ScanSetup import ScanSetup +from Screens.ServiceScan import ServiceScan +from Screens.MessageBox import MessageBox +from Tools.Directories import resolveFilename, SCOPE_CONFIG +#from Screens.Screen import Screen +from enigma import eTimer, eDVBDB +import os + +class DefaultServiceScan(ServiceScan): + skin = """ + <screen position="150,115" size="420,390" title="Service Scan"> + <widget source="FrontendInfo" render="Pixmap" pixmap="skin_default/icons/scan-s.png" position="5,5" size="64,64" transparent="1" alphatest="on"> + <convert type="FrontendInfo">TYPE</convert> + <convert type="ValueRange">0,0</convert> + <convert type="ConditionalShowHide" /> + </widget> + <widget source="FrontendInfo" render="Pixmap" pixmap="skin_default/icons/scan-c.png" position="5,5" size="64,64" transparent="1" alphatest="on"> + <convert type="FrontendInfo">TYPE</convert> + <convert type="ValueRange">1,1</convert> + <convert type="ConditionalShowHide" /> + </widget> + <widget source="FrontendInfo" render="Pixmap" pixmap="skin_default/icons/scan-t.png" position="5,5" size="64,64" transparent="1" alphatest="on"> + <convert type="FrontendInfo">TYPE</convert> + <convert type="ValueRange">2,2</convert> + <convert type="ConditionalShowHide" /> + </widget> + <widget name="network" position="80,15" size="330,20" font="Regular;20" /> + <widget name="transponder" position="80,40" size="330,20" font="Regular;20" /> + <widget name="scan_state" position="10,80" zPosition="2" size="400,20" font="Regular;18" /> + <widget name="pass" position="10,80" size="400,20" font="Regular;18" /> + <widget name="scan_progress" position="10,105" size="400,15" pixmap="skin_default/progress_big.png" borderWidth="2" borderColor="#cccccc" /> + <widget name="servicelist" position="10,135" size="400,265" selectionDisabled="1" /> + </screen>""" + + def __init__(self, session, scanList): + os.system("rm " + resolveFilename(SCOPE_CONFIG) + "/lamedb") + db = eDVBDB.getInstance() + db.reloadServicelist() + ServiceScan.__init__(self, session, scanList) + self.timer = eTimer() + self.timer.callback.append(self.ok) + self.timer.start(1000) + +class DefaultServicesScannerPlugin(ScanSetup): + skin = """ + <screen position="100,115" size="520,390" title="Service scan"> + <widget name="config" position="10,10" size="500,350" scrollbarMode="showOnDemand" /> + <widget name="introduction" position="10,365" size="500,25" font="Regular;20" halign="center" /> + </screen>""" + + def __init__(self, session, args = None): + ScanSetup.__init__(self, session) + # backup lamedb + os.system("cp " + resolveFilename(SCOPE_CONFIG) + "/lamedb " + resolveFilename(SCOPE_CONFIG) + "/lamedb.backup") + self.scan_type.value = "multisat" + self.createSetup() + self.scanIndex = 0 + self.selectSat(0) + self.onFirstExecBegin.append(self.runScan) + + def selectSat(self, index): + for satindex in range(len(self.multiscanlist)): + if satindex != index: + self.multiscanlist[satindex][1].value = False + else: + self.multiscanlist[satindex][1].value = True + + def runScan(self): + print "runScan" + self.keyGo() + + def startScan(self, tlist, flags, feid): + print "startScan" + if len(tlist): + # flags |= eComponentScan.scanSearchBAT + self.session.openWithCallback(self.scanFinished, DefaultServiceScan, [{"transponders": tlist, "feid": feid, "flags": flags}]) + else: + self.session.openWithCallback(self.scanFinished, MessageBox, _("Nothing to scan!\nPlease setup your tuner settings before you start a service scan."), MessageBox.TYPE_ERROR) + + def scanFinished(self, value = None): + print "finished" + db = eDVBDB.getInstance() + satint = self.multiscanlist[self.scanIndex][0] + print "scanned sat:", satint + db.saveServicelist("/tmp/lamedb." + str(satint)) + file = open("/tmp/sat" + str(satint) + ".info", "w") + xml = """<default> + <prerequisites> + <tag type="services" /> + <bcastsystem type="DVB-S" /> + <satellite type="%d" /> + </prerequisites> + + <info> + <author>%s</author> + <name>%s</name> + </info> + + <files type="directories"> + <file type="services" name="lamedb.%d"> + </file> + </files> +</default>""" % (satint, "Dream", nimmanager.getSatDescription(satint), satint) + file.write(xml) + file.close() + + self.scanIndex += 1 + if self.scanIndex + 1 >= len(self.multiscanlist): + print "no more sats to scan" + os.system("cp " + resolveFilename(SCOPE_CONFIG) + "/lamedb.backup " + resolveFilename(SCOPE_CONFIG) + "/lamedb") + db.reloadServicelist() + self.close() + else: + self.selectSat(self.scanIndex) + self.keyGo() + +def DefaultServicesScannerMain(session, **kwargs): + session.open(DefaultServicesScannerPlugin) + +def Plugins(**kwargs): + return PluginDescriptor(name="Default Services Scanner", description=_("Scans default lamedbs sorted by satellite with a connected dish positioner"), where = PluginDescriptor.WHERE_PLUGINMENU, fnc=DefaultServicesScannerMain) diff --git a/lib/python/Plugins/SystemPlugins/Makefile.am b/lib/python/Plugins/SystemPlugins/Makefile.am index a82601f6..a4de55e6 100644 --- a/lib/python/Plugins/SystemPlugins/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Makefile.am @@ -1 +1 @@ -SUBDIRS = SoftwareUpdate FrontprocessorUpgrade PositionerSetup ConfigurationBackup Satfinder SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug +SUBDIRS = SoftwareUpdate FrontprocessorUpgrade PositionerSetup ConfigurationBackup Satfinder SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug DefaultServicesScanner |
