mirror of
https://github.com/l1ving/youtube-dl
synced 2025-02-04 10:52:53 +08:00
[tudou] fix multipart formats extraction
This commit is contained in:
parent
c56621f173
commit
4cb71dd785
@ -62,49 +62,41 @@ class TudouIE(InfoExtractor):
|
|||||||
if youku_vcode:
|
if youku_vcode:
|
||||||
return self.url_result('youku:' + youku_vcode, ie='Youku')
|
return self.url_result('youku:' + youku_vcode, ie='Youku')
|
||||||
|
|
||||||
title = unescapeHTML(item_data['kw'])
|
|
||||||
description = item_data.get('desc')
|
|
||||||
thumbnail_url = item_data.get('pic')
|
|
||||||
view_count = int_or_none(item_data.get('playTimes'))
|
|
||||||
timestamp = int_or_none(item_data.get('pt'))
|
|
||||||
|
|
||||||
segments = self._parse_json(item_data['itemSegs'], video_id)
|
segments = self._parse_json(item_data['itemSegs'], video_id)
|
||||||
# It looks like the keys are the arguments that have to be passed as
|
# It looks like the keys are the arguments that have to be passed as
|
||||||
# the hd field in the request url, we pick the higher
|
# the hd field in the request url, we filter non-number qualities (see issue #3643).
|
||||||
# Also, filter non-number qualities (see issue #3643).
|
qualites = sorted(filter(lambda k: k.isdigit(), segments.keys()),
|
||||||
quality = sorted(filter(lambda k: k.isdigit(), segments.keys()),
|
key=lambda k: int(k))
|
||||||
key=lambda k: int(k))[-1]
|
formats = []
|
||||||
parts = segments[quality]
|
for quality in qualites:
|
||||||
result = []
|
parts = []
|
||||||
len_parts = len(parts)
|
for part in segments[quality]:
|
||||||
if len_parts > 1:
|
final_url = self._url_for_id(part['k'], quality)
|
||||||
self.to_screen('%s: found %s parts' % (video_id, len_parts))
|
ext = (final_url.split('?')[0]).split('.')[-1]
|
||||||
for part in parts:
|
part_info = {
|
||||||
part_id = part['k']
|
'url': final_url,
|
||||||
final_url = self._url_for_id(part_id, quality)
|
'ext': ext,
|
||||||
ext = (final_url.split('?')[0]).split('.')[-1]
|
'duration': float_or_none(part.get('seconds'), 1000),
|
||||||
part_info = {
|
'filesize': int_or_none(part.get('size')),
|
||||||
'id': '%s' % part_id,
|
'http_headers': {
|
||||||
'url': final_url,
|
'Referer': self._PLAYER_URL,
|
||||||
'ext': ext,
|
},
|
||||||
'title': title,
|
}
|
||||||
'thumbnail': thumbnail_url,
|
parts.append(part_info)
|
||||||
'description': description,
|
formats.append({
|
||||||
'view_count': view_count,
|
'formats_id': compat_str(quality),
|
||||||
'timestamp': timestamp,
|
'parts': parts,
|
||||||
'duration': float_or_none(part.get('seconds'), 1000),
|
})
|
||||||
'filesize': int_or_none(part.get('size')),
|
self._sort_formats(formats)
|
||||||
'http_headers': {
|
|
||||||
'Referer': self._PLAYER_URL,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
result.append(part_info)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'_type': 'multi_video',
|
|
||||||
'entries': result,
|
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
'title': title,
|
'title': unescapeHTML(item_data['kw']),
|
||||||
|
'thumbnail': item_data.get('pic'),
|
||||||
|
'description': item_data.get('desc'),
|
||||||
|
'view_count': int_or_none(item_data.get('playTimes')),
|
||||||
|
'timestamp': int_or_none(item_data.get('pt')),
|
||||||
|
'formats': formats,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user