about summary refs log tree commit diff
path: root/youtube_dl/extractor/ninenow.py
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2016-09-11 00:42:13 +0700
committerSergey M․ <dstftw@gmail.com>2016-09-11 00:42:13 +0700
commit56c0ead4d3b9f365f0562678504879be8e79b89c (patch)
treed8cb820e148db4b5e664f4f48dabbaf84e866e6e /youtube_dl/extractor/ninenow.py
parent732424375017a033f5b398b0f3dc2c6d47f3d3fd (diff)
downloadyoutube-dl-56c0ead4d3b9f365f0562678504879be8e79b89c.tar.gz
youtube-dl-56c0ead4d3b9f365f0562678504879be8e79b89c.tar.xz
youtube-dl-56c0ead4d3b9f365f0562678504879be8e79b89c.zip
[9now] Improve video data extraction (Closes #10561)
Diffstat (limited to 'youtube_dl/extractor/ninenow.py')
-rw-r--r--youtube_dl/extractor/ninenow.py22
1 files changed, 14 insertions, 8 deletions
diff --git a/youtube_dl/extractor/ninenow.py b/youtube_dl/extractor/ninenow.py
index 907b42609..351bea7ba 100644
--- a/youtube_dl/extractor/ninenow.py
+++ b/youtube_dl/extractor/ninenow.py
@@ -44,14 +44,20 @@ class NineNowIE(InfoExtractor):
         page_data = self._parse_json(self._search_regex(
             r'window\.__data\s*=\s*({.*?});', webpage,
             'page data'), display_id)
-        current_key = (
-            page_data.get('episode', {}).get('currentEpisodeKey') or
-            page_data.get('clip', {}).get('currentClipKey')
-        )
-        common_data = (
-            page_data.get('episode', {}).get('episodeCache', {}).get(current_key, {}).get('episode') or
-            page_data.get('clip', {}).get('clipCache', {}).get(current_key, {}).get('clip')
-        )
+
+        for kind in ('episode', 'clip'):
+            current_key = page_data.get(kind, {}).get(
+                'current%sKey' % kind.capitalize())
+            if not current_key:
+                continue
+            cache = page_data.get(kind, {}).get('%sCache' % kind, {})
+            if not cache:
+                continue
+            common_data = (cache.get(current_key) or list(cache.values())[0])[kind]
+            break
+        else:
+            raise ExtractorError('Unable to find video data')
+
         video_data = common_data['video']
 
         if video_data.get('drm'):