aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/utils.py
diff options
context:
space:
mode:
authorPierre Rudloff <contact@rudloff.pro>2013-08-28 11:02:12 +0200
committerPierre Rudloff <contact@rudloff.pro>2013-08-28 11:02:12 +0200
commit1301a0dd426a88ed39d38ac6ad04e9000c7811a4 (patch)
tree9c6dc83aa9e3a4f03d2b4ac183ec8aeda945a14b /youtube_dl/utils.py
parentc5b921b5975f84ec31077cf5333f14736efe40b6 (diff)
parentaf8bd6a82d140e5a776185707a9b21d5b8a9fe52 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'youtube_dl/utils.py')
-rw-r--r--youtube_dl/utils.py33
1 files changed, 15 insertions, 18 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index ab1049cc0..e6fa634a7 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -61,6 +61,11 @@ except ImportError: # Python 2
import httplib as compat_http_client
try:
+ from urllib.error import HTTPError as compat_HTTPError
+except ImportError: # Python 2
+ from urllib2 import HTTPError as compat_HTTPError
+
+try:
from subprocess import DEVNULL
compat_subprocess_get_DEVNULL = lambda: DEVNULL
except ImportError:
@@ -476,7 +481,7 @@ def formatSeconds(secs):
def make_HTTPS_handler(opts):
if sys.version_info < (3,2):
# Python's 2.x handler is very simplistic
- return YoutubeDLHandlerHTTPS()
+ return compat_urllib_request.HTTPSHandler()
else:
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
@@ -485,11 +490,11 @@ def make_HTTPS_handler(opts):
context.verify_mode = (ssl.CERT_NONE
if opts.no_check_certificate
else ssl.CERT_REQUIRED)
- return YoutubeDLHandlerHTTPS(context=context)
+ return compat_urllib_request.HTTPSHandler(context=context)
class ExtractorError(Exception):
"""Error during info extraction."""
- def __init__(self, msg, tb=None, expected=False):
+ def __init__(self, msg, tb=None, expected=False, cause=None):
""" tb, if given, is the original traceback (so that it can be printed out).
If expected is set, this is a normal error message and most likely not a bug in youtube-dl.
"""
@@ -502,6 +507,7 @@ class ExtractorError(Exception):
self.traceback = tb
self.exc_info = sys.exc_info() # preserve original exception
+ self.cause = cause
def format_traceback(self):
if self.traceback is None:
@@ -569,8 +575,7 @@ class ContentTooShortError(Exception):
self.downloaded = downloaded
self.expected = expected
-
-class YoutubeDLHandler_Template: # Old-style class, like HTTPHandler
+class YoutubeDLHandler(compat_urllib_request.HTTPHandler):
"""Handler for HTTP requests and responses.
This class, when installed with an OpenerDirector, automatically adds
@@ -603,8 +608,8 @@ class YoutubeDLHandler_Template: # Old-style class, like 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)
@@ -619,7 +624,7 @@ class YoutubeDLHandler_Template: # Old-style class, like 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':
@@ -633,16 +638,8 @@ class YoutubeDLHandler_Template: # Old-style class, like HTTPHandler
resp.msg = old_resp.msg
return resp
-
-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
-
+ https_request = http_request
+ https_response = http_response
def unified_strdate(date_str):
"""Return a string with the date in the format YYYYMMDD"""