[9now] Improve video data extraction (Closes #10561)

This commit is contained in:
Sergey M․ 2016-09-11 00:42:13 +07:00
parent 7324243750
commit 56c0ead4d3
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

View File

@ -44,14 +44,20 @@ def _real_extract(self, url):
page_data = self._parse_json(self._search_regex( page_data = self._parse_json(self._search_regex(
r'window\.__data\s*=\s*({.*?});', webpage, r'window\.__data\s*=\s*({.*?});', webpage,
'page data'), display_id) 'page data'), display_id)
current_key = (
page_data.get('episode', {}).get('currentEpisodeKey') or for kind in ('episode', 'clip'):
page_data.get('clip', {}).get('currentClipKey') current_key = page_data.get(kind, {}).get(
) 'current%sKey' % kind.capitalize())
common_data = ( if not current_key:
page_data.get('episode', {}).get('episodeCache', {}).get(current_key, {}).get('episode') or continue
page_data.get('clip', {}).get('clipCache', {}).get(current_key, {}).get('clip') 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'] video_data = common_data['video']
if video_data.get('drm'): if video_data.get('drm'):