From 7d2b4aa04790b51a0b2b717eed618296115061a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergey=20M=E2=80=A4?= Date: Sun, 18 Feb 2018 16:38:55 +0700 Subject: [PATCH] Respect --prefer-insecure while updating (closes #15497) --- youtube_dl/__init__.py | 2 +- youtube_dl/options.py | 2 +- youtube_dl/update.py | 13 +++++++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 9bb952457e..f9898082a3 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -438,7 +438,7 @@ def parse_retries(retries): with YoutubeDL(ydl_opts) as ydl: # Update version if opts.update_self: - update_self(ydl.to_screen, opts.verbose, ydl._opener) + update_self(ydl.to_screen, opts.verbose, ydl._opener, opts.prefer_insecure) # Remove cache dir if opts.rm_cachedir: diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 7d1bbc0210..4a6067cb8d 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -534,7 +534,7 @@ def _comma_separated_values_options_callback(option, opt_str, value, parser): workarounds.add_option( '--prefer-insecure', '--prefer-unsecure', action='store_true', dest='prefer_insecure', - help='Use an unencrypted connection to retrieve information about the video. (Currently supported only for YouTube)') + help='Use an unencrypted connection to retrieve information whenever possible') workarounds.add_option( '--user-agent', metavar='UA', dest='user_agent', diff --git a/youtube_dl/update.py b/youtube_dl/update.py index ebce9666a2..d9d95d2a14 100644 --- a/youtube_dl/update.py +++ b/youtube_dl/update.py @@ -28,10 +28,10 @@ def rsa_verify(message, signature, key): return expected == signature -def update_self(to_screen, verbose, opener): +def update_self(to_screen, verbose, opener, prefer_insecure=False): """Update the program file with the latest version from the repository""" - UPDATE_URL = 'https://rg3.github.io/youtube-dl/update/' + UPDATE_URL = '//rg3.github.io/youtube-dl/update/' VERSION_URL = UPDATE_URL + 'LATEST_VERSION' JSON_URL = UPDATE_URL + 'versions.json' UPDATES_RSA_KEY = (0x9d60ee4d8f805312fdb15a62f87b95bd66177b91df176765d13514a0f1754bcd2057295c5b6f1d35daa6742c3ffc9a82d3e118861c207995a8031e151d863c9927e304576bc80692bc8e094896fcf11b66f3e29e04e3a71e9a11558558acea1840aec37fc396fb6b65dc81a1c4144e03bd1c011de62e3f1357b327d08426fe93, 65537) @@ -40,9 +40,13 @@ def update_self(to_screen, verbose, opener): to_screen('It looks like you installed youtube-dl with a package manager, pip, setup.py or a tarball. Please use that to update.') return + def guess_scheme(url, insecure=False): + return 'http%s:%s' % ('' if insecure is True else 's', url) + # Check if there is a new version try: - newversion = opener.open(VERSION_URL).read().decode('utf-8').strip() + newversion = opener.open(guess_scheme( + VERSION_URL, prefer_insecure)).read().decode('utf-8').strip() except Exception: if verbose: to_screen(encode_compat_str(traceback.format_exc())) @@ -54,7 +58,8 @@ def update_self(to_screen, verbose, opener): # Download and check versions info try: - versions_info = opener.open(JSON_URL).read().decode('utf-8') + versions_info = opener.open(guess_scheme( + JSON_URL, prefer_insecure)).read().decode('utf-8') versions_info = json.loads(versions_info) except Exception: if verbose: