[utils] Separate codes for handling Youtubedl-* headers
authorYen Chi Hsuan <yan12125@gmail.com>
Sun, 29 Nov 2015 04:42:50 +0000 (12:42 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Sun, 29 Nov 2015 04:42:50 +0000 (12:42 +0800)
youtube_dl/utils.py

index d7b737e21639679fe665d22e6ca4089f5c791618..653a49055e9b37217847f49c378967e9274091b1 100644 (file)
@@ -663,6 +663,15 @@ def _create_http_connection(ydl_handler, http_class, is_https, *args, **kwargs):
     return hc
 
 
+def handle_youtubedl_headers(headers):
+    if 'Youtubedl-no-compression' in headers:
+        filtered_headers = dict((k, v) for k, v in headers.items() if k.lower() != 'accept-encoding')
+        del filtered_headers['Youtubedl-no-compression']
+        return filtered_headers
+
+    return headers
+
+
 class YoutubeDLHandler(compat_urllib_request.HTTPHandler):
     """Handler for HTTP requests and responses.
 
@@ -731,10 +740,8 @@ class YoutubeDLHandler(compat_urllib_request.HTTPHandler):
             # The dict keys are capitalized because of this bug by urllib
             if h.capitalize() not in req.headers:
                 req.add_header(h, v)
-        if 'Youtubedl-no-compression' in req.headers:
-            if 'Accept-encoding' in req.headers:
-                del req.headers['Accept-encoding']
-            del req.headers['Youtubedl-no-compression']
+
+        req.headers = handle_youtubedl_headers(req.headers)
 
         if sys.version_info < (2, 7) and '#' in req.get_full_url():
             # Python 2.6 is brain-dead when it comes to fragments