[utils] Separate codes for handling Youtubedl-* headers
This commit is contained in:
parent
46b4070f3f
commit
87f0e62d94
1 changed files with 11 additions and 4 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue