[bigflix] Improve formats extraction

This commit is contained in:
Sergey M․ 2016-01-10 10:49:27 +06:00
parent 6e99d5762a
commit a9bbd26f1d

View File

@ -20,7 +20,7 @@ class BigflixIE(InfoExtractor):
'description': 'md5:3d2ba5815f14911d5cc6a501ae0cf65d', 'description': 'md5:3d2ba5815f14911d5cc6a501ae0cf65d',
} }
}, { }, {
# multiple formats # 2 formats
'url': 'http://www.bigflix.com/Tamil-movies/Drama-movies/Madarasapatinam/16070', 'url': 'http://www.bigflix.com/Tamil-movies/Drama-movies/Madarasapatinam/16070',
'info_dict': { 'info_dict': {
'id': '16070', 'id': '16070',
@ -32,6 +32,10 @@ class BigflixIE(InfoExtractor):
'params': { 'params': {
'skip_download': True, 'skip_download': True,
} }
}, {
# multiple formats
'url': 'http://www.bigflix.com/Malayalam-movies/Drama-movies/Indian-Rupee/15967',
'only_matching': True,
}] }]
def _real_extract(self, url): def _real_extract(self, url):
@ -45,20 +49,31 @@ class BigflixIE(InfoExtractor):
def decode_url(quoted_b64_url): def decode_url(quoted_b64_url):
return base64.b64decode(compat_urllib_parse_unquote( return base64.b64decode(compat_urllib_parse_unquote(
quoted_b64_url)).encode('ascii').decode('utf-8') quoted_b64_url).encode('ascii')).decode('utf-8')
formats = [{ formats = []
'url': decode_url(encoded_url), for height, encoded_url in re.findall(
'format_id': '%sp' % height, r'ContentURL_(\d{3,4})[pP][^=]+=([^&]+)', webpage):
'height': int(height), video_url = decode_url(encoded_url)
} for height, encoded_url in re.findall( f = {
r'ContentURL_(\d{3,4})[pP][^=]+=([^&]+)', webpage)] 'url': video_url,
'format_id': '%sp' % height,
'height': int(height),
}
if video_url.startswith('rtmp'):
f['ext'] = 'flv'
formats.append(f)
if not formats: file_url = self._search_regex(
formats.append({ r'file=([^&]+)', webpage, 'video url', default=None)
'url': decode_url(self._search_regex( if file_url:
r'file=([^&]+)', webpage, 'video url')), video_url = decode_url(file_url)
}) if all(f['url'] != video_url for f in formats):
formats.append({
'url': decode_url(file_url),
})
self._sort_formats(formats)
description = self._html_search_meta('description', webpage) description = self._html_search_meta('description', webpage)