[francetv] Extract all the available formats (#3278)

For some videos the resolution is not included in the url, we will need to look in the m3u8 manifest.
totalwebcasting
Jaime Marquínez Ferrándiz 10 years ago
parent 65bc504db8
commit 7e8d73c183

@ -19,17 +19,35 @@ class FranceTVBaseInfoExtractor(InfoExtractor):
+ video_id, video_id, 'Downloading XML config') + video_id, video_id, 'Downloading XML config')
manifest_url = info.find('videos/video/url').text manifest_url = info.find('videos/video/url').text
video_url = manifest_url.replace('manifest.f4m', 'index_2_av.m3u8') manifest_url = manifest_url.replace('/z/', '/i/')
video_url = video_url.replace('/z/', '/i/')
if url.startswith('rtmp'):
formats = [{'url': manifest_url, 'ext': 'flv'}]
else:
formats = []
available_formats = self._search_regex(r'/[^,]*,(.*?),k\.mp4', manifest_url, 'available formats')
for index, format_descr in enumerate(available_formats.split(',')):
format_info = {
'url': manifest_url.replace('manifest.f4m', 'index_%d_av.m3u8' % index),
'ext': 'mp4',
}
m_resolution = re.search(r'(?P<width>\d+)x(?P<height>\d+)', format_descr)
if m_resolution is not None:
format_info.update({
'width': int(m_resolution.group('width')),
'height': int(m_resolution.group('height')),
})
formats.append(format_info)
thumbnail_path = info.find('image').text thumbnail_path = info.find('image').text
return {'id': video_id, return {
'ext': 'flv' if video_url.startswith('rtmp') else 'mp4', 'id': video_id,
'url': video_url, 'title': info.find('titre').text,
'title': info.find('titre').text, 'formats': formats,
'thumbnail': compat_urlparse.urljoin('http://pluzz.francetv.fr', thumbnail_path), 'thumbnail': compat_urlparse.urljoin('http://pluzz.francetv.fr', thumbnail_path),
'description': info.find('synopsis').text, 'description': info.find('synopsis').text,
} }
class PluzzIE(FranceTVBaseInfoExtractor): class PluzzIE(FranceTVBaseInfoExtractor):

Loading…
Cancel
Save