[escapist] Add support for advertisements

This commit is contained in:
Philipp Hagemeister 2015-02-26 00:59:53 +01:00
parent 13cd97f3df
commit 9a48926a57

View file

@ -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