def serviceList(self, param): print "serviceList: ", param sRef = str(param["sRef"]) bouquet = str(param["bouquet"]) self.sRefFound = 0 if bouquet == '': returnList = [] bouquet = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.tv" ORDER BY bouquet' ref = eServiceReference(bouquet) self.servicelist = ServiceList(ref, command_func=self.getServiceList, validate_commands=False) self.servicelist.setRoot(ref) for (ref2, name) in self.servicelist.getServicesAsList(): part = self.serviceListOne(ref2, sRef) if part: returnList = returnList + [["-- " + name + " --", "<" + name + ">", ""]] + part bouquet = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.radio" ORDER BY bouquet' ref = eServiceReference(bouquet) self.servicelist = ServiceList(ref, command_func=self.getServiceList, validate_commands=False) self.servicelist.setRoot(ref) for (ref2, name) in self.servicelist.getServicesAsList(): part = self.serviceListOne(ref2, sRef) if part: returnList = returnList + [["-- " + name + " --", "<" + name + ">", ""]] + part else: returnList = self.serviceListOne(bouquet, sRef) if self.sRefFound == 0 and sRef != '': returnListPart = ["Inserted", sRef, "selected"] returnList = [returnListPart] + returnList #print returnList return returnList
def getServices(sRef, showAll=True, showHidden=False, pos=0, provider=False, picon=False): services = [] allproviders = {} if sRef == "": sRef = '%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % ( service_types_tv) if provider: s_type = service_types_tv if "radio" in sRef: s_type = service_types_radio pserviceHandler = eServiceCenter.getInstance() pservices = pserviceHandler.list( eServiceReference('%s FROM PROVIDERS ORDER BY name' % (s_type))) providers = pservices and pservices.getContent("SN", True) if provider: for provider in providers: servicelist = ServiceList(eServiceReference(provider[0])) slist = servicelist.getServicesAsList() for sitem in slist: allproviders[sitem[0]] = provider[1] servicelist = ServiceList(eServiceReference(sRef)) slist = servicelist.getServicesAsList() for sitem in slist: st = int(sitem[0].split(":")[1]) if (sitem[0][:7] == '1:832:D') or (not (st & 512) and not (st & 64)): pos = pos + 1 if not st & 512 or showHidden: if showAll or st == 0: service = {} service['pos'] = 0 if (st & 64) else pos sr = unicode(sitem[0], 'utf_8', errors='ignore').encode('utf_8', 'ignore') if picon: service['picon'] = getPicon(sr) service['servicereference'] = sr service['program'] = int( service['servicereference'].split(':')[3], 16) service['servicename'] = unicode(sitem[1], 'utf_8', errors='ignore').encode( 'utf_8', 'ignore') if provider: if sitem[0] in allproviders: service['provider'] = allproviders[sitem[0]] else: service['provider'] = "" services.append(service) return {"services": services, "pos": pos}
def getServices(sRef, showAll=True, showHidden=False): services = [] if sRef == "": sRef = '%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % ( service_types_tv) servicelist = ServiceList(eServiceReference(sRef)) slist = servicelist.getServicesAsList() for sitem in slist: st = int(sitem[0].split(":")[1]) if not st & 512 or showHidden: if showAll or st == 0: service = {} service['servicereference'] = unicode(sitem[0], 'utf_8', errors='ignore').encode( 'utf_8', 'ignore') service['servicename'] = unicode(sitem[1], 'utf_8', errors='ignore').encode( 'utf_8', 'ignore') services.append(service) return {"services": services}
def updateEventCache(self): try: from Screens.ChannelSelection import service_types_tv from Components.Sources.ServiceList import ServiceList bouquetlist = ServiceList( eServiceReference( service_types_tv + ' FROM BOUQUET "bouquets.tv" ORDER BY bouquet'), validate_commands=False).getServicesAsList() for bouquetitem in bouquetlist: serviceHandler = eServiceCenter.getInstance() list = serviceHandler.list( eServiceReference(str(bouquetitem[0]))) services = list and list.getContent('S') search = ['IBDCTSERNX'] if services: # It's a Bouquet search.extend([(service, 0, -1) for service in services]) events = self.epgcache.lookupEvent(search) for eventinfo in events: #0 eventID | 4 eventname | 5 short descr | 6 long descr | 7 serviceref | 8 channelname self.eventcache.append((eventinfo[0], eventinfo[7], eventinfo[8], eventinfo[4])) except Exception: print "[TVCharts Plugin] Error creating eventcache!"
def getServices(sRef, showAll=True, showHidden=False, pos=0): services = [] if sRef == "": sRef = '%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % ( service_types_tv) servicelist = ServiceList(eServiceReference(sRef)) slist = servicelist.getServicesAsList() for sitem in slist: st = int(sitem[0].split(":")[1]) if (sitem[0][:7] == '1:832:D') or (not (st & 512) and not (st & 64)): pos = pos + 1 if not st & 512 or showHidden: if showAll or st == 0: service = {} service['pos'] = 0 if (st & 64) else pos service['servicereference'] = unicode(sitem[0], 'utf_8', errors='ignore').encode( 'utf_8', 'ignore') service['program'] = int( service['servicereference'].split(':')[3], 16) service['servicename'] = unicode(sitem[1], 'utf_8', errors='ignore').encode( 'utf_8', 'ignore') services.append(service) return {"services": services, "pos": pos}
def render(self, req): try: w1 = req.uri.split("?")[1] w2 = w1.split("&") parts = {} for i in w2: w3 = i.split("=") parts[w3[0]] = w3[1] except: req.setResponseCode(200); return "no ref given with ref=???" if parts.has_key("ref"): s = '<br/>' ref = parts['ref'].replace('%20', ' ').replace('%3A', ':').replace('%22', '"') print ref fav = eServiceReference(ref) services = ServiceList(fav, command_func = None, validate_commands = False) sub = services.getServicesAsList() if len(sub) > 0: for (ref, name) in sub: s = s + '<p>' s = s + '<a href="http://%s:8001/%s" vod>%s</a>'%(req.host.host,ref,name) req.setResponseCode(200); req.setHeader('Content-type', 'text/html'); return s; else: req.setResponseCode(200); return "no ref";
def buildList(self, ref, epg): self.servicelist = ServiceList(ref, command_func = self.getServiceList, validate_commands=False) list = self.servicelist.getServicesAsList() E2List = [] for index in range(len(list)): item = list[index] servicereference = item[0] servicename = item[1] eventstart = 0 eventduration = 0 eventtitle = "" eventid = 0 eventdescription = "" eventdescriptionextended = "" if epg: epgref = item[0] events = self.epgcache.lookupEvent(['IBDTSERNX', (epgref, 0, -1)]) if events: if events[0][0] is not None: eventid = events[0][0] if events[0][1] is not None: eventstart = events[0][1] if events[0][2] is not None: eventduration = events[0][2] if events[0][3] is not None: eventtitle = events[0][3] if events[0][4] is not None: eventdescription= events[0][4] if events[0][5] is not None: eventdescriptionextended= events[0][5] E2List.append(E2EPGListAllData(servicereference = servicereference, servicename = servicename, eventstart = eventstart, eventduration = eventduration, eventtitle = eventtitle, eventid = eventid, eventdescription= eventdescription, eventdescriptionextended = eventdescriptionextended)) else: E2List.append(E2ServiceList(servicereference = item[0], servicename = item[1])) return E2List
def getChannelList(self): if not self._channelList: from Components.Sources.ServiceList import ServiceList bouquet = eServiceReference('1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet') slist = ServiceList(bouquet, validate_commands=False) services = slist.getServicesAsList(format="S") self._channelList = services[:] return self._channelList
def __init__(self, session, request): WebScreen.__init__(self, session, request) from Components.Sources.ServiceList import ServiceList from Screens.ChannelSelection import service_types_tv fav = eServiceReference(service_types_tv + ' FROM BOUQUET "bouquets.tv" ORDER BY bouquet') self["ServiceList"] = ServiceList(fav, command_func=self.getServiceList, validate_commands=False)
def __init__(self, session, request): WebScreen.__init__(self, session, request) from WebComponents.Sources.ServiceListRecursive import ServiceListRecursive from Components.Sources.ServiceList import ServiceList from Screens.ChannelSelection import service_types_tv fav = eServiceReference(service_types_tv + ' FROM BOUQUET "bouquets.tv" ORDER BY bouquet') self["SwitchService"] = ServiceList(fav, command_func=self.zapTo, validate_commands=False) self["ServiceList"] = ServiceList(fav, command_func=self.getServiceList, validate_commands=False) self["ServiceListRecursive"] = ServiceListRecursive( session, func=ServiceListRecursive.FETCH) self["localip"] = RequestData(request, what=RequestData.HOST)
def LSTC(self, args): if args: payload = "%d parameter not implemented" % (CODE_IMP_PARAM,) return self.sendLine(payload) from Components.Sources.ServiceList import ServiceList bouquet = eServiceReference('1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet') slist = ServiceList(bouquet, validate_commands=False) services = slist.getServicesAsList(format="SNn") if services: def getServiceInfoValue(info, sref, what): if info is None: return "" v = info.getInfo(sref.ref, what) if v == -2: return info.getInfoString(sref.ref, what) elif v == -1: return "N/A" return v def sendServiceLine(service, counter, last=False): if service[0][:5] == '1:64:': # format for markers: ":Name" line = "%d%s:%s" % (CODE_OK, '-' if not last else ' ', service[1]) else: # <id> <full name>,<short name>;<provider>:<freq>:<parameters>:<source>:<srate>:<vpid>:<apid>:<tpid>:<conditional access>:<:sid>:<nid>:<tid>:<:rid> # e.g. 5 RTL Television,RTL:12188:h:S19.2E:27500:163:104:105:0:12003:1:1089:0 sref = ServiceReference(service[0]) info = sref.info() # XXX: how to get this?! o0 feinfo = None #sref.ref.frontendInfo() fedata = feinfo.getAll(True) if feinfo else {} prov = getServiceInfoValue(info, sref, iServiceInformation.sProvider) frequency = fedata.get("frequency", 0)/1000 param = -1 source = '-1' srate = -1 vpid = '-1' apid = '-1' tpid = -1 ca = '-1' sid = -1 nid = -1 tid = -1 rid = -1 # TODO: support full format, these are only the important fields ;) line = "%d%s%d %s,%s;%s:%d:%s:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d" % (CODE_OK, '-' if not last else ' ', counter, service[1], service[2], prov, frequency, param, source, srate, vpid, apid, tpid, ca, sid, nid, tid, rid) self.sendLine(line) self.channelList = [x[0] for x in services] # always refresh cache b/c this is what the user works with from now on lastItem = services.pop() idx = 1 for service in services: sendServiceLine(service, idx) idx += 1 sendServiceLine(lastItem, idx, last=True) else: payload = "%d no services found" % (CODE_ERR_LOCAL,) self.sendLine(payload)
def __init__(self, session, request): ServiceListWebScreen.__init__(self, session, request) LocationsAndTagsWebScreen.__init__(self, session, request) from Components.Sources.ServiceList import ServiceList from Screens.ChannelSelection import service_types_tv fav = eServiceReference(service_types_tv + ' FROM BOUQUET "bouquets.tv" ORDER BY bouquet') self["BouquetList"] = ServiceList(fav, command_func=self.getBouquetList, validate_commands=False) #get the first bouquet and set it favlist = self["BouquetList"].getServicesAsList(format = "S") if len(favlist) > 0: self["ServiceList"].root = eServiceReference(favlist[0])
def getServices(sRef): services = [] if sRef == "": sRef = '%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % ( service_types_tv) servicelist = ServiceList(eServiceReference(sRef)) slist = servicelist.getServicesAsList() for sitem in slist: service = {} service['servicereference'] = sitem[0] service['servicename'] = sitem[1] services.append(service) return {"services": services}
def serviceListOne(self, bouquet, selref): ref = eServiceReference(bouquet) self.servicelist = ServiceList(ref, command_func=self.getServiceList, validate_commands=False) self.servicelist.setRoot(ref) returnList = [] for (ref2, name) in self.servicelist.getServicesAsList(): print "ref2: (", ref2, ") name: (", name, ")" returnListPart = [name, ref2] if ref2 == str(selref): returnListPart.append("selected") self.sRefFound = 1 else: returnListPart.append("") returnList.append(returnListPart) return returnList
def getServices(sRef): services = [] if sRef == "": sRef = '%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % (service_types_tv) servicelist = ServiceList(eServiceReference(sRef)) slist = servicelist.getServicesAsList() for sitem in slist: if not int(sitem[0].split(":")[1]) & 512: # 512 is hidden service on sifteam image. Doesn't affect other images service = {} service['servicereference'] = sitem[0] service['servicename'] = sitem[1] services.append(service) return { "services": services }
def render(self, req): s = '<br/>' if config.usage.multibouquet.value: bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.tv" ORDER BY bouquet' else: from Screens.ChannelSelection import service_types_tv bouquet_rootstr = '%s FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet'%(service_types_tv) fav = eServiceReference(bouquet_rootstr) services = ServiceList(fav, command_func = None, validate_commands = False) sub = services.getServicesAsList() if len(sub) > 0: self.putChild('channel', ChannelList()) for (ref, name) in sub: s = s + '<p>' ref = ref.replace(' ', '%20').replace(':', '%3A').replace('"', '%22') s = s + '<a href="/channel?ref=' + ref + '">' + name + '</a>' req.setResponseCode(200) req.setHeader('Content-type', 'text/html'); return s;
def buildList(self, ref): self.servicelist = ServiceList(ref, command_func=self.getServiceList, validate_commands=False) list = self.servicelist.getServicesAsList() for item in list: self.servicelist.setRoot(eServiceReference(item[0])) sub = self.servicelist.getServicesAsList() if sub: self.xml += "\t<e2bouquet>\n" bouquet = True subxml = "" for (ref, name) in sub: name = name.replace('\xc2\x86', '').replace('\xc2\x87', '') subxml += "\t\t\t<e2service>\n" subxml += "\t\t\t\t<e2servicereference>%s</e2servicereference>\n\t\t\t\t<e2servicename>%s</e2servicename>\n" % ( self.filterXML(ref), self.filterXML(name)) subxml += "\t\t\t</e2service>\n" else: self.xml += "\t\t<e2service>\n" bouquet = False self.xml += "\t\t<e2servicereference>%s</e2servicereference>\n\t\t<e2servicename>%s</e2servicename>\n" % ( self.filterXML(item[0]), self.filterXML(item[1])) if bouquet: self.xml += "\t\t<e2servicelist>\n" self.xml += subxml self.xml += "\t\t</e2servicelist>\n" self.xml += "\t</e2bouquet>\n" else: self.xml += "\t</e2service>\n" return self.xml
def _init_services(self, ref): self.info(ref) servicelist = None def get_servicelist(ref): servicelist.root = ref if ref: ref = eServiceReference(ref) if not ref.valid(): self.warning("Invalid ref %s" % ref) return [] else: self.warning("Missing ref!") servicelist = ServiceList(ref, command_func=get_servicelist, validate_commands=False) services = servicelist.getServicesAsList() for ref, name in services: if ref.startswith("1:64"): #skip markers continue child = self._gen_child(ref, name) self.add_child(child)
def getServices(sRef, showAll=True, showHidden=False, pos=0, provider=False, picon=False): services = [] allproviders = {} CalcPos = False if sRef == "": sRef = '%s FROM BOUQUET "bouquets.tv" ORDER BY bouquet' % ( service_types_tv) CalcPos = True elif ' "bouquets.radio" ' in sRef: CalcPos = True elif ' "bouquets.tv" ' in sRef: CalcPos = True if provider: s_type = service_types_tv if "radio" in sRef: s_type = service_types_radio pserviceHandler = eServiceCenter.getInstance() pservices = pserviceHandler.list( eServiceReference('%s FROM PROVIDERS ORDER BY name' % (s_type))) providers = pservices and pservices.getContent("SN", True) if provider: for provider in providers: servicelist = ServiceList(eServiceReference(provider[0])) slist = servicelist.getServicesAsList() for sitem in slist: allproviders[sitem[0]] = provider[1] servicelist = ServiceList(eServiceReference(sRef)) slist = servicelist.getServicesAsList() serviceHandler = eServiceCenter.getInstance() oPos = 0 for sitem in slist: oldoPos = oPos sref = sitem[0] if CalcPos and 'userbouquet' in sref: serviceslist = serviceHandler.list(eServiceReference(sref)) sfulllist = serviceslist and serviceslist.getContent("RN", True) for citem in sfulllist: sref = citem[0].toString() hs = (int(sref.split(":")[1]) & 512) sp = (sref[:7] == '1:832:D') or (sref[:7] == '1:832:1') or (sref[:6] == '1:320:') if not hs or sp: # 512 is hidden service on sifteam image. Doesn't affect other images oPos = oPos + 1 if not sp and citem[0].flags & eServiceReference.isMarker: oPos = oPos - 1 st = int(sitem[0].split(":")[1]) sp = (sitem[0][:7] == '1:832:D') or (sitem[0][:7] == '1:832:1') or (sitem[0][:6] == '1:320:') if sp or (not (st & 512) and not (st & 64)): pos = pos + 1 if not st & 512 or showHidden: if showAll or st == 0: service = {} service['pos'] = 0 if (st & 64) else pos sr = unicode(sitem[0], 'utf_8', errors='ignore').encode('utf_8', 'ignore') if CalcPos: service['startpos'] = oldoPos if picon: service['picon'] = getPicon(sr) service['servicereference'] = sr service['program'] = int( service['servicereference'].split(':')[3], 16) service['servicename'] = unicode(sitem[1], 'utf_8', errors='ignore').encode( 'utf_8', 'ignore') if provider: if sitem[0] in allproviders: service['provider'] = allproviders[sitem[0]] else: service['provider'] = "" services.append(service) return {"services": services, "pos": pos}
def setValue(self, oid, value): #the first time we are called, we have to fill the bisect oid store, values are just values, no objects (we cannot call value.get) try: value.get() except: return bisectoidstore.BisectOIDStore.setValue(self, oid, value) oidstring = bisectoidstore.sortableToOID(oid) if oidstring == self.MANAGERIP_OID: if config.plugins.SnmpAgent.managerip.value <> value.get(): config.plugins.SnmpAgent.managerip.value = value.get() config.plugins.SnmpAgent.managerip.save() elif oidstring == self.ENABLE_BITRATE_OID: if config.plugins.SnmpAgent.measurebitrate.value and not value.get( ): config.plugins.SnmpAgent.measurebitrate.value = False config.plugins.SnmpAgent.measurebitrate.save() if self.bitrate: self.bitrate.stop() self.bitrate = None elif not config.plugins.SnmpAgent.measurebitrate.value and value.get( ): config.plugins.SnmpAgent.measurebitrate.value = True config.plugins.SnmpAgent.measurebitrate.save() self.bitrate = Bitrate(self.session) self.bitrate.start() elif oidstring == self.SYSTEMNAME_OID: if config.plugins.SnmpAgent.systemname.value <> value.get(): config.plugins.SnmpAgent.systemname.value = value.get() config.plugins.SnmpAgent.systemname.save() elif oidstring == self.SUPPORTADDRESS_OID: if config.plugins.SnmpAgent.supportaddress.value <> value.get(): config.plugins.SnmpAgent.supportaddress.value = value.get() config.plugins.SnmpAgent.supportaddress.save() elif oidstring == self.SYSTEMDESCRIPTION_OID: if config.plugins.SnmpAgent.systemdescription.value <> value.get(): config.plugins.SnmpAgent.systemdescription.value = value.get() config.plugins.SnmpAgent.systemdescription.save() elif oidstring == self.LOCATION_OID: if config.plugins.SnmpAgent.location.value <> value.get(): config.plugins.SnmpAgent.location.value = value.get() config.plugins.SnmpAgent.location.save() elif oidstring == self.CHANNELNAME_OID: if self.getChannelName() <> value.get(): root = config.tv.lastroot.value.split(';') fav = eServiceReference(root[-2]) services = ServiceList(fav, command_func=self.zapTo, validate_commands=False) sub = services.getServicesAsList() if len(sub) > 0: for (ref, name) in sub: if name == value.get(): self.zapTo(eServiceReference(ref)) break elif oidstring == self.SERVICESTRING_OID: if self.getServiceString() <> value.get(): self.zapTo(eServiceReference(value.get())) elif oidstring == self.FASTSCANSTRING_OID: refstring = '' fields = value.get().split(',') if len(fields) >= 15: onid, tsid, freq, id1, id2, sid, orbital_pos, f1, f2, f3, symbolrate, f4, name, provider, servicetype = fields[ 0:15] refstring = '%d:%d:%d:%x:%x:%x:%x:%x:%x:%x:' % ( 1, 0, int(servicetype), int(sid), int(tsid), int(onid), int(orbital_pos) * 65536, 0, 0, 0) if refstring is not '': self.zapTo(eServiceReference(refstring)) elif oidstring == self.SERVICEPARAMS_OID: refstring = '' fields = value.get().split(',') if len(fields) >= 5: orbital_pos, tsid, onid, sid, servicetype = fields[0:5] refstring = '%d:%d:%d:%x:%x:%x:%x:%x:%x:%x:' % ( 1, 0, int(servicetype), int(sid), int(tsid), int(onid), int(orbital_pos) * 65536, 0, 0, 0) if refstring is not '': self.zapTo(eServiceReference(refstring)) elif oidstring == self.IP_OID: ipstring = value.get().split('.') ipval = [] for x in ipstring: ipval.append(int(x)) if iNetwork.getAdapterAttribute(self.iface, "ip") <> ipval: iNetwork.setAdapterAttribute(self.iface, "dhcp", 0) iNetwork.setAdapterAttribute(self.iface, "ip", ipval) iNetwork.deactivateNetworkConfig() iNetwork.writeNetworkConfig() iNetwork.activateNetworkConfig() elif oidstring == self.IP_OID: ipstring = value.get().split('.') ipval = [] for x in ipstring: ipval.append(int(x)) if iNetwork.getAdapterAttribute(self.iface, "netmask") <> ipval: iNetwork.setAdapterAttribute(self.iface, "dhcp", 0) iNetwork.setAdapterAttribute(self.iface, "netmask", ipval) iNetwork.deactivateNetworkConfig() iNetwork.writeNetworkConfig() iNetwork.activateNetworkConfig() elif oidstring == self.GATEWAY_OID: ipstring = value.get().split('.') ipval = [] for x in ipstring: ipval.append(int(x)) if iNetwork.getAdapterAttribute(self.iface, "gateway") <> ipval: iNetwork.setAdapterAttribute(self.iface, "dhcp", 0) iNetwork.setAdapterAttribute(self.iface, "gateway", ipval) iNetwork.deactivateNetworkConfig() iNetwork.writeNetworkConfig() iNetwork.activateNetworkConfig() elif oidstring == self.ENABLE_EMM_OID: if config.plugins.SnmpAgent.checkemm.value and not value.get(): config.plugins.SnmpAgent.checkemm.value = False config.plugins.SnmpAgent.checkemm.save() if self.emm: self.emm.stop() self.emm = None elif not config.plugins.SnmpAgent.checkemm.value and value.get(): config.plugins.SnmpAgent.checkemm.value = True config.plugins.SnmpAgent.checkemm.save() self.emm = Emm(self.session) self.emm.start() else: print "oid not found!?" return None