prefetcher
Build and Push Docker Images / build-and-push (push) Successful in 24s

This commit is contained in:
2026-02-11 21:52:16 +01:00
parent fecd8389e9
commit df941720e3
5 changed files with 197 additions and 3 deletions
+13 -2
View File
@@ -48,11 +48,12 @@ def schedule_epoch_utc() -> datetime:
class EPGBuilder:
"""Builds XMLTV EPG for all channels."""
def __init__(self, schedule_builder, tmdb_client, channel_repo, cache_manager=None):
def __init__(self, schedule_builder, tmdb_client, channel_repo, cache_manager=None, prefetcher=None):
self._schedule = schedule_builder
self._tmdb = tmdb_client
self._channels = channel_repo
self._cache = cache_manager
self._prefetcher = prefetcher
def build_xml(self) -> str:
"""
@@ -86,6 +87,7 @@ class EPGBuilder:
ET.SubElement(chan_el, "display-name").text = name
total_programmes = 0
scheduled: set[tuple[Path, str | None, str | None, int | None]] = set()
for ch in channels:
cid = ch.get("id", ch.get("name", ""))
ch_start = time.monotonic()
@@ -113,6 +115,14 @@ class EPGBuilder:
if start_dt >= end_epoch:
break
channel_programmes += 1
cfg = path_configs[i] if i < len(path_configs) else {}
if SERIES_ROOT in path.parents:
scheduled.add((
path,
cfg.get("display_name"),
cfg.get("tmdb_search"),
cfg.get("tmdb_id"),
))
prog = ET.SubElement(
root,
"programme",
@@ -120,7 +130,6 @@ class EPGBuilder:
stop=format_xmltv_time(stop_dt),
channel=cid,
)
cfg = path_configs[i] if i < len(path_configs) else {}
programme_name = get_programme_name_from_path(path)
meta = self._tmdb.get_episode_metadata(
programme_name,
@@ -194,4 +203,6 @@ class EPGBuilder:
)
if self._cache:
self._cache.set_epg(xml)
if self._prefetcher:
self._prefetcher.run_once(scheduled)
return xml