dislike_count <? 50 & description" .
--no-playlist If the URL refers to a video and a
playlist, download only the video.
+ --yes-playlist If the URL refers to a video and a
+ playlist, download the playlist.
--age-limit YEARS download only videos suitable for the given
age
--download-archive FILE Download only videos not listed in the
config_url = compat_urllib_parse.unquote(self._html_search_regex(
r'''(?x)
(?:
- <param\s+name="flashvars"\s+value="config=|
+ <param\s+name="flashvars".*?\s+value="config=|
flashvars="config=
)
- ([^"&]+)
+ (https?://[^"&]+)
''',
webpage, 'config URL'))
formats = []
+ ad_formats = []
def _add_format(name, cfgurl, quality):
config = self._download_json(
transform_source=js_to_json)
playlist = config['playlist']
- video_url = next(
- p['url'] for p in playlist
- if p.get('eventCategory') == 'Video')
- formats.append({
- 'url': video_url,
- 'format_id': name,
- 'quality': quality,
- })
+ for p in playlist:
+ if p.get('eventCategory') == 'Video':
+ ar = formats
+ elif p.get('eventCategory') == 'Video Postroll':
+ ar = ad_formats
+ else:
+ continue
+
+ ar.append({
+ 'url': p['url'],
+ 'format_id': name,
+ 'quality': quality,
+ })
_add_format('normal', config_url, quality=0)
hq_url = (config_url +
_add_format('hq', hq_url, quality=1)
except ExtractorError:
pass # That's fine, we'll just use normal quality
-
self._sort_formats(formats)
- return {
+ res = {
'id': video_id,
'formats': formats,
'uploader': uploader,
'thumbnail': self._og_search_thumbnail(webpage),
'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
IE_NAME = 'mitele.es'
_VALID_URL = r'http://www\.mitele\.es/[^/]+/[^/]+/[^/]+/(?P<id>[^/]+)/'
- _TEST = {
+ _TESTS = [{
'url': 'http://www.mitele.es/programas-tv/diario-de/la-redaccion/programa-144/',
'md5': '6a75fe9d0d3275bead0cb683c616fddb',
'info_dict': {
'display_id': 'programa-144',
'duration': 2913,
},
- }
+ }]
def _real_extract(self, url):
episode = self._match_id(url)
class TelecincoIE(MiTeleIE):
IE_NAME = 'telecinco.es'
- _VALID_URL = r'https?://www\.telecinco\.es/[^/]+/[^/]+/[^/]+/(?P<id>.*?)\.html'
+ _VALID_URL = r'https?://www\.telecinco\.es/[^/]+/[^/]+/(?:[^/]+/)?(?P<id>.*?)\.html'
- _TEST = {
+ _TESTS = [{
'url': 'http://www.telecinco.es/robinfood/temporada-01/t01xp14/Bacalao-cocochas-pil-pil_0_1876350223.html',
'info_dict': {
'id': 'MDSVID20141015_0058',
'title': 'Con MartÃn Berasategui, hacer un bacalao al ...',
'duration': 662,
},
- }
+ }, {
+ 'url': 'http://www.telecinco.es/informativos/nacional/Pablo_Iglesias-Informativos_Telecinco-entrevista-Pedro_Piqueras_2_1945155182.html',
+ 'only_matching': True,
+ }]
compiled_regex_type = type(re.compile(''))
std_headers = {
- 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 (Chrome)',
+ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20150101 Firefox/20.0 (Chrome)',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
from __future__ import unicode_literals
-__version__ = '2015.02.24.2'
+__version__ = '2015.02.26'