|
|
@ -52,6 +52,7 @@ class EscapistIE(InfoExtractor):
|
|
|
|
webpage, 'config URL'))
|
|
|
|
webpage, 'config URL'))
|
|
|
|
|
|
|
|
|
|
|
|
formats = []
|
|
|
|
formats = []
|
|
|
|
|
|
|
|
ad_formats = []
|
|
|
|
|
|
|
|
|
|
|
|
def _add_format(name, cfgurl, quality):
|
|
|
|
def _add_format(name, cfgurl, quality):
|
|
|
|
config = self._download_json(
|
|
|
|
config = self._download_json(
|
|
|
@ -61,14 +62,19 @@ class EscapistIE(InfoExtractor):
|
|
|
|
transform_source=js_to_json)
|
|
|
|
transform_source=js_to_json)
|
|
|
|
|
|
|
|
|
|
|
|
playlist = config['playlist']
|
|
|
|
playlist = config['playlist']
|
|
|
|
video_url = next(
|
|
|
|
for p in playlist:
|
|
|
|
p['url'] for p in playlist
|
|
|
|
if p.get('eventCategory') == 'Video':
|
|
|
|
if p.get('eventCategory') == 'Video')
|
|
|
|
ar = formats
|
|
|
|
formats.append({
|
|
|
|
elif p.get('eventCategory') == 'Video Postroll':
|
|
|
|
'url': video_url,
|
|
|
|
ar = ad_formats
|
|
|
|
'format_id': name,
|
|
|
|
else:
|
|
|
|
'quality': quality,
|
|
|
|
continue
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
ar.append({
|
|
|
|
|
|
|
|
'url': p['url'],
|
|
|
|
|
|
|
|
'format_id': name,
|
|
|
|
|
|
|
|
'quality': quality,
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
_add_format('normal', config_url, quality=0)
|
|
|
|
_add_format('normal', config_url, quality=0)
|
|
|
|
hq_url = (config_url +
|
|
|
|
hq_url = (config_url +
|
|
|
@ -77,10 +83,9 @@ class EscapistIE(InfoExtractor):
|
|
|
|
_add_format('hq', hq_url, quality=1)
|
|
|
|
_add_format('hq', hq_url, quality=1)
|
|
|
|
except ExtractorError:
|
|
|
|
except ExtractorError:
|
|
|
|
pass # That's fine, we'll just use normal quality
|
|
|
|
pass # That's fine, we'll just use normal quality
|
|
|
|
|
|
|
|
|
|
|
|
self._sort_formats(formats)
|
|
|
|
self._sort_formats(formats)
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
res = {
|
|
|
|
'id': video_id,
|
|
|
|
'id': video_id,
|
|
|
|
'formats': formats,
|
|
|
|
'formats': formats,
|
|
|
|
'uploader': uploader,
|
|
|
|
'uploader': uploader,
|
|
|
@ -89,3 +94,19 @@ class EscapistIE(InfoExtractor):
|
|
|
|
'thumbnail': self._og_search_thumbnail(webpage),
|
|
|
|
'thumbnail': self._og_search_thumbnail(webpage),
|
|
|
|
'description': description,
|
|
|
|
'description': description,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if self._downloader.params.get('include_ads') and ad_formats:
|
|
|
|
|
|
|
|
self._sort_formats(ad_formats)
|
|
|
|
|
|
|
|
ad_res = {
|
|
|
|
|
|
|
|
'id': '%s-ad' % video_id,
|
|
|
|
|
|
|
|
'title': '%s (Postroll)' % title,
|
|
|
|
|
|
|
|
'formats': ad_formats,
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
|
|
|
'_type': 'playlist',
|
|
|
|
|
|
|
|
'entries': [res, ad_res],
|
|
|
|
|
|
|
|
'title': title,
|
|
|
|
|
|
|
|
'id': video_id,
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return res
|
|
|
|