fix embed-player extractor

This commit is contained in:
Argn0 2017-07-16 17:54:01 +02:00 committed by GitHub
parent 0ba69a77e1
commit b9a3b64d48

View File

@ -21,24 +21,28 @@ from ..utils import (
class ViceBaseIE(AdobePassIE): class ViceBaseIE(AdobePassIE):
def _extract_preplay_video(self, url, locale, webpage): def _extract_preplay_video(self, url, locale, webpage):
try:
prefetch_data = self._parse_json(self._search_regex(
r'window\.__PREFETCH_DATA\s*=\s*({.*});',
webpage, 'prefetch data'), None, fatal=False)
if prefetch_data:
if prefetch_data.get('data'):
prefetch_data = prefetch_data.get('data')
prefetch_data = prefetch_data.get('video')
video_id = prefetch_data.get('id')
title = prefetch_data.get('title')
is_locked = prefetch_data.get('locked') == '1' or prefetch_data.get('locked') == 'true'
watch_hub_data = {}
else:
prefetch_data = {}
watch_hub_data = extract_attributes(self._search_regex( watch_hub_data = extract_attributes(self._search_regex(
r'(?s)(<watch-hub\s*.+?</watch-hub>)', webpage, 'watch hub')) r'(?s)(<watch-hub\s*.+?</watch-hub>)', webpage, 'watch hub'))
video_id = watch_hub_data['vms-id'] video_id = watch_hub_data['vms-id']
title = watch_hub_data['video-title'] title = watch_hub_data['video-title']
except: is_locked = watch_hub_data.get('video-locked') == '1'
embed_player = extract_attributes(self._search_regex(
r'(?s)(<embed-player\s*.+?</embed-player>)', webpage, 'embed player'))
video_id = embed_player['vms-id']
title = embed_player['video-title']
watch_hub_data = {'thumbnail': embed_player.get('img'),
'show-title': embed_player.get('show-title'),
'channel-title': embed_player.get('channel-title'),
'uploader': embed_player.get('channel-id')
}
query = {} query = {}
is_locked = watch_hub_data.get('video-locked') == '1'
if is_locked: if is_locked:
resource = self._get_mvpd_resource( resource = self._get_mvpd_resource(
'VICELAND', title, video_id, 'VICELAND', title, video_id,
@ -86,8 +90,10 @@ class ViceBaseIE(AdobePassIE):
'id': video_id, 'id': video_id,
'title': title, 'title': title,
'description': base.get('body') or base.get('display_body'), 'description': base.get('body') or base.get('display_body'),
'thumbnail': watch_hub_data.get('cover-image') or watch_hub_data.get('thumbnail'), 'thumbnail': prefetch_data.get('thumbnail_url') or watch_hub_data.get('cover-image') or watch_hub_data.get(
'duration': int_or_none(video_data.get('video_duration')) or parse_duration(watch_hub_data.get('video-duration')), 'thumbnail'),
'duration': int_or_none(video_data.get('video_duration')) or parse_duration(
watch_hub_data.get('video-duration')),
'timestamp': int_or_none(video_data.get('created_at'), 1000), 'timestamp': int_or_none(video_data.get('created_at'), 1000),
'age_limit': parse_age_limit(video_data.get('video_rating')), 'age_limit': parse_age_limit(video_data.get('video_rating')),
'series': video_data.get('show_title') or watch_hub_data.get('show-title'), 'series': video_data.get('show_title') or watch_hub_data.get('show-title'),
@ -154,6 +160,9 @@ class ViceIE(ViceBaseIE):
}, { }, {
'url': 'https://video.vice.com/en_us/video/pizza-show-trailer/56d8c9a54d286ed92f7f30e4', 'url': 'https://video.vice.com/en_us/video/pizza-show-trailer/56d8c9a54d286ed92f7f30e4',
'only_matching': True, 'only_matching': True,
}, {
'url': 'https://video.vice.com/en_us/embed/57f41d3556a0a80f54726060',
'only_matching': True,
}] }]
_PREPLAY_HOST = 'video.vice' _PREPLAY_HOST = 'video.vice'
@ -281,11 +290,11 @@ class ViceArticleIE(InfoExtractor):
if youtube_url: if youtube_url:
return _url_res(youtube_url, 'Youtube') return _url_res(youtube_url, 'Youtube')
try: if prefetch_data.get('embed_code'):
video_url = self._html_search_regex( video_url = self._html_search_regex(
r'data-video-url="([^"]+)"', r'data-video-url="([^"]+)"',
prefetch_data['embed_code'], 'video URL') prefetch_data['embed_code'], 'video URL')
except TypeError: else:
video_url = self._html_search_regex( video_url = self._html_search_regex(
r'<\s*iframe\s*src=\s*"([^"]+)', r'<\s*iframe\s*src=\s*"([^"]+)',
body, 'video URL') body, 'video URL')