Browse Source

fix xmltv generation

main
Brett Langdon 2 years ago
parent
commit
d3ba88de48
No known key found for this signature in database GPG Key ID: 9BAD4322A65AD78B
1 changed files with 18 additions and 12 deletions
  1. +18
    -12
      src/dlhdhr/xmltv.py

+ 18
- 12
src/dlhdhr/xmltv.py View File

@ -8,7 +8,10 @@ async def generate_xmltv(channels: list[DLHDChannel], zap2it: Zap2it) -> bytes:
tv = Element("tv", attrib={"generator-info-name": "dlhdhr"}) tv = Element("tv", attrib={"generator-info-name": "dlhdhr"})
for channel in channels: for channel in channels:
ch_node = SubElement(tv, "channel", attrib={"id": channel.number})
if not channel.tvg_id:
continue
ch_node = SubElement(tv, "channel", attrib={"id": channel.tvg_id})
SubElement(ch_node, "display-name", attrib={"lang": "en"}).text = channel.name SubElement(ch_node, "display-name", attrib={"lang": "en"}).text = channel.name
SubElement(ch_node, "lcn").text = channel.number SubElement(ch_node, "lcn").text = channel.number
@ -16,20 +19,22 @@ async def generate_xmltv(channels: list[DLHDChannel], zap2it: Zap2it) -> bytes:
if not channel.call_sign: if not channel.call_sign:
continue continue
if not channel.tvg_id:
continue
z_channel = await zap2it.get_channel(channel.call_sign) z_channel = await zap2it.get_channel(channel.call_sign)
if not z_channel: if not z_channel:
continue continue
if not channel.tvg_id:
continue
# Note: The order of the elements in the <programme /> matters
# title, desc, date, category, icon, episode-num, rating
for event in z_channel.events: for event in z_channel.events:
start_time = event.start_time.strftime("%Y%m%d%H%M%S %z") start_time = event.start_time.strftime("%Y%m%d%H%M%S %z")
end_time = event.start_time.strftime("%Y%m%d%H%M%S %z") end_time = event.start_time.strftime("%Y%m%d%H%M%S %z")
programme = SubElement( programme = SubElement(
tv, "programme", attrib={"start": start_time, "stop": end_time, "channel": channel.number}
tv, "programme", attrib={"start": start_time, "stop": end_time, "channel": channel.tvg_id}
) )
if event.program.title: if event.program.title:
SubElement(programme, "title", attrib={"lang": "en"}).text = event.program.title SubElement(programme, "title", attrib={"lang": "en"}).text = event.program.title
@ -39,17 +44,18 @@ async def generate_xmltv(channels: list[DLHDChannel], zap2it: Zap2it) -> bytes:
if event.program.release_year: if event.program.release_year:
SubElement(programme, "date").text = event.program.release_year SubElement(programme, "date").text = event.program.release_year
if event.rating:
rating = SubElement(programme, "rating", attrib={"system": "MPAA"})
SubElement(rating, "value").text = event.rating
for tag in event.tags:
SubElement(programme, "category", attrib={"lang": "en"}).text = tag
if event.thumbnail:
SubElement(programme, "icon", attrib={"src": event.thumbnail})
if event.program.season or event.program.episode: if event.program.season or event.program.episode:
e_id = ".".join([event.program.season or "", event.program.episode or "", ""]) e_id = ".".join([event.program.season or "", event.program.episode or "", ""])
SubElement(programme, "episode-num", attrib={"system": "xmltv_ns"}).text = e_id SubElement(programme, "episode-num", attrib={"system": "xmltv_ns"}).text = e_id
if event.thumbnail:
SubElement(programme, "icon", attrib={"src": event.thumbnail})
if event.rating:
rating = SubElement(programme, "rating", attrib={"system": "MPAA"})
SubElement(rating, "value").text = event.rating
for tag in event.tags:
SubElement(programme, "category", attrib={"lang": "en"}).text = tag
return tostring(tv) return tostring(tv)

Loading…
Cancel
Save