Refactor EPG into shared engine with configurable TVJ channels
Build and Publish TVJ EPG Image / build (push) Successful in 29s
Build and Publish TVJ EPG Image / build (push) Successful in 29s
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
"""Built-in channels and environment configuration."""
|
||||
import os
|
||||
from pathlib import Path
|
||||
from epg.models import Channel
|
||||
|
||||
BUILTINS = {
|
||||
"tvj": Channel(
|
||||
id="TVJ.jm@SD", name="Television Jamaica",
|
||||
channel_id="66e312890478fd00235244cb",
|
||||
stream_url="https://vod2live.univtec.com/manifest/a99a1804-dc83-411f-8c1c-b62f08cdfa59.m3u8",
|
||||
icon="https://www.televisionjamaica.com/Portals/0/tvj_logo.png",
|
||||
),
|
||||
"tvjsn": Channel(
|
||||
id="TVJSN.jm@SD", name="TVJ Sports Network",
|
||||
channel_id="66e4618e42b97c0024de5231",
|
||||
stream_url="https://vod2live.univtec.com/manifest/65cf631b-d422-49e0-ab25-07d5aa08ca8f/7660000.m3u8",
|
||||
icon="https://rjr.vod.immergo.tv/rjr/uploaded/85c62d19-8e57-49b5-820a-acca5adcc1c9.png",
|
||||
group="Sports",
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def load(environ=None):
|
||||
env = os.environ if environ is None else environ
|
||||
keys = list(dict.fromkeys(k.strip().lower() for k in env.get("CHANNELS", "tvj").split(",") if k.strip()))
|
||||
if not keys:
|
||||
raise ValueError("CHANNELS must select at least one channel")
|
||||
unknown = set(keys) - BUILTINS.keys()
|
||||
if unknown:
|
||||
raise ValueError(f"Unknown CHANNELS: {', '.join(sorted(unknown))}; available: {', '.join(BUILTINS)}")
|
||||
xml_path = Path(env.get("OUTPUT_FILE", "/app/output/tvj.xml"))
|
||||
m3u_path = Path(env.get("M3U_OUTPUT_FILE", str(xml_path.with_name("tvj.m3u"))))
|
||||
if xml_path.resolve() == m3u_path.resolve():
|
||||
raise ValueError("OUTPUT_FILE and M3U_OUTPUT_FILE must be different")
|
||||
return [BUILTINS[k] for k in keys], xml_path, m3u_path
|
||||
Reference in New Issue
Block a user