|
|
|
@ -1158,16 +1158,16 @@ class GenericIE(InfoExtractor):
|
|
|
|
|
"""
|
|
|
|
|
def redirect_request(self, req, fp, code, msg, headers, newurl):
|
|
|
|
|
if code in (301, 302, 303, 307):
|
|
|
|
|
newurl = newurl.replace(' ', '%20')
|
|
|
|
|
newheaders = dict((k,v) for k,v in req.headers.items()
|
|
|
|
|
if k.lower() not in ("content-length", "content-type"))
|
|
|
|
|
return HeadRequest(newurl,
|
|
|
|
|
headers=newheaders,
|
|
|
|
|
origin_req_host=req.get_origin_req_host(),
|
|
|
|
|
unverifiable=True)
|
|
|
|
|
newurl = newurl.replace(' ', '%20')
|
|
|
|
|
newheaders = dict((k,v) for k,v in req.headers.items()
|
|
|
|
|
if k.lower() not in ("content-length", "content-type"))
|
|
|
|
|
return HeadRequest(newurl,
|
|
|
|
|
headers=newheaders,
|
|
|
|
|
origin_req_host=req.get_origin_req_host(),
|
|
|
|
|
unverifiable=True)
|
|
|
|
|
else:
|
|
|
|
|
raise urllib2.HTTPError(req.get_full_url(), code, msg, headers, fp)
|
|
|
|
|
|
|
|
|
|
raise urllib2.HTTPError(req.get_full_url(), code, msg, headers, fp)
|
|
|
|
|
|
|
|
|
|
class HTTPMethodFallback(urllib2.BaseHandler):
|
|
|
|
|
"""
|
|
|
|
|
Fallback to GET if HEAD is not allowed (405 HTTP error)
|
|
|
|
@ -1177,17 +1177,17 @@ class GenericIE(InfoExtractor):
|
|
|
|
|
fp.close()
|
|
|
|
|
|
|
|
|
|
newheaders = dict((k,v) for k,v in req.headers.items()
|
|
|
|
|
if k.lower() not in ("content-length", "content-type"))
|
|
|
|
|
if k.lower() not in ("content-length", "content-type"))
|
|
|
|
|
return self.parent.open(urllib2.Request(req.get_full_url(),
|
|
|
|
|
headers=newheaders,
|
|
|
|
|
origin_req_host=req.get_origin_req_host(),
|
|
|
|
|
unverifiable=True))
|
|
|
|
|
headers=newheaders,
|
|
|
|
|
origin_req_host=req.get_origin_req_host(),
|
|
|
|
|
unverifiable=True))
|
|
|
|
|
|
|
|
|
|
# Build our opener
|
|
|
|
|
opener = urllib2.OpenerDirector()
|
|
|
|
|
for handler in [urllib2.HTTPHandler, urllib2.HTTPDefaultErrorHandler,
|
|
|
|
|
HTTPMethodFallback, HEADRedirectHandler,
|
|
|
|
|
urllib2.HTTPErrorProcessor, urllib2.HTTPSHandler]:
|
|
|
|
|
HTTPMethodFallback, HEADRedirectHandler,
|
|
|
|
|
urllib2.HTTPErrorProcessor, urllib2.HTTPSHandler]:
|
|
|
|
|
opener.add_handler(handler())
|
|
|
|
|
|
|
|
|
|
response = opener.open(HeadRequest(url))
|
|
|
|
|