Compare commits
2 commits
847cbea1ca
...
eeeb2d7aba
Author | SHA1 | Date | |
---|---|---|---|
eeeb2d7aba | |||
ad6195eab8 |
2 changed files with 26 additions and 20 deletions
42
run.py
42
run.py
|
@ -2,6 +2,7 @@ import json
|
||||||
from datetime import datetime, timezone, timedelta
|
from datetime import datetime, timezone, timedelta
|
||||||
from os.path import exists as file_exists
|
from os.path import exists as file_exists
|
||||||
from urllib.request import Request, urlopen
|
from urllib.request import Request, urlopen
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
from constants import XMLTV, CITY
|
from constants import XMLTV, CITY
|
||||||
|
|
||||||
|
@ -28,6 +29,19 @@ def genre(_: str) -> str:
|
||||||
return '未知'
|
return '未知'
|
||||||
|
|
||||||
|
|
||||||
|
def request_url() -> str:
|
||||||
|
request = 'https://tvguide.myjcom.jp/api/getEpgInfo/?channels='
|
||||||
|
xmlfile = open('data/channels.xml', 'r', encoding='utf-8').read().splitlines()
|
||||||
|
|
||||||
|
for line in xmlfile:
|
||||||
|
tree = ET.ElementTree(ET.fromstring(line))
|
||||||
|
root = tree.getroot()
|
||||||
|
chid = root.attrib['id']
|
||||||
|
request += f'{chid}_{ymd}%2C'
|
||||||
|
|
||||||
|
return f'{request}&rectime=&rec4k='
|
||||||
|
|
||||||
|
|
||||||
if not file_exists('data/channels.xml'):
|
if not file_exists('data/channels.xml'):
|
||||||
c_area = CITY.OSAKA1.value
|
c_area = CITY.OSAKA1.value
|
||||||
c_adult = 'true'
|
c_adult = 'true'
|
||||||
|
@ -39,11 +53,7 @@ if not file_exists('data/channels.xml'):
|
||||||
channel_data = json.loads(channel_data)
|
channel_data = json.loads(channel_data)
|
||||||
|
|
||||||
for ch in channel_data['header']:
|
for ch in channel_data['header']:
|
||||||
|
chid = '{}_{}_{}_{}'.format(ch['channel_type'], ch['channel_id'], ch['network_id'], ymd)
|
||||||
chid = '{}_{}_{}_{}'.format(ch['channel_type'],
|
|
||||||
ch['channel_id'],
|
|
||||||
ch['network_id'],
|
|
||||||
ymd)
|
|
||||||
j1 = '200_00010_0_{}'.format(ymd)
|
j1 = '200_00010_0_{}'.format(ymd)
|
||||||
j2 = '200_00055_0_{}'.format(ymd)
|
j2 = '200_00055_0_{}'.format(ymd)
|
||||||
|
|
||||||
|
@ -55,15 +65,9 @@ if not file_exists('data/channels.xml'):
|
||||||
else:
|
else:
|
||||||
guide.channels = open('data/channels.xml', mode='r', encoding='UTF-8').read().splitlines()
|
guide.channels = open('data/channels.xml', mode='r', encoding='UTF-8').read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
for x in range(0, 7):
|
for x in range(0, 7):
|
||||||
req = Request('https://tvguide.myjcom.jp/api/getEpgInfo/?channels=2_40960_32112_{}%2C2_2056_32721_{}%2C2_43056_32086_{}%2C2_2064_32722_{}%2C2_42032_32102_{}%2C2_2072_32723_{}%2C2_41008_32118_{}%2C2_2080_32724_{}%2C2_2088_32725_{}%2C3_101_4_{}%2C3_103_4_{}%2C3_141_4_{}%2C3_151_4_{}%2C3_161_4_{}%2C3_171_4_{}%2C3_181_4_{}%2C3_191_4_{}%2C3_192_4_{}%2C3_193_4_{}%2C3_101_11_{}%2C3_141_11_{}%2C3_151_11_{}%2C3_161_11_{}%2C3_171_11_{}%2C3_181_11_{}%2C3_191_11_{}%2C120_200_4_{}%2C120_201_4_{}%2C120_202_4_{}%2C120_032_65406_{}%2C120_140_65406_{}%2C120_172_65406_{}%2C120_192_65406_{}%2C120_129_65406_{}%2C120_203_65406_{}%2C120_103_65406_{}%2C120_179_65406_{}%2C120_033_65406_{}%2C120_034_65406_{}%2C120_037_65406_{}%2C120_152_65406_{}%2C120_227_65534_{}%2C120_180_65406_{}%2C120_185_65406_{}%2C120_249_65406_{}%2C120_102_65406_{}%2C120_257_65534_{}%2C120_038_65406_{}%2C120_156_65406_{}%2C120_150_65406_{}%2C120_175_65406_{}%2C120_161_65406_{}%2C120_265_65406_{}%2C120_147_65406_{}%2C120_128_65406_{}%2C120_146_65406_{}%2C120_167_65406_{}%2C120_166_65406_{}%2C120_168_65406_{}%2C120_169_65406_{}%2C120_158_65406_{}%2C120_132_65534_{}%2C120_106_65406_{}%2C120_411_65527_{}%2C120_412_65527_{}%2C120_413_65527_{}%2C120_414_65527_{}%2C120_415_65527_{}%2C120_416_65527_{}%2C120_417_65527_{}%2C120_419_65527_{}%2C120_039_65406_{}%2C120_122_65534_{}%2C120_155_65406_{}%2C120_133_65534_{}%2C120_151_65406_{}%2C120_125_65534_{}%2C120_159_65406_{}%2C120_173_65406_{}%2C120_127_65406_{}%2C120_195_65406_{}%2C120_131_65534_{}%2C120_126_65406_{}%2C120_135_65534_{}%2C120_144_65406_{}%2C120_141_65406_{}%2C120_176_65406_{}%2C120_123_65534_{}%2C120_157_65406_{}%2C120_148_65406_{}%2C120_153_65406_{}%2C120_149_65406_{}%2C120_163_65406_{}%2C120_171_65406_{}%2C120_183_65406_{}%2C120_182_65406_{}%2C120_130_65406_{}%2C120_134_65534_{}%2C120_142_65406_{}%2C120_121_65534_{}%2C120_186_65406_{}%2C120_196_65406_{}%2C120_145_65406_{}%2C120_160_65406_{}%2C120_137_65406_{}%2C120_138_65406_{}%2C120_139_65406_{}%2C120_136_65406_{}%2C120_184_65406_{}%2C120_190_65406_{}%2C120_188_65406_{}%2C120_181_65406_{}%2C120_154_65406_{}%2C120_174_65406_{}%2C120_191_65406_{}%2C120_143_65406_{}%2C120_187_65406_{}%2C120_104_65406_{}%2C120_105_65406_{}%2C120_170_65406_{}%2C120_164_65406_{}%2C120_165_65406_{}%2C120_287_65534_{}%2C120_288_65406_{}%2C120_035_65406_{}%2C120_036_65406_{}%2C120_290_65534_{}%2C120_291_65534_{}%2C120_293_65534_{}%2C120_292_65534_{}%2C120_294_65406_{}%2C120_295_65406_{}&rectime=&rec4k='
|
req = Request(request_url())
|
||||||
.format(ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd,
|
|
||||||
ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd,
|
|
||||||
ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd,
|
|
||||||
ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd,
|
|
||||||
ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd,
|
|
||||||
ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd, ymd,
|
|
||||||
ymd, ymd, ymd, ymd, ymd, ymd))
|
|
||||||
req.add_header('user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36')
|
req.add_header('user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36')
|
||||||
data = urlopen(req).read()
|
data = urlopen(req).read()
|
||||||
data = json.loads(data)
|
data = json.loads(data)
|
||||||
|
@ -71,17 +75,19 @@ for x in range(0, 7):
|
||||||
for chid in data:
|
for chid in data:
|
||||||
for epg_data in data[chid]:
|
for epg_data in data[chid]:
|
||||||
channel = chid[0:chid.rfind('_')]
|
channel = chid[0:chid.rfind('_')]
|
||||||
title = epg_data['title']
|
title = fix(epg_data['title'])
|
||||||
comment = epg_data['commentary']
|
comment = fix(epg_data['commentary'])
|
||||||
start = str(epg_data['programStart'])
|
start = str(epg_data['programStart'])
|
||||||
start = datetime(int(start[0:4]), int(start[4:6]), int(start[6:8]), int(start[8:10]), int(start[10:12]), int(start[12:14])).timestamp()
|
start = datetime(int(start[0:4]), int(start[4:6]), int(start[6:8]), int(start[8:10]), int(start[10:12]), int(start[12:14])).timestamp() - 32400
|
||||||
|
start = datetime.fromtimestamp(start).strftime('%Y%m%d%H%M%S')
|
||||||
end = str(epg_data['programEnd'])
|
end = str(epg_data['programEnd'])
|
||||||
end = datetime(int(end[0:4]), int(end[4:6]), int(end[6:8]), int(end[8:10]), int(end[10:12]), int(end[12:14])).timestamp()
|
end = datetime(int(end[0:4]), int(end[4:6]), int(end[6:8]), int(end[8:10]), int(end[10:12]), int(end[12:14])).timestamp() - 32400
|
||||||
|
end = datetime.fromtimestamp(end).strftime('%Y%m%d%H%M%S')
|
||||||
gen = genre(epg_data['sortGenre'])
|
gen = genre(epg_data['sortGenre'])
|
||||||
attr = epg_data['attr']
|
attr = epg_data['attr']
|
||||||
icon = 'https://tvguide.myjcom.jp{}'.format(epg_data['imgPath']) if int(epg_data['hasImage']) == 1 and epg_data['imgPath'] else None
|
icon = 'https://tvguide.myjcom.jp{}'.format(epg_data['imgPath']) if int(epg_data['hasImage']) == 1 and epg_data['imgPath'] else None
|
||||||
|
|
||||||
guide.add_programme(channel, title, comment, str(start)[:-2], str(end)[:-2], gen, attr, icon)
|
guide.add_programme(channel, title, comment, start, end, gen, attr, icon)
|
||||||
|
|
||||||
print('Added EPG info for', title)
|
print('Added EPG info for', title)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue