В эмуляторе Wicard есть возможность изменения параметра для понимания того, в какой именно кодировке вещает нужный канал.
Ни один из эмуляторов не знает названия кодировок, они оперируют значениями CAID, которые получают из потока со спутника. Но все эмуляторы пишут файл /tmp/ecm.info, который обновляется каждые 10 - 15 (20) сек при изменениии ключа. Именно из него система и все заинтересованные конвертеры берут данные о кодировке. Реализуется это в функциях так:
Спойлер:
Для oscam, wicardd, ncam, oscam-ymod: def CaidInfo1(self): if os.path.exists('/tmp/ecm.info') == True: ecmf = open('/tmp/ecm.info', 'r') ecm = ecmf.readlines() for line in ecm: if 'caid: 0x' in line or 'CAID: 0x' in line: x = line l = len(x) x1 = x[8:l] d = '%s' % systemTxtCaids.get(x1[:2]) return d else: d = 'nodecode' return d
Для cccam: def CaidInfo2(self): if os.path.exists('/tmp/ecm.info') == True: ecmf = open('/tmp/ecm.info', 'r') ecm = ecmf.readlines() for line in ecm: if 'system: ' in line: x = line l = len(x) x1 = x[12:l] d = x1 return d else: d = 'nodecode' return d
Для mgcamd: def CaidInfo3(self): if os.path.exists('/tmp/ecm.info') == True: ecmf = open('/tmp/ecm.info', 'r') ecm = ecmf.readlines() for line in ecm: if 'CaID 0x' in line: x = line l = len(x) y = x.find('CaID 0x')
x1 = x[(y+7):l] d = '%s' % systemTxtCaids.get(x1[:2]) return d else: d = 'nodecode' return d
Названия кодировок берутся из словаря: systemTxtCaids = {'26': 'BiSS', '01': 'Seca Mediaguard', '06': 'Irdeto', '17': 'BetaCrypt', '05': 'Viacces', '18': 'Nagravision', '09': 'NDS-Videoguard', '0B': 'Conax', '0D': 'Cryptoworks', '4A': 'DRE-Crypt', '27': 'ExSet', '0E': 'PowerVu', '22': 'Codicrypt', '07': 'DigiCipher', '56': 'Verimatrix', 'A1': 'Rosscrypt'} Его можно легко модифицировать, добавив нужное, или искючив не нужное.
Итог:
self["caid"].setText(str(self.CaidInfo1 или (2) или(3)()))
Простенький конвертер, на базе этого кода работает мгновенно.