]> code.delx.au - webdl/blobdiff - iview.py
Prefer ffmpeg if it is installed
[webdl] / iview.py
index c2b7c5c056bca9ff420eac5d6fa5714f43300298..7efe031ce3097d5174b49a34c5cff5a9961e96e1 100644 (file)
--- a/iview.py
+++ b/iview.py
@@ -29,8 +29,10 @@ class IviewEpisodeNode(Node):
     def find_hls_url(self, playlist):
         for video in playlist:
             if video["type"] == "program":
-                return video["hls-high"].replace("http:", "https:")
-        raise Exception("Missing hls-high program stream for " + self.video_key)
+                for quality in ["hls-plus", "hls-high"]:
+                    if quality in video:
+                        return video[quality].replace("http:", "https:")
+        raise Exception("Missing program stream for " + self.video_key)
 
     def get_auth_details(self):
         with requests_cache.disabled():
@@ -64,9 +66,10 @@ class IviewIndexNode(Node):
 
     def fill_children(self):
         info = grab_json(self.url)
-        for index_list in info["index"]:
-            for ep_info in index_list["episodes"]:
-                self.add_series(ep_info)
+        for key in ["carousels", "collections", "index"]:
+            for collection_list in info[key]:
+                for ep_info in collection_list.get("episodes", []):
+                    self.add_series(ep_info)
 
     def add_series(self, ep_info):
         title = ep_info["seriesTitle"]
@@ -86,7 +89,7 @@ class IviewSeriesNode(Node):
         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):
@@ -114,6 +117,7 @@ class IviewRootNode(Node):
         category("Lifestyle", "lifestyle")
         category("News & Current Affairs", "news")
         category("Panel & Discussion", "panel")
+        category("Regional Australia", "regional")
         category("Sport", "sport")
 
     def load_channels(self):