Merge pull request #7769 from remitamine/sort

[common] lower (m3u8,rtmp,rtsp) format preference only if required program is not available
This commit is contained in:
remitamine 2015-12-28 19:15:14 +01:00
commit 39d60b715a

View File

@ -18,7 +18,6 @@
compat_http_client, compat_http_client,
compat_urllib_error, compat_urllib_error,
compat_urllib_parse, compat_urllib_parse,
compat_urllib_parse_urlparse,
compat_urlparse, compat_urlparse,
compat_str, compat_str,
compat_etree_fromstring, compat_etree_fromstring,
@ -43,6 +42,7 @@
url_basename, url_basename,
xpath_text, xpath_text,
xpath_with_ns, xpath_with_ns,
determine_protocol,
) )
@ -778,14 +778,12 @@ def _formats_key(f):
preference = f.get('preference') preference = f.get('preference')
if preference is None: if preference is None:
proto = f.get('protocol') preference = 0
if proto is None:
proto = compat_urllib_parse_urlparse(f.get('url', '')).scheme
preference = 0 if proto in ['http', 'https'] else -0.1
if f.get('ext') in ['f4f', 'f4m']: # Not yet supported if f.get('ext') in ['f4f', 'f4m']: # Not yet supported
preference -= 0.5 preference -= 0.5
proto_preference = 0 if determine_protocol(f) in ['http', 'https'] else -0.1
if f.get('vcodec') == 'none': # audio only if f.get('vcodec') == 'none': # audio only
if self._downloader.params.get('prefer_free_formats'): if self._downloader.params.get('prefer_free_formats'):
ORDER = ['aac', 'mp3', 'm4a', 'webm', 'ogg', 'opus'] ORDER = ['aac', 'mp3', 'm4a', 'webm', 'ogg', 'opus']
@ -816,6 +814,7 @@ def _formats_key(f):
f.get('vbr') if f.get('vbr') is not None else -1, f.get('vbr') if f.get('vbr') is not None else -1,
f.get('height') if f.get('height') is not None else -1, f.get('height') if f.get('height') is not None else -1,
f.get('width') if f.get('width') is not None else -1, f.get('width') if f.get('width') is not None else -1,
proto_preference,
ext_preference, ext_preference,
f.get('abr') if f.get('abr') is not None else -1, f.get('abr') if f.get('abr') is not None else -1,
audio_ext_preference, audio_ext_preference,