]>
code.delx.au - webdl/blob - ten.py
1 from common
import grab_json
, download_hls
, Node
, append_to_qs
3 SERIES_LIST_URL
= "https://vod.ten.com.au/config/android-v4"
4 SERIES_DETAIL_URL
= "https://v.tenplay.com.au/api/videos/bcquery"
6 class TenVideoNode(Node
):
7 def __init__(self
, title
, parent
, video_url
):
8 Node
.__init
__(self
, title
, parent
)
9 self
.can_download
= True
10 self
.video_url
= video_url
13 filename
= self
.title
+ ".ts"
14 return download_hls(filename
, self
.video_url
)
16 class TenSeriesNode(Node
):
17 def __init__(self
, title
, parent
, query
, clean_name
):
18 Node
.__init
__(self
, title
, parent
)
21 self
.clean_name
= clean_name
22 self
.video_ids
= set()
24 def fill_children(self
):
26 while page_number
< 100:
27 url
= self
.get_page_url(self
.query
, page_number
)
35 for video_desc
in items
:
36 self
.process_video(video_desc
)
38 def get_page_url(self
, query
, page_number
):
39 return append_to_qs(SERIES_DETAIL_URL
, {
40 "command": "search_videos",
41 "all": "video_type_long_form:Full+Episode",
43 "page_number": str(page_number
),
46 def process_video(self
, video_desc
):
47 video_id
= video_desc
["id"]
48 video_url
= video_desc
["HLSURL"]
49 title
= video_desc
["name"]
51 if video_id
in self
.video_ids
:
53 self
.video_ids
.add(video_id
)
55 TenVideoNode(title
, self
, video_url
)
57 class TenRootNode(Node
):
58 def fill_children(self
):
59 doc
= grab_json(SERIES_LIST_URL
)
61 for series
in doc
["Browse TV"]["Shows"]:
62 title
= series
["title"]
63 query
= series
["query"] + series
["episodefilter"]
64 clean_name
= series
["cleanname"]
66 TenSeriesNode(title
, self
, query
, clean_name
)
68 def fill_nodes(root_node
):
69 TenRootNode("Ten", root_node
)