From 6dde141a47e2f7242221d8e0f1d8e41d37f22e16 Mon Sep 17 00:00:00 2001 From: rzhxeo Date: Thu, 22 May 2014 09:19:09 +0200 Subject: [PATCH] [Generic] Also try GET instead of HEAD request if server returns 404 --- youtube_dl/extractor/generic.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index ce783bf16..f8d71fd2c 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -300,7 +300,7 @@ class GenericIE(InfoExtractor): class HTTPMethodFallback(compat_urllib_request.BaseHandler): """ - Fallback to GET if HEAD is not allowed (405 HTTP error) + Fallback to GET if HEAD is not allowed (405 or 404 (youtube.com) HTTP error) """ def http_error_405(self, req, fp, code, msg, headers): fp.read() @@ -318,6 +318,11 @@ class GenericIE(InfoExtractor): origin_req_host=origin_req_host, unverifiable=True)) + def http_error_404(self, req, fp, code, msg, headers): + # prevent infinite loop + if req.get_method() == "HEAD": + return self.http_error_405(req, fp, code, msg, headers) + # Build our opener opener = compat_urllib_request.OpenerDirector() for handler in [compat_urllib_request.HTTPHandler, compat_urllib_request.HTTPDefaultErrorHandler,