diff --git a/src/dlhdhr/dlhd/channels.py b/src/dlhdhr/dlhd/channels.py index 38f2a46..29b82fc 100644 --- a/src/dlhdhr/dlhd/channels.py +++ b/src/dlhdhr/dlhd/channels.py @@ -14,6 +14,7 @@ class DLHDChannel: xmltv_id: str | None = None call_sign: str | None = None epgsky_id: str | None = None + thumbnail: str | None = None @property def playlist_m3u8(self) -> str: @@ -23,10 +24,14 @@ class DLHDChannel: def channel_proxy(self) -> str: return f"/channel/{self.number}" - def to_xmltv(self) -> Element: + def to_xmltv(self, thumbnail: str | None = None) -> Element: node = Element("channel", attrib={"id": str(self.number)}) SubElement(node, "display-name", attrib={"lang": "en"}).text = self.name SubElement(node, "lcn").text = self.number + + if thumbnail or self.thumbnail: + SubElement(node, "icon", attrib={"src": thumbnail or self.thumbnail}) + return node diff --git a/src/dlhdhr/epg/__init__.py b/src/dlhdhr/epg/__init__.py index bff1b16..d372a29 100644 --- a/src/dlhdhr/epg/__init__.py +++ b/src/dlhdhr/epg/__init__.py @@ -26,13 +26,19 @@ class EPG: return [] + async def get_channel_icon_from_epg(self, channel: DLHDChannel) -> str | None: + if channel.country_code == "uk": + if channel.epgsky_id: + return f"https://d2n0069hmnqmmx.cloudfront.net/epgdata/1.0/newchanlogos/80/35/skychb{channel.epgsky_id}.png" + return None + async def generate_xmltv(self, channels: Iterable[DLHDChannel]) -> bytes: tv = Element("tv", attrib={"generator-info-name": "dlhdhr"}) channels = [c for c in channels if c.xmltv_id] for channel in channels: - tv.append(channel.to_xmltv()) + tv.append(channel.to_xmltv(thumbnail=await self.get_channel_icon_from_epg(channel))) programs = await self.get_channel_programs(channel)