X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FPlugins%2FExtensions%2FVbrowser%2Faitreader.py;fp=lib%2Fpython%2FPlugins%2FExtensions%2FVbrowser%2Faitreader.py;h=757b0f304669e8d62009aeeea0616b12fec01e17;hp=0000000000000000000000000000000000000000;hb=2169ab1e74bd647e685a05802ae5611dd7988d97;hpb=bbc323853f72cb7d5531cb87af04ffb4cd6e99c9 diff --git a/lib/python/Plugins/Extensions/Vbrowser/aitreader.py b/lib/python/Plugins/Extensions/Vbrowser/aitreader.py new file mode 100644 index 0000000..757b0f3 --- /dev/null +++ b/lib/python/Plugins/Extensions/Vbrowser/aitreader.py @@ -0,0 +1,102 @@ +import os, xml.dom.minidom +from enigma import iServiceInformation + +import vbcfg + +DUMPBIN = vbcfg.PLUGINROOT + "/dumpait" +class eAITSectionReader: + def __init__(self, demux, pmtid, sid): + self.mVuplusBox = False + self.mInfo = None + self.mAppList = [] + self.mDocument = None + self.mCommand = "%s --demux=%s --pmtid=%x --serviceid=%x"%(DUMPBIN, demux, pmtid, sid) + + def __text(self, nodelist): + rc = [] + for node in nodelist: + if node.nodeType == node.TEXT_NODE: + rc.append(node.data) + return ''.join(rc) + + def __item(self, application, name): + for item in application.getElementsByTagName(name): + return self.__text(item.childNodes) + return None + + def __application(self, application): + item = {} + + if self.mVuplusBox: + item["name"] = str(application[1]) + item["url"] = str(application[2]) + item["control"] = int(application[0]) + item["orgid"] = int(application[3]) + item["appid"] = int(application[4]) + item["profile"] = int(application[5]) + else: + item["name"] = str(self.__item(application, "name")) + item["url"] = str(self.__item(application, "url")) + item["control"] = int(self.__item(application, "control")) + item["orgid"] = int(self.__item(application, "orgid")) + item["appid"] = int(self.__item(application, "appid")) + item["profile"] = int(self.__item(application, "profile")) + return item + + def doParseApplications(self): + l = [] + + if self.mVuplusBox: + for application in self.mInfo.getInfoObject(iServiceInformation.sHBBTVUrl): + item = self.__application(application) + l.append(item) + else: + for application in self.mDocument.getElementsByTagName("application"): + item = self.__application(application) + l.append(item) + self.mAppList = l + + def getApplicationList(self): + return self.mAppList + + def doOpen(self, info, is_vuplusbox): + if is_vuplusbox: + self.mVuplusBox = is_vuplusbox + self.mInfo = info + return True + + document = "" + try: document = os.popen(self.mCommand).read() + except Exception, ErrMsg: + vbcfg.ERR(ErrMsg) + return False + if len(document) == 0: + return False + document = document.decode("cp1252").encode("utf-8") + try: + self.mDocument = xml.dom.minidom.parseString(document) + except Exception, ErrMsg: + vbcfg.ERR("XML parse: %s" % ErrMsg) + return False + return True + + def doDump(self): + for x in self.getApplicationList(): + print "Name :", x["name"] + print "URL :", x["url"] + print "OrgID :", x["orgid"] + print "AppID :", x["appid"] + print "Control Code :", x["control"] + print "Profile Code :", x["profile"] + print "" + +def unit_test(demux, pmtid, sid): + reader = eAITSectionReader(demux, pmtid, sid) + if reader.doOpen(): + reader.doParseApplications() + reader.doDump() + else: + vbcfg.ERR("no data!!") + +#unit_test('0', 0x17d4, 0x2b66) +