64 lines
2.9 KiB
Python
64 lines
2.9 KiB
Python
import datetime
|
|
|
|
|
|
class OriginEPG():
|
|
|
|
def __init__(self, fhdhr):
|
|
self.fhdhr = fhdhr
|
|
|
|
self.base_epg_url = "https://ott-gateway-stirr.sinclairstoryline.com/api/rest/v3/program/stirr/ott/"
|
|
|
|
def update_epg(self, fhdhr_channels):
|
|
programguide = {}
|
|
|
|
for fhdhr_id in list(fhdhr_channels.list.keys()):
|
|
chan_obj = fhdhr_channels.list[fhdhr_id]
|
|
|
|
if str(chan_obj.number) not in list(programguide.keys()):
|
|
programguide[str(chan_obj.number)] = chan_obj.epgdict
|
|
|
|
epg_opn = self.fhdhr.web.session.get(self.base_epg_url + str(chan_obj.dict["origin_id"]))
|
|
epg_json = epg_opn.json()
|
|
|
|
current_channel_id = chan_obj.dict["origin_id"]
|
|
|
|
for listing in epg_json["programme"]:
|
|
|
|
if listing["channel"] != current_channel_id:
|
|
listing_chan_obj = fhdhr_channels.get_channel_obj("origin_id", listing["channel"])
|
|
if str(listing_chan_obj.number) not in list(programguide.keys()):
|
|
programguide[str(listing_chan_obj.number)] = listing_chan_obj.epgdict
|
|
else:
|
|
listing_chan_obj = chan_obj
|
|
|
|
timestampdict = self.stirr_time_convert(listing["start"], listing["stop"])
|
|
|
|
clean_prog_dict = {
|
|
"time_start": timestampdict["start"],
|
|
"time_end": timestampdict["end"],
|
|
"duration_minutes": timestampdict["duration"],
|
|
"title": listing["title"]["value"],
|
|
"sub-title": "Unavailable",
|
|
"description": listing["desc"]["value"],
|
|
"rating": "N/A",
|
|
"episodetitle": None,
|
|
"releaseyear": None,
|
|
"genres": [],
|
|
"seasonnumber": None,
|
|
"episodenumber": None,
|
|
"isnew": False,
|
|
"id": "%s_%s" % (chan_obj.dict["origin_id"], timestampdict['time_start']),
|
|
"thumbnail": None
|
|
}
|
|
|
|
if not any((d['time_start'] == clean_prog_dict['time_start'] and d['id'] == clean_prog_dict['id']) for d in programguide[listing_chan_obj.number]["listing"]):
|
|
programguide[str(listing_chan_obj.number)]["listing"].append(clean_prog_dict)
|
|
|
|
return programguide
|
|
|
|
def stirr_time_convert(self, starttime, endtime):
|
|
starttime = datetime.datetime.strptime(str(starttime), "%Y%m%d%H%M%S").timestamp()
|
|
endtime = datetime.datetime.strptime(str(endtime), "%Y%m%d%H%M%S").timestamp()
|
|
duration = (endtime - starttime) / 60
|
|
return {"start": starttime, "end": endtime, "duration": duration}
|