X-Git-Url: https://code.delx.au/webdl/blobdiff_plain/1b3530446e51acaebf3745de577893cca1ba1e1b..facf419095b6d2a961a100008391fbca508ee918:/ten.py diff --git a/ten.py b/ten.py index 557b673..59d673c 100644 --- a/ten.py +++ b/ten.py @@ -1,6 +1,7 @@ +import logging from common import grab_json, download_hls, Node, append_to_qs -SERIES_LIST_URL = "https://vod.ten.com.au/config/android-v2" +SERIES_LIST_URL = "https://vod.ten.com.au/config/android-v4" SERIES_DETAIL_URL = "https://v.tenplay.com.au/api/videos/bcquery" class TenVideoNode(Node): @@ -14,25 +15,17 @@ class TenVideoNode(Node): return download_hls(filename, self.video_url) class TenSeriesNode(Node): - def __init__(self, title, parent, query, clean_name): + def __init__(self, title, parent, query, expected_tv_show): Node.__init__(self, title, parent) self.title = title self.query = query - self.clean_name = clean_name + self.expected_tv_show = expected_tv_show self.video_ids = set() def fill_children(self): - self.fill_children_with_query(self.query) - - if "&none" not in self.query: - # Some videos are not categorised correctly, so try looking up by the cleanname as well. - # Only do this if they haven't tried to filter out similarly named shows. - self.fill_children_with_query("&all=tv_show_group:" + self.clean_name) - - def fill_children_with_query(self, query): page_number = 0 while page_number < 100: - url = self.get_page_url(query, page_number) + url = self.get_page_url(self.query, page_number) page_number += 1 page = grab_json(url) @@ -46,7 +39,6 @@ class TenSeriesNode(Node): def get_page_url(self, query, page_number): return append_to_qs(SERIES_DETAIL_URL, { "command": "search_videos", - "all": "video_type_long_form:Full+Episode", "page_size": "30", "page_number": str(page_number), }) + query @@ -54,10 +46,14 @@ class TenSeriesNode(Node): def process_video(self, video_desc): video_id = video_desc["id"] video_url = video_desc["HLSURL"] + tv_show = video_desc["customFields"]["tv_show"] title = video_desc["name"] if video_id in self.video_ids: return + if tv_show != self.expected_tv_show: + logging.warn("Skipping unexpected video: %s != %s", tv_show, self.expected_tv_show) + return self.video_ids.add(video_id) TenVideoNode(title, self, video_url) @@ -68,10 +64,10 @@ class TenRootNode(Node): for series in doc["Browse TV"]["Shows"]: title = series["title"] - query = series["query"] - clean_name = series["cleanname"] + query = series["query"] + series["episodefilter"] + expected_tv_show = series["tv_show"] - TenSeriesNode(title, self, query, clean_name) + TenSeriesNode(title, self, query, expected_tv_show) def fill_nodes(root_node): TenRootNode("Ten", root_node)