This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user