def testOrangeDatasets(self): events = [EEvent(x) for x in self.raw['orange']] self.assertEqual(8, len(events)) self.assertNotEqual(None, events[4].pseudo_id) for item in events: psr = parse_servicereference(item.service_reference) self.assertFalse((psr['service_type'] == SERVICE_TYPE_RADIO))
def testGOTDatasets(self): events = [EEvent(x) for x in self.raw['got']] self.assertEqual(4, len(events)) self.assertNotEqual(None, events[0].pseudo_id) for item in events: self.assertEqual(pseudo_unique_id(item), item.pseudo_id) psr = parse_servicereference(item.service_reference) self.assertFalse((psr['service_type'] == SERVICE_TYPE_RADIO))
def _update_lookup_map(self): if not self.args.filter_service_type: st = (SERVICE_TYPE_TV, SERVICE_TYPE_HDTV) else: st = self.args.filter_service_type if not self.args.filter_namespace: namespace = (NS_DVB_C, ) else: namespace = self.args.filter_namespace filter_oid = None if self.args.filter_oid: filter_oid = [] for item in self.args.filter_oid: if item.startswith('0x'): item_i = int(item, 16) else: item_i = int(item) filter_oid.append(item_i) self.log.debug("st={!r} namespace={!r} filter_oid={!r}".format( st, namespace, filter_oid)) for servicename, servicereference in self.get_services(): self.log.info("Evaluating bouquet {!r}".format(servicename)) for res in self.get_getservices(servicereference): sref = res['servicereference'] val = res['servicename'] psref = parse_servicereference(sref) if psref.get('service_type') not in st: self.log.debug('ignored(TYPE={!s}): {!r:40} / {!r}'.format( psref.get('service_type'), val, sref)) continue self.log.debug("{:s}? {!r}".format( normalise_servicereference(sref), val)) if psref.get('ns') not in namespace: self.log.debug('ignored(NS): {!r:40} / {!r}'.format( val, sref)) continue if filter_oid: if psref.get('oid') not in filter_oid: self.log.debug('ignored(oid): {!r:40} / {!r}'.format( val, sref)) continue self.lookup_map[sref] = res for key in sorted(self.lookup_map.keys(), key=lambda x: normalise_servicereference(x)): self.log.debug("{:s}> {!r}".format(normalise_servicereference(key), self.lookup_map[key]))
def testMusikstundeDatasets(self): events = [EEvent(x) for x in self.raw['musikstunde']] self.assertEqual(24, len(events)) self.assertNotEqual(None, events[0].pseudo_id) for item in events: psr = parse_servicereference(item.service_reference) self.assertTrue((psr['service_type'] == SERVICE_TYPE_RADIO)) self.assertEqual(pseudo_unique_id_any(events[0]), events[0].pseudo_id)
def zap(self, what): zap_to = None if not self.lookup_map: self._update_lookup_map() for sref in self.lookup_map: if what == self.lookup_map[sref]: zap_to = sref break if zap_to is None: zap_to = what self.log.info("Zapping to {!r} ({!r})".format(what, zap_to)) try: parse_servicereference(zap_to) except Exception, pexc: self.log.error("Invalid service reference! {!r}".format(pexc)) return False
def list(self): for key in self._sorted(): item = self.lookup_map[key] sref = parse_servicereference(item['servicereference']) self.log.debug("{:s}> {!r}".format(normalise_servicereference(key), self.lookup_map[key])) print '0x{oid:04X} {service_type:5s} {namespace:5s} {servicename:50s} {sref}'.format( oid=sref['oid'], service_type=SERVICE_TYPE_LOOKUP[sref['service_type']], namespace=NS_LOOKUP[sref['ns']], servicename=item['servicename'].encode('utf-8'), sref=item['servicereference'])
def dump(self): data = { "created": datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S"), "services": dict() } for key in self._sorted(): item = self.lookup_map[key] sref = parse_servicereference(item['servicereference']) item_key = create_servicereference(sref) data['services'][item_key] = item with open(self.args.dump_file, "wb") as tgt: json.dump(data, tgt, indent=2)
def testSprechstundeDatasets(self): events = [EEvent(x) for x in self.raw['sprechstunde']] self.assertEqual(4, len(events)) self.assertNotEqual(None, events[0].pseudo_id) for item in events: psr = parse_servicereference(item.service_reference) self.assertTrue((psr['service_type'] == SERVICE_TYPE_RADIO)) self.assertEqual('38d97fdaad3c1d2c495ff0135869eb1aabdab336', events[0].pseudo_id) self.assertEqual('dedd36e94f4a8521a810e8438327de2d8357e720', events[1].pseudo_id) self.assertEqual('fbc5da506f991ac6c96fea98a8e923dfb10b83d1', events[2].pseudo_id) self.assertEqual('47a1be2837d5cce375c544824322f2c07bdd8c2c', events[3].pseudo_id)
def _update_lookup_map(self): st = (SERVICE_TYPE_TV, SERVICE_TYPE_HDTV) for servicename, servicereference in self.get_services(): self.log.debug("Evaluating bouquet {!r}".format(servicename)) for res in self.get_getservices(servicereference): sref = res['servicereference'] val = res['servicename'] psref = parse_servicereference(sref) self.log.debug("{:s}? {!r}".format( normalise_servicereference(sref), val)) self.lookup_map[sref] = val for key in sorted(self.lookup_map.keys(), key=lambda x: normalise_servicereference(x)): self.log.debug("{:s}> {!r}".format(normalise_servicereference(key), self.lookup_map[key]))