diff options
| -rw-r--r-- | youtube_dl/__init__.py | 54 | 
1 files changed, 33 insertions, 21 deletions
| diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index db4c58885..9594fd892 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -36,6 +36,7 @@ __authors__  = (  __license__ = 'Public Domain'  import codecs +import collections  import getpass  import optparse  import os @@ -447,27 +448,7 @@ def _real_main(argv=None):      all_urls = batchurls + args      all_urls = [url.strip() for url in all_urls] -    # General configuration -    cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar) -    if opts.proxy is not None: -        if opts.proxy == '': -            proxies = {} -        else: -            proxies = {'http': opts.proxy, 'https': opts.proxy} -    else: -        proxies = compat_urllib_request.getproxies() -        # Set HTTPS proxy to HTTP one if given (https://github.com/rg3/youtube-dl/issues/805) -        if 'http' in proxies and 'https' not in proxies: -            proxies['https'] = proxies['http'] -    proxy_handler = compat_urllib_request.ProxyHandler(proxies) -    https_handler = make_HTTPS_handler(opts) -    opener = compat_urllib_request.build_opener(https_handler, proxy_handler, cookie_processor, YoutubeDLHandler()) -    # Delete the default user-agent header, which would otherwise apply in -    # cases where our custom HTTP handler doesn't come into play -    # (See https://github.com/rg3/youtube-dl/issues/1309 for details) -    opener.addheaders =[] -    compat_urllib_request.install_opener(opener) -    socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words) +    _setup_opener(jar=jar, opts=opts)      extractors = gen_extractors() @@ -698,6 +679,37 @@ def _real_main(argv=None):      sys.exit(retcode) + +def _setup_opener(jar=None, opts=None, timeout=300): +    if opts is None: +        FakeOptions = collections.namedtuple( +            'FakeOptions', ['proxy', 'no_check_certificate']) +        opts = FakeOptions(proxy=None, no_check_certificate=False) + +    cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar) +    if opts.proxy is not None: +        if opts.proxy == '': +            proxies = {} +        else: +            proxies = {'http': opts.proxy, 'https': opts.proxy} +    else: +        proxies = compat_urllib_request.getproxies() +        # Set HTTPS proxy to HTTP one if given (https://github.com/rg3/youtube-dl/issues/805) +        if 'http' in proxies and 'https' not in proxies: +            proxies['https'] = proxies['http'] +    proxy_handler = compat_urllib_request.ProxyHandler(proxies) +    https_handler = make_HTTPS_handler(opts) +    opener = compat_urllib_request.build_opener( +        https_handler, proxy_handler, cookie_processor, YoutubeDLHandler()) +    # Delete the default user-agent header, which would otherwise apply in +    # cases where our custom HTTP handler doesn't come into play +    # (See https://github.com/rg3/youtube-dl/issues/1309 for details) +    opener.addheaders = [] +    compat_urllib_request.install_opener(opener) +    socket.setdefaulttimeout(timeout) +    return opener + +  def main(argv=None):      try:          _real_main(argv) | 
