summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2015-11-20 03:08:01 +0600
committerSergey M․ <dstftw@gmail.com>2015-11-23 21:55:12 +0600
commit13a10d5aa336be7c301a6d09eb4e9d7b50f51191 (patch)
tree65cba7d2d2c3ed79e3e9b6f61a4ccde7b9d3dcb5
parent9022726446c659f2bc38556105991e9797e0c8c8 (diff)
downloadyoutube-dl-13a10d5aa336be7c301a6d09eb4e9d7b50f51191.tar.gz
youtube-dl-13a10d5aa336be7c301a6d09eb4e9d7b50f51191.tar.xz
youtube-dl-13a10d5aa336be7c301a6d09eb4e9d7b50f51191.zip
[compat] Add compat_urllib_request_Request
This is actually not a compatibility routine but rather a workaround for URLs without protocol specified.
The protocol-less URL is treated as HTTP one since it's most probable scenario and it will most likely to
redirect to HTTPS if HTTPS was actually expected. This routine could also be useful for any Request
preprocessing that may be added in future.
-rw-r--r--youtube_dl/compat.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py
index a3e85264a..4e3de7f51 100644
--- a/youtube_dl/compat.py
+++ b/youtube_dl/compat.py
@@ -198,6 +198,14 @@ except ImportError:  # Python < 3.4
 
             return compat_urllib_response.addinfourl(io.BytesIO(data), headers, url)
 
+
+# Prepend protocol-less URLs with `http:` scheme in order to mitigate the number of
+# unwanted failures due to missing protocol
+def compat_urllib_request_Request(url, *args, **kwargs):
+    return compat_urllib_request.Request(
+        'http:%s' % url if url.startswith('//') else url, *args, **kwargs)
+
+
 try:
     compat_basestring = basestring  # Python 2
 except NameError: