MyJCOM2XMLTV/constants.py

81 lines
2.9 KiB
Python

from enum import Enum
class CITY(Enum):
TOKYO1 = 12
TOKYO2 = 221
TOKYO3 = 222
OSAKA1 = 28
OSAKA2 = 40
OSAKA3 = 42
OSAKA4 = 44
OSAKA5 = 30
KYOTO = 46
HYOGO = 106
WAKAYAMA = 25
YAMAGUCHI = 39
FUKUOKA = 37
KUMAMOTO = 227
HOKKAIDO = 1
MIYAGI = 52
GUNMA = 13
IBARAKI = 2
CHIBA1 = 3
CHIBA2 = 217
CHIBA3 = 219
CHIBA4 = 300
KANAGAWA1 = 101
KANAGAWA2 = 201
SAITAMA1 = 3
SAITAMA2 = 214
class XMLTV:
def __init__(self):
self.channels = []
self.programmes = []
def add_channel(self, channel, display_name, icon):
if ('<channel id="{}"><display-name>{}</display-name><icon src="{}" /></channel>\n'
.format(channel, display_name, icon) not in self.channels):
self.channels.append('<channel id="{}">'
'<display-name>{}</display-name>'
'<icon src="{}" />'
'</channel>\n'.format(channel, display_name, icon))
def write_channels(self):
for c in self.channels:
open('data/channels.xml', mode='a', encoding='UTF-8').write(c)
def add_programme(self, channel, title, desc, start, stop, category, attr, icon):
# TODO: add `duo` attribute (bilingual)
programme = '<programme start="{} +0000" stop="{} +0000" channel="{}">'.format(start, stop, channel)
programme += '<title lang="ja">{}</title>'.format(title)
programme += '<desc>{}</desc>'.format(desc)
programme += '<category lang="ja">{}</category>'.format(category)
if icon: programme += '<icon src="{}"/>'.format(icon)
if '5.1' in attr: programme += '<audio><stereo>surround</stereo></audio>'
if 'stereo' in attr: programme += '<audio><stereo>stereo</stereo></audio>'
if 'mono' in attr: programme += '<audio><stereo>mono</stereo></audio>'
if 'hd' in attr: programme += '<video><present>yes</present><aspect>16:9</aspect><quality>HDTV</quality></video>'
if '4k' in attr: programme += '<video><present>yes></present><aspect>16:9</aspect><quality>3840x2160</quality></video>'
if 'cp1' in attr: programme += '<subtitles type="teletext"/>'
programme += '</programme>\n'
self.programmes.append(programme)
def create(self):
with open('data/epg.xml', mode='w', encoding='UTF-8') as epg:
epg.write('<?xml version="1.0" encoding="UTF-8"?>\n')
epg.write('<!DOCTYPE tv SYSTEM "xmltv.dtd">\n')
epg.write('<tv source-info-name="EPG Grabber">\n')
for channel in self.channels:
epg.write(f'{channel}\n')
for prg in self.programmes:
epg.write(prg)
epg.write('</tv>')
def _show_channels(self):
print(self.channels)
def _show_programmes(self):
print(self.programmes)