import requests_cache
import urllib.parse
-API_URL = "http://iview.abc.net.au/api"
-AUTH_URL = "http://iview.abc.net.au/auth"
+API_URL = "https://iview.abc.net.au/api"
+AUTH_URL = "https://iview.abc.net.au/auth"
def format_episode_title(series, ep):
if ep:
def download(self):
info = grab_json(API_URL + "/programs/" + self.video_key)
+ if "playlist" not in info:
+ return False
video_url = self.find_hls_url(info["playlist"])
token, token_hostname= self.get_auth_details()
video_url = self.add_auth_token_to_url(video_url, token, token_hostname)
def fill_children(self):
info = grab_json(self.url)
for key in ["carousels", "collections", "index"]:
- for collection_list in info[key]:
- for ep_info in collection_list["episodes"]:
- self.add_series(ep_info)
+ for collection_list in info.get(key, None):
+ if isinstance(collection_list, dict):
+ for ep_info in collection_list.get("episodes", []):
+ self.add_series(ep_info)
def add_series(self, ep_info):
title = ep_info["seriesTitle"]
series_slug = ep_info["href"].split("/")[1]
series_url = API_URL + "/series/" + series_slug + "/" + ep_info["seriesHouseNumber"]
info = grab_json(series_url)
- for ep_info in info["episodes"]:
+ for ep_info in info.get("episodes", []):
add_episode(self, ep_info)
class IviewFlatNode(Node):
category("Lifestyle", "lifestyle")
category("News & Current Affairs", "news")
category("Panel & Discussion", "panel")
+ category("Regional Australia", "regional")
category("Sport", "sport")
def load_channels(self):