[arte] Make sure the format_id is unique (closes #1739)

Include the bitrate and use the height instead of the quality field.
This commit is contained in:
Jaime Marquínez Ferrándiz 2013-11-09 19:01:23 +01:00
parent 81be02d2f9
commit 566d4e0425

View file

@ -10,6 +10,7 @@ from ..utils import (
unified_strdate, unified_strdate,
determine_ext, determine_ext,
get_element_by_id, get_element_by_id,
compat_str,
) )
# There are different sources of video in arte.tv, the extraction process # There are different sources of video in arte.tv, the extraction process
@ -191,10 +192,13 @@ class ArteTVPlus7IE(InfoExtractor):
formats = sorted(formats, key=lambda f: re.match(r'VO(F|A)-STM\1', f.get('versionCode', '')) is None) formats = sorted(formats, key=lambda f: re.match(r'VO(F|A)-STM\1', f.get('versionCode', '')) is None)
# Pick the best quality # Pick the best quality
def _format(format_info): def _format(format_info):
quality = format_info['quality'] quality = ''
m_quality = re.match(r'\w*? - (\d*)p', quality) height = format_info.get('height')
if m_quality is not None: if height is not None:
quality = m_quality.group(1) quality = compat_str(height)
bitrate = format_info.get('bitrate')
if bitrate is not None:
quality += '-%d' % bitrate
if format_info.get('versionCode') is not None: if format_info.get('versionCode') is not None:
format_id = u'%s-%s' % (quality, format_info['versionCode']) format_id = u'%s-%s' % (quality, format_info['versionCode'])
else: else:
@ -203,7 +207,7 @@ class ArteTVPlus7IE(InfoExtractor):
'format_id': format_id, 'format_id': format_id,
'format_note': format_info.get('versionLibelle'), 'format_note': format_info.get('versionLibelle'),
'width': format_info.get('width'), 'width': format_info.get('width'),
'height': format_info.get('height'), 'height': height,
} }
if format_info['mediaType'] == u'rtmp': if format_info['mediaType'] == u'rtmp':
info['url'] = format_info['streamer'] info['url'] = format_info['streamer']