1 import os, xml.dom.minidom
3 DUMPBIN = "/usr/lib/enigma2/python/Plugins/Extensions/HbbTV/dumpait"
4 class eAITSectionReader:
5 def __init__(self, demux, pmtid, sid):
8 self.mCommand = "%s --demux=%s --pmtid=%x --serviceid=%x"%(DUMPBIN, demux, pmtid, sid)
10 def __text(self, nodelist):
13 if node.nodeType == node.TEXT_NODE:
17 def __item(self, application, name):
18 for item in application.getElementsByTagName(name):
19 return self.__text(item.childNodes)
22 def __application(self, application):
24 item["name"] = str(self.__item(application, "name"))
25 item["url"] = str(self.__item(application, "url"))
26 item["control"] = int(self.__item(application, "control"))
27 item["orgid"] = int(self.__item(application, "orgid"))
28 item["appid"] = int(self.__item(application, "appid"))
29 item["profile"] = int(self.__item(application, "profile"))
33 def doParseApplications(self):
35 for application in self.mDocument.getElementsByTagName("application"):
36 item = self.__application(application)
40 def getApplicationList(self):
45 try: document = os.popen(self.mCommand).read()
46 except Exception, ErrMsg:
49 if len(document) == 0:
51 document = document.decode("cp1252").encode("utf-8")
53 self.mDocument = xml.dom.minidom.parseString(document)
57 for x in self.getApplicationList():
58 print "Name :", x["name"]
59 print "URL :", x["url"]
60 print "OrgID :", x["orgid"]
61 print "AppID :", x["appid"]
62 print "Control Code :", x["control"]
63 print "Profile Code :", x["profile"]
66 def unit_test(demux, pmtid, sid):
67 reader = eAITSectionReader(demux, pmtid, sid)
69 reader.doParseApplications()
71 else: print "no data!!"
73 #unit_test('0', 0x17d4, 0x2b66)