Skip to content

Commit

Permalink
[PiconsUpdater]
Browse files Browse the repository at this point in the history
* improve service parser
* add hook to allow custom service name parser
  • Loading branch information
jbleyel committed May 19, 2024
1 parent 13612e5 commit 66d2428
Showing 1 changed file with 24 additions and 13 deletions.
37 changes: 24 additions & 13 deletions PiconsUpdater/src/BouquetParser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@
from unicodedata import normalize
from enigma import eServiceCenter, eServiceReference
from Components.config import config
from Components.SystemInfo import BoxInfo
from ServiceReference import ServiceReference

SKIP_BOUQUET_NAMES = 'userbouquet.lastscanned'


def getChannelKey(service):
channelKeyMatch = match('([^:]+):([^:]+):([^:]+):([^:]+):([^:]+):([^:]+):([^:]+):([^:]+):([^:]+):([^:]+):', str(service))
channelKey = '_'.join(map(str, channelKeyMatch.groups()))
try:
return normalize('NFKD', channelKey)
except Exception:
return channelKey
if channelKeyMatch:
channelKey = '_'.join(map(str, channelKeyMatch.groups()))
try:
return normalize('NFKD', channelKey)
except Exception:
return channelKey


class BouquetParser:
Expand Down Expand Up @@ -54,19 +56,28 @@ def __getBouquetServices(self, bouquet):
services = []
Servicelist = eServiceCenter.getInstance().list(bouquet)
if Servicelist is not None:
getServiceHook = BoxInfo.getItem("getServiceHook")
while True:
service = Servicelist.getNext()
if not service.valid():
break
if service.flags & (eServiceReference.isDirectory | eServiceReference.isMarker):
continue
if self.excludeiptv:
sref = service.toString()
fields = sref.split(':', 10)[:10]
if fields[0] != '1':
continue
sref = ':'.join(fields) + ':'
services.append(ServiceReference(sref))
if getServiceHook and callable(getServiceHook):
_service = getServiceHook(service, self.excludeiptv)
else:
services.append(ServiceReference(service))
_service = self.getService(service)
if _service:
services.append(_service)
return services

def getService(self, service):
if self.excludeiptv:
sref = service.toString()
fields = sref.split(':', 10)[:10]
if fields[0] != '1':
return None
sref = ':'.join(fields) + ':'
return ServiceReference(sref)
else:
return ServiceReference(service)

0 comments on commit 66d2428

Please sign in to comment.