diff options
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 9 | ||||
| -rw-r--r-- | youtube_dl/__init__.py | 2 | ||||
| -rw-r--r-- | youtube_dl/extractor/common.py | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/iqiyi.py | 6 | ||||
| -rw-r--r-- | youtube_dl/extractor/kuwo.py | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/leeco.py | 12 | ||||
| -rw-r--r-- | youtube_dl/extractor/rai.py | 9 | ||||
| -rw-r--r-- | youtube_dl/extractor/sohu.py | 16 | ||||
| -rw-r--r-- | youtube_dl/extractor/youku.py | 9 | ||||
| -rw-r--r-- | youtube_dl/options.py | 9 | 
10 files changed, 36 insertions, 50 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 5036289b0..ba72ec6f3 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -196,8 +196,8 @@ class YoutubeDL(object):      prefer_insecure:   Use HTTP instead of HTTPS to retrieve information.                         At the moment, this is only supported by YouTube.      proxy:             URL of the proxy server to use -    cn_verification_proxy:  URL of the proxy to use for IP address verification -                       on Chinese sites. (Experimental) +    geo_verification_proxy:  URL of the proxy to use for IP address verification +                       on geo-restricted sites. (Experimental)      socket_timeout:    Time to wait for unresponsive hosts, in seconds      bidi_workaround:   Work around buggy terminals without bidirectional text                         support, using fridibi @@ -304,6 +304,11 @@ class YoutubeDL(object):          self.params.update(params)          self.cache = Cache(self) +        if self.params.get('cn_verification_proxy') is not None: +            self.report_warning('--cn-verification-proxy is deprecated. Use --geo-verification-proxy instead.') +            if self.params.get('geo_verification_proxy') is None: +                self.params['geo_verification_proxy'] = self.params['cn_verification_proxy'] +          if params.get('bidi_workaround', False):              try:                  import pty diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 4905674ad..2b34bf9c2 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -382,6 +382,8 @@ def _real_main(argv=None):          'external_downloader_args': external_downloader_args,          'postprocessor_args': postprocessor_args,          'cn_verification_proxy': opts.cn_verification_proxy, +        'geo_verification_proxy': opts.geo_verification_proxy, +      }      with YoutubeDL(ydl_opts) as ydl: diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index e6c15de42..be2b6ff66 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -1729,6 +1729,13 @@ class InfoExtractor(object):      def _mark_watched(self, *args, **kwargs):          raise NotImplementedError('This method must be implemented by subclasses') +    def geo_verification_headers(self): +        headers = {} +        geo_verification_proxy = self._downloader.params.get('geo_verification_proxy') +        if geo_verification_proxy: +            headers['Ytdl-request-proxy'] = geo_verification_proxy +        return headers +  class SearchInfoExtractor(InfoExtractor):      """ diff --git a/youtube_dl/extractor/iqiyi.py b/youtube_dl/extractor/iqiyi.py index 754e6057c..ba037d48c 100644 --- a/youtube_dl/extractor/iqiyi.py +++ b/youtube_dl/extractor/iqiyi.py @@ -293,14 +293,10 @@ class IqiyiIE(InfoExtractor):              't': tm,          } -        headers = {} -        cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') -        if cn_verification_proxy: -            headers['Ytdl-request-proxy'] = cn_verification_proxy          return self._download_json(              'http://cache.m.iqiyi.com/jp/tmts/%s/%s/' % (tvid, video_id),              video_id, transform_source=lambda s: remove_start(s, 'var tvInfoJs='), -            query=params, headers=headers) +            query=params, headers=self.geo_verification_headers())      def _extract_playlist(self, webpage):          PAGE_SIZE = 50 diff --git a/youtube_dl/extractor/kuwo.py b/youtube_dl/extractor/kuwo.py index 0221fb919..b1d460599 100644 --- a/youtube_dl/extractor/kuwo.py +++ b/youtube_dl/extractor/kuwo.py @@ -26,11 +26,6 @@ class KuwoBaseIE(InfoExtractor):      def _get_formats(self, song_id, tolerate_ip_deny=False):          formats = []          for file_format in self._FORMATS: -            headers = {} -            cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') -            if cn_verification_proxy: -                headers['Ytdl-request-proxy'] = cn_verification_proxy -              query = {                  'format': file_format['ext'],                  'br': file_format.get('br', ''), @@ -42,7 +37,7 @@ class KuwoBaseIE(InfoExtractor):              song_url = self._download_webpage(                  'http://antiserver.kuwo.cn/anti.s',                  song_id, note='Download %s url info' % file_format['format'], -                query=query, headers=headers, +                query=query, headers=self.geo_verification_headers(),              )              if song_url == 'IPDeny' and not tolerate_ip_deny: diff --git a/youtube_dl/extractor/leeco.py b/youtube_dl/extractor/leeco.py index 959d71617..171b705c7 100644 --- a/youtube_dl/extractor/leeco.py +++ b/youtube_dl/extractor/leeco.py @@ -20,7 +20,6 @@ from ..utils import (      int_or_none,      orderedSet,      parse_iso8601, -    sanitized_Request,      str_or_none,      url_basename,      urshift, @@ -121,16 +120,11 @@ class LeIE(InfoExtractor):              'tkey': self.calc_time_key(int(time.time())),              'domain': 'www.le.com'          } -        play_json_req = sanitized_Request( -            'http://api.le.com/mms/out/video/playJson?' + compat_urllib_parse_urlencode(params) -        ) -        cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') -        if cn_verification_proxy: -            play_json_req.add_header('Ytdl-request-proxy', cn_verification_proxy)          play_json = self._download_json( -            play_json_req, -            media_id, 'Downloading playJson data') +            'http://api.le.com/mms/out/video/playJson', +            media_id, 'Downloading playJson data', query=params, +            headers=self.geo_verification_headers())          # Check for errors          playstatus = play_json['playstatus'] diff --git a/youtube_dl/extractor/rai.py b/youtube_dl/extractor/rai.py index 1f0fcd609..dc640b1bc 100644 --- a/youtube_dl/extractor/rai.py +++ b/youtube_dl/extractor/rai.py @@ -20,17 +20,12 @@ class RaiBaseIE(InfoExtractor):          formats = []          for platform in ('mon', 'flash', 'native'): -            headers = {} -            # TODO: rename --cn-verification-proxy -            cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') -            if cn_verification_proxy: -                headers['Ytdl-request-proxy'] = cn_verification_proxy -              relinker = self._download_xml(                  relinker_url, video_id,                  note='Downloading XML metadata for platform %s' % platform,                  transform_source=fix_xml_ampersands, -                query={'output': 45, 'pl': platform}, headers=headers) +                query={'output': 45, 'pl': platform}, +                headers=self.geo_verification_headers())              media_url = find_xpath_attr(relinker, './url', 'type', 'content').text              if media_url == 'http://download.rai.it/video_no_available.mp4': diff --git a/youtube_dl/extractor/sohu.py b/youtube_dl/extractor/sohu.py index 49e5d09ae..72fe66142 100644 --- a/youtube_dl/extractor/sohu.py +++ b/youtube_dl/extractor/sohu.py @@ -8,10 +8,7 @@ from ..compat import (      compat_str,      compat_urllib_parse_urlencode,  ) -from ..utils import ( -    ExtractorError, -    sanitized_Request, -) +from ..utils import ExtractorError  class SohuIE(InfoExtractor): @@ -96,15 +93,10 @@ class SohuIE(InfoExtractor):              else:                  base_data_url = 'http://hot.vrs.sohu.com/vrs_flash.action?vid=' -            req = sanitized_Request(base_data_url + vid_id) - -            cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') -            if cn_verification_proxy: -                req.add_header('Ytdl-request-proxy', cn_verification_proxy) -              return self._download_json( -                req, video_id, -                'Downloading JSON data for %s' % vid_id) +                base_data_url + vid_id, video_id, +                'Downloading JSON data for %s' % vid_id, +                headers=self.geo_verification_headers())          mobj = re.match(self._VALID_URL, url)          video_id = mobj.group('id') diff --git a/youtube_dl/extractor/youku.py b/youtube_dl/extractor/youku.py index 147608ebe..e37f237c7 100644 --- a/youtube_dl/extractor/youku.py +++ b/youtube_dl/extractor/youku.py @@ -16,7 +16,6 @@ from ..compat import (  from ..utils import (      ExtractorError,      get_element_by_attribute, -    sanitized_Request,  ) @@ -218,14 +217,10 @@ class YoukuIE(InfoExtractor):              headers = {                  'Referer': req_url,              } +            headers.update(self.geo_verification_headers())              self._set_cookie('youku.com', 'xreferrer', 'http://www.youku.com') -            req = sanitized_Request(req_url, headers=headers) -            cn_verification_proxy = self._downloader.params.get('cn_verification_proxy') -            if cn_verification_proxy: -                req.add_header('Ytdl-request-proxy', cn_verification_proxy) - -            raw_data = self._download_json(req, video_id, note=note) +            raw_data = self._download_json(req_url, video_id, note=note, headers=headers)              return raw_data['data'] diff --git a/youtube_dl/options.py b/youtube_dl/options.py index c9033e3cb..f2e3ad7a1 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -210,10 +210,15 @@ def parseOpts(overrideArguments=None):          help='Make all connections via IPv6 (experimental)',      )      network.add_option( +        '--geo-verification-proxy', +        dest='geo_verification_proxy', default=None, metavar='URL', +        help='Use this proxy to verify the IP address for some geo-restricted sites. ' +        'The default proxy specified by --proxy (or none, if the options is not present) is used for the actual downloading. (experimental)' +    ) +    network.add_option(          '--cn-verification-proxy',          dest='cn_verification_proxy', default=None, metavar='URL', -        help='Use this proxy to verify the IP address for some Chinese sites. ' -        'The default proxy specified by --proxy (or none, if the options is not present) is used for the actual downloading. (experimental)' +        help=optparse.SUPPRESS_HELP,      )      selection = optparse.OptionGroup(parser, 'Video Selection') | 
