diff options
author | Sergey M․ <dstftw@gmail.com> | 2016-09-11 00:42:13 +0700 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2016-09-11 00:42:13 +0700 |
commit | 56c0ead4d3b9f365f0562678504879be8e79b89c (patch) | |
tree | d8cb820e148db4b5e664f4f48dabbaf84e866e6e | |
parent | 732424375017a033f5b398b0f3dc2c6d47f3d3fd (diff) |
[9now] Improve video data extraction (Closes #10561)
-rw-r--r-- | youtube_dl/extractor/ninenow.py | 22 |
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'): |