Remove quality_name field and improve zdf extractor

This commit is contained in:
Philipp Hagemeister 2013-11-25 03:28:55 +01:00
parent 02dbf93f0e
commit c059bdd432
3 changed files with 17 additions and 9 deletions

View file

@ -871,8 +871,6 @@ def format_note(fdict):
res = u'' res = u''
if fdict.get('format_note') is not None: if fdict.get('format_note') is not None:
res += fdict['format_note'] + u' ' res += fdict['format_note'] + u' '
if fdict.get('quality_name') is not None:
res += u'%s ' % fdict['quality_name']
if fdict.get('vcodec') is not None: if fdict.get('vcodec') is not None:
res += u'%-5s' % fdict['vcodec'] res += u'%-5s' % fdict['vcodec']
elif fdict.get('vbr') is not None: elif fdict.get('vbr') is not None:

View file

@ -76,7 +76,6 @@ class InfoExtractor(object):
* acodec Name of the audio codec in use * acodec Name of the audio codec in use
* vbr Average video bitrate in KBit/s * vbr Average video bitrate in KBit/s
* vcodec Name of the video codec in use * vcodec Name of the video codec in use
* quality_name Human-readable name of the video quality.
* filesize The number of bytes, if known in advance * filesize The number of bytes, if known in advance
webpage_url: The url to the video webpage, if given to youtube-dl it webpage_url: The url to the video webpage, if given to youtube-dl it
should allow to get the same result again. (It will be set should allow to get the same result again. (It will be set

View file

@ -52,6 +52,9 @@ def xml_to_format(fnode):
(?P<proto>[^_]+)_(?P<index>[^_]+)_(?P<indexproto>[^_]+) (?P<proto>[^_]+)_(?P<index>[^_]+)_(?P<indexproto>[^_]+)
''', format_id) ''', format_id)
ext = format_m.group('container')
is_supported = ext != 'f4f'
PROTO_ORDER = ['http', 'rtmp', 'rtsp'] PROTO_ORDER = ['http', 'rtmp', 'rtsp']
try: try:
proto_pref = -PROTO_ORDER.index(format_m.group('proto')) proto_pref = -PROTO_ORDER.index(format_m.group('proto'))
@ -67,26 +70,34 @@ def xml_to_format(fnode):
abr = int(fnode.find('./audioBitrate').text) // 1000 abr = int(fnode.find('./audioBitrate').text) // 1000
vbr = int(fnode.find('./videoBitrate').text) // 1000 vbr = int(fnode.find('./videoBitrate').text) // 1000
pref = (is_available, proto_pref, quality_pref, vbr, abr) pref = (is_available, is_supported,
proto_pref, quality_pref, vbr, abr)
format_note = u''
if not is_supported:
format_note += u'(unsupported)'
if not format_note:
format_note = None
return { return {
'format_id': format_id, 'format_id': format_id + u'-' + quality,
'url': video_url, 'url': video_url,
'ext': format_m.group('container'), 'ext': ext,
'acodec': format_m.group('acodec'), 'acodec': format_m.group('acodec'),
'vcodec': format_m.group('vcodec'), 'vcodec': format_m.group('vcodec'),
'abr': abr, 'abr': abr,
'vbr': vbr, 'vbr': vbr,
'width': int(fnode.find('./width').text), 'width': int(fnode.find('./width').text),
'height': int(fnode.find('./height').text), 'height': int(fnode.find('./height').text),
'quality_name': quality,
'filesize': int(fnode.find('./filesize').text), 'filesize': int(fnode.find('./filesize').text),
'format_note': None if is_available else u'(unavailable)', 'format_note': format_note,
'_pref': pref, '_pref': pref,
'_available': is_available,
} }
format_nodes = doc.findall('.//formitaeten/formitaet') format_nodes = doc.findall('.//formitaeten/formitaet')
formats = sorted(map(xml_to_format, format_nodes), formats = sorted(filter(lambda f: f['_available'],
map(xml_to_format, format_nodes)),
key=operator.itemgetter('_pref')) key=operator.itemgetter('_pref'))
return { return {