float_or_none,
int_or_none,
parse_codecs,
- traverse_obj,
urljoin,
)
def _extract_formats(self, spl_url, video):
for ext, pref, streams in (
- ('ts', -1, traverse_obj(video, ('http_stream', 'qualities'))),
+ ('ts', -1, video.get('http_stream', {}).get('qualities', {})),
('mp4', 1, video.get('mp4'))):
for format_id, stream in streams.items():
if not stream.get('url'):
'url': urljoin(spl_url, stream['url']),
'tbr': float_or_none(stream.get('bandwidth'), scale=1000),
'duration': float_or_none(stream.get('duration'), scale=1000),
- 'width': traverse_obj(stream, ('resolution', 0)),
- 'height': traverse_obj(stream, ('resolution', 1)) or int_or_none(format_id.replace('p', '')),
+ 'width': stream.get('resolution', 2 * [0])[0] or None,
+ 'height': stream.get('resolution', 2 * [0])[1] or int_or_none(format_id.replace('p', '')),
**parse_codecs(stream.get('codec')),
}