From 741bea29e647032c7eac0b9512b89346e0cb9452 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Sun, 5 Jan 2025 18:13:50 +0300 Subject: [PATCH] enabled additional name cache for EPG (#189) --- app/tools/epg.py | 2 +- app/ui/epg/epg.py | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/tools/epg.py b/app/tools/epg.py index 65d71c8d..c0682d44 100644 --- a/app/tools/epg.py +++ b/app/tools/epg.py @@ -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 diff --git a/app/ui/epg/epg.py b/app/ui/epg/epg.py index 587da087..7f1165e0 100644 --- a/app/ui/epg/epg.py +++ b/app/ui/epg/epg.py @@ -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):