diff options
| -rw-r--r-- | youtube_dl/utils.py | 25 | 
1 files changed, 17 insertions, 8 deletions
| diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 52cfb8a6d..ab1049cc0 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -476,7 +476,7 @@ def formatSeconds(secs):  def make_HTTPS_handler(opts):      if sys.version_info < (3,2):          # Python's 2.x handler is very simplistic -        return compat_urllib_request.HTTPSHandler() +        return YoutubeDLHandlerHTTPS()      else:          import ssl          context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) @@ -485,7 +485,7 @@ def make_HTTPS_handler(opts):          context.verify_mode = (ssl.CERT_NONE                                 if opts.no_check_certificate                                 else ssl.CERT_REQUIRED) -        return compat_urllib_request.HTTPSHandler(context=context) +        return YoutubeDLHandlerHTTPS(context=context)  class ExtractorError(Exception):      """Error during info extraction.""" @@ -569,7 +569,8 @@ class ContentTooShortError(Exception):          self.downloaded = downloaded          self.expected = expected -class YoutubeDLHandler(compat_urllib_request.HTTPHandler): + +class YoutubeDLHandler_Template:  # Old-style class, like HTTPHandler      """Handler for HTTP requests and responses.      This class, when installed with an OpenerDirector, automatically adds @@ -602,8 +603,8 @@ class YoutubeDLHandler(compat_urllib_request.HTTPHandler):          ret.code = code          return ret -    def http_request(self, req): -        for h,v in std_headers.items(): +    def _http_request(self, req): +        for h, v in std_headers.items():              if h in req.headers:                  del req.headers[h]              req.add_header(h, v) @@ -618,7 +619,7 @@ class YoutubeDLHandler(compat_urllib_request.HTTPHandler):              del req.headers['Youtubedl-user-agent']          return req -    def http_response(self, req, resp): +    def _http_response(self, req, resp):          old_resp = resp          # gzip          if resp.headers.get('Content-encoding', '') == 'gzip': @@ -632,8 +633,16 @@ class YoutubeDLHandler(compat_urllib_request.HTTPHandler):              resp.msg = old_resp.msg          return resp -    https_request = http_request -    https_response = http_response + +class YoutubeDLHandler(YoutubeDLHandler_Template, compat_urllib_request.HTTPHandler): +    http_request = YoutubeDLHandler_Template._http_request +    http_response = YoutubeDLHandler_Template._http_response + + +class YoutubeDLHandlerHTTPS(YoutubeDLHandler_Template, compat_urllib_request.HTTPSHandler): +    https_request = YoutubeDLHandler_Template._http_request +    https_response = YoutubeDLHandler_Template._http_response +  def unified_strdate(date_str):      """Return a string with the date in the format YYYYMMDD""" | 
