mirror of
https://github.com/l1ving/youtube-dl
synced 2024-11-20 17:52:51 +08:00
[googledrive] Fix formats' sorting (closes #13443)
This commit is contained in:
parent
048b55804d
commit
9be9ec5980
@ -69,19 +69,32 @@ class GoogleDriveIE(InfoExtractor):
|
|||||||
r'"fmt_stream_map"\s*,\s*"([^"]+)', webpage, 'fmt stream map').split(',')
|
r'"fmt_stream_map"\s*,\s*"([^"]+)', webpage, 'fmt stream map').split(',')
|
||||||
fmt_list = self._search_regex(r'"fmt_list"\s*,\s*"([^"]+)', webpage, 'fmt_list').split(',')
|
fmt_list = self._search_regex(r'"fmt_list"\s*,\s*"([^"]+)', webpage, 'fmt_list').split(',')
|
||||||
|
|
||||||
|
resolutions = {}
|
||||||
|
for fmt in fmt_list:
|
||||||
|
mobj = re.search(
|
||||||
|
r'^(?P<format_id>\d+)/(?P<width>\d+)[xX](?P<height>\d+)', fmt)
|
||||||
|
if mobj:
|
||||||
|
resolutions[mobj.group('format_id')] = (
|
||||||
|
int(mobj.group('width')), int(mobj.group('height')))
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
for fmt, fmt_stream in zip(fmt_list, fmt_stream_map):
|
for fmt_stream in fmt_stream_map:
|
||||||
fmt_id, fmt_url = fmt_stream.split('|')
|
fmt_stream_split = fmt_stream.split('|')
|
||||||
resolution = fmt.split('/')[1]
|
if len(fmt_stream_split) < 2:
|
||||||
width, height = resolution.split('x')
|
continue
|
||||||
formats.append({
|
format_id, format_url = fmt_stream_split[:2]
|
||||||
'url': lowercase_escape(fmt_url),
|
f = {
|
||||||
'format_id': fmt_id,
|
'url': lowercase_escape(format_url),
|
||||||
'resolution': resolution,
|
'format_id': format_id,
|
||||||
'width': int_or_none(width),
|
'ext': self._FORMATS_EXT[format_id],
|
||||||
'height': int_or_none(height),
|
}
|
||||||
'ext': self._FORMATS_EXT[fmt_id],
|
resolution = resolutions.get(format_id)
|
||||||
})
|
if resolution:
|
||||||
|
f.update({
|
||||||
|
'width': resolution[0],
|
||||||
|
'height': resolution[0],
|
||||||
|
})
|
||||||
|
formats.append(f)
|
||||||
self._sort_formats(formats)
|
self._sort_formats(formats)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
Loading…
Reference in New Issue
Block a user