enabled additional name cache for EPG (#189)

This commit is contained in:
DYefremov
2025-01-05 18:13:50 +03:00
parent 97041e5799
commit 741bea29e6
2 changed files with 14 additions and 3 deletions

View File

@@ -324,7 +324,7 @@ class XmlTvReader(Reader):
utc = dt.timestamp()
offset = datetime.now() - dt
for srv in filter(lambda s: any(name in names for name in s.names), self._cache.values()):
for srv in filter(lambda s: s.id in names or any(name in names for name in s.names), self._cache.values()):
[self.process_event(ev, events, offset, srv) for ev in filter(lambda s: s.duration > utc, srv.events)]
return events

View File

@@ -317,13 +317,18 @@ class FavEpgCache(EpgCache):
def update_xml_data(self):
services = self._app.current_services
names = {services[s].service for s in self._app.current_bouquets.get(self._current_bq, []) if s in services}
if self._app.app_settings.enable_epg_name_cache:
id_names = set(filter(lambda n: n in EpgCache.NAME_CACHE, names))
names -= id_names
names.update({EpgCache.NAME_CACHE.get(n) for n in id_names})
for name, events in self._reader.get_current_events(names).items():
ev = min(events, key=lambda x: x.start, default=None)
if ev:
self.events[name] = ev
def get_current_event(self, service_name):
return self.events.get(service_name, EpgEvent())
return self.events.get(EpgCache.NAME_CACHE.get(service_name, service_name), EpgEvent())
def get_current_events(self, service_name):
return [EpgEvent()]
@@ -417,6 +422,12 @@ class TabEpgCache(EpgCache):
def update_epg_data(self) -> bool:
services = self._app.current_services
names = {services[s].service for s in chain.from_iterable(self._app.current_bouquets.values()) if s in services}
if self._app.app_settings.enable_epg_name_cache:
id_names = set(filter(lambda n: n in EpgCache.NAME_CACHE, names))
names -= id_names
names.update({EpgCache.NAME_CACHE.get(n) for n in id_names})
for name, events in self._reader.get_current_events(names).items():
self.events[name] = events
@@ -428,7 +439,7 @@ class TabEpgCache(EpgCache):
pass
def get_current_events(self, service_name) -> list:
return self.events.get(service_name, [])
return self.events.get(EpgCache.NAME_CACHE.get(service_name, service_name), [])
class EpgSettingsPopover(Gtk.Popover):