[downloader:http] change '_http_retry' to accept a Python function
and rename '_http_retry_codes' to '_http_retry' (#3569)
This commit is contained in:
@@ -100,13 +100,6 @@ class HttpDownloader(DownloaderBase):
|
|||||||
adjust_extension = kwdict.get(
|
adjust_extension = kwdict.get(
|
||||||
"_http_adjust_extension", self.adjust_extension)
|
"_http_adjust_extension", self.adjust_extension)
|
||||||
|
|
||||||
codes = kwdict.get("_http_retry_codes")
|
|
||||||
if codes:
|
|
||||||
retry_codes = list(self.retry_codes)
|
|
||||||
retry_codes += codes
|
|
||||||
else:
|
|
||||||
retry_codes = self.retry_codes
|
|
||||||
|
|
||||||
if self.part and not metadata:
|
if self.part and not metadata:
|
||||||
pathfmt.part_enable(self.partdir)
|
pathfmt.part_enable(self.partdir)
|
||||||
|
|
||||||
@@ -167,7 +160,10 @@ class HttpDownloader(DownloaderBase):
|
|||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
msg = "'{} {}' for '{}'".format(code, response.reason, url)
|
msg = "'{} {}' for '{}'".format(code, response.reason, url)
|
||||||
if code in retry_codes or 500 <= code < 600:
|
if code in self.retry_codes or 500 <= code < 600:
|
||||||
|
continue
|
||||||
|
retry = kwdict.get("_http_retry")
|
||||||
|
if retry and retry(response):
|
||||||
continue
|
continue
|
||||||
self.log.warning(msg)
|
self.log.warning(msg)
|
||||||
return False
|
return False
|
||||||
|
|||||||
@@ -59,10 +59,7 @@ class NitterExtractor(BaseExtractor):
|
|||||||
|
|
||||||
if url[0] == "/":
|
if url[0] == "/":
|
||||||
url = self.root + url
|
url = self.root + url
|
||||||
file = {
|
file = {"url": url, "_http_retry": _retry_on_404}
|
||||||
"url": url,
|
|
||||||
"_http_retry_codes": (404,),
|
|
||||||
}
|
|
||||||
file["filename"], _, file["extension"] = \
|
file["filename"], _, file["extension"] = \
|
||||||
name.rpartition(".")
|
name.rpartition(".")
|
||||||
append(file)
|
append(file)
|
||||||
@@ -468,3 +465,7 @@ class NitterTweetExtractor(NitterExtractor):
|
|||||||
quoted["user"] = tweet["user"]
|
quoted["user"] = tweet["user"]
|
||||||
return (tweet, quoted)
|
return (tweet, quoted)
|
||||||
return (tweet,)
|
return (tweet,)
|
||||||
|
|
||||||
|
|
||||||
|
def _retry_on_404(response):
|
||||||
|
return response.status_code == 404
|
||||||
|
|||||||
Reference in New Issue
Block a user