commit 56c0ead4d3b9f365f0562678504879be8e79b89c
parent 732424375017a033f5b398b0f3dc2c6d47f3d3fd
Author: Sergey M․ <dstftw@gmail.com>
Date: Sun, 11 Sep 2016 00:42:13 +0700
[9now] Improve video data extraction (Closes #10561)
Diffstat:
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git 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'):