From: remitamine Date: Mon, 28 Dec 2015 18:15:14 +0000 (+0100) Subject: Merge pull request #7769 from remitamine/sort X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=39d60b715a75e92d169167876bb07424301c0b67;hp=-c;p=youtube-dl Merge pull request #7769 from remitamine/sort [common] lower (m3u8,rtmp,rtsp) format preference only if required program is not available --- 39d60b715a75e92d169167876bb07424301c0b67 diff --combined youtube_dl/extractor/common.py index 3d39781a4,76f5b8b05..34a28c126 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@@ -18,7 -18,6 +18,6 @@@ from ..compat import compat_http_client, compat_urllib_error, compat_urllib_parse, - compat_urllib_parse_urlparse, compat_urlparse, compat_str, compat_etree_fromstring, @@@ -30,7 -29,6 +29,7 @@@ from ..utils import clean_html, compiled_regex_type, determine_ext, + error_to_compat_str, ExtractorError, fix_xml_ampersands, float_or_none, @@@ -43,6 -41,7 +42,7 @@@ url_basename, xpath_text, xpath_with_ns, + determine_protocol, ) @@@ -333,8 -332,7 +333,8 @@@ class InfoExtractor(object) return False if errnote is None: errnote = 'Unable to download webpage' - errmsg = '%s: %s' % (errnote, compat_str(err)) + + errmsg = '%s: %s' % (errnote, error_to_compat_str(err)) if fatal: raise ExtractorError(errmsg, sys.exc_info()[2], cause=err) else: @@@ -624,7 -622,7 +624,7 @@@ else: raise netrc.NetrcParseError('No authenticators for %s' % self._NETRC_MACHINE) except (IOError, netrc.NetrcParseError) as err: - self._downloader.report_warning('parsing .netrc: %s' % compat_str(err)) + self._downloader.report_warning('parsing .netrc: %s' % error_to_compat_str(err)) return (username, password) @@@ -778,14 -776,12 +778,12 @@@ preference = f.get('preference') if preference is None: - proto = f.get('protocol') - if proto is None: - proto = compat_urllib_parse_urlparse(f.get('url', '')).scheme - - preference = 0 if proto in ['http', 'https'] else -0.1 + preference = 0 if f.get('ext') in ['f4f', 'f4m']: # Not yet supported preference -= 0.5 + proto_preference = 0 if determine_protocol(f) in ['http', 'https'] else -0.1 + if f.get('vcodec') == 'none': # audio only if self._downloader.params.get('prefer_free_formats'): ORDER = ['aac', 'mp3', 'm4a', 'webm', 'ogg', 'opus'] @@@ -816,6 -812,7 +814,7 @@@ 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('width') if f.get('width') is not None else -1, + proto_preference, ext_preference, f.get('abr') if f.get('abr') is not None else -1, audio_ext_preference, @@@ -885,7 -882,7 +884,7 @@@ fatal=fatal) if manifest is False: - return manifest + return [] formats = [] manifest_version = '1.0' @@@ -956,7 -953,7 +955,7 @@@ errnote=errnote or 'Failed to download m3u8 information', fatal=fatal) if res is False: - return res + return [] m3u8_doc, urlh = res m3u8_url = urlh.geturl() last_info = None