Browse Source

xmltv: add ability to for epg to provide channel icon

main
Brett Langdon 2 years ago
parent
commit
a9425dcb32
No known key found for this signature in database GPG Key ID: 9BAD4322A65AD78B
2 changed files with 13 additions and 2 deletions
  1. +6
    -1
      src/dlhdhr/dlhd/channels.py
  2. +7
    -1
      src/dlhdhr/epg/__init__.py

+ 6
- 1
src/dlhdhr/dlhd/channels.py View File

@ -14,6 +14,7 @@ class DLHDChannel:
xmltv_id: str | None = None xmltv_id: str | None = None
call_sign: str | None = None call_sign: str | None = None
epgsky_id: str | None = None epgsky_id: str | None = None
thumbnail: str | None = None
@property @property
def playlist_m3u8(self) -> str: def playlist_m3u8(self) -> str:
@ -23,10 +24,14 @@ class DLHDChannel:
def channel_proxy(self) -> str: def channel_proxy(self) -> str:
return f"/channel/{self.number}" 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)}) node = Element("channel", attrib={"id": str(self.number)})
SubElement(node, "display-name", attrib={"lang": "en"}).text = self.name SubElement(node, "display-name", attrib={"lang": "en"}).text = self.name
SubElement(node, "lcn").text = self.number SubElement(node, "lcn").text = self.number
if thumbnail or self.thumbnail:
SubElement(node, "icon", attrib={"src": thumbnail or self.thumbnail})
return node return node


+ 7
- 1
src/dlhdhr/epg/__init__.py View File

@ -26,13 +26,19 @@ class EPG:
return [] 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: async def generate_xmltv(self, channels: Iterable[DLHDChannel]) -> bytes:
tv = Element("tv", attrib={"generator-info-name": "dlhdhr"}) tv = Element("tv", attrib={"generator-info-name": "dlhdhr"})
channels = [c for c in channels if c.xmltv_id] channels = [c for c in channels if c.xmltv_id]
for channel in channels: 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) programs = await self.get_channel_programs(channel)


Loading…
Cancel
Save