[bigflix] Improve formats extraction

pull/8/head
Sergey M․ 9 years ago
parent 6e99d5762a
commit a9bbd26f1d

@ -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,21 +49,32 @@ 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(
r'ContentURL_(\d{3,4})[pP][^=]+=([^&]+)', webpage):
video_url = decode_url(encoded_url)
f = {
'url': video_url,
'format_id': '%sp' % height, 'format_id': '%sp' % height,
'height': int(height), 'height': int(height),
} for height, encoded_url in re.findall( }
r'ContentURL_(\d{3,4})[pP][^=]+=([^&]+)', webpage)] if video_url.startswith('rtmp'):
f['ext'] = 'flv'
formats.append(f)
if not formats: file_url = self._search_regex(
r'file=([^&]+)', webpage, 'video url', default=None)
if file_url:
video_url = decode_url(file_url)
if all(f['url'] != video_url for f in formats):
formats.append({ formats.append({
'url': decode_url(self._search_regex( 'url': decode_url(file_url),
r'file=([^&]+)', webpage, 'video url')),
}) })
self._sort_formats(formats)
description = self._html_search_meta('description', webpage) description = self._html_search_meta('description', webpage)
return { return {

Loading…
Cancel
Save