diff options
Diffstat (limited to 'gallery_dl/downloader/http.py')
| -rw-r--r-- | gallery_dl/downloader/http.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gallery_dl/downloader/http.py b/gallery_dl/downloader/http.py index 26eb7b5..4037420 100644 --- a/gallery_dl/downloader/http.py +++ b/gallery_dl/downloader/http.py @@ -37,6 +37,7 @@ class HttpDownloader(DownloaderBase): self.minsize = self.config("filesize-min") self.maxsize = self.config("filesize-max") self.retries = self.config("retries", extractor._retries) + self.retry_codes = self.config("retry-codes") self.timeout = self.config("timeout", extractor._timeout) self.verify = self.config("verify", extractor._verify) self.mtime = self.config("mtime", True) @@ -44,6 +45,8 @@ class HttpDownloader(DownloaderBase): if self.retries < 0: self.retries = float("inf") + if self.retry_codes is None: + self.retry_codes = [429] if self.minsize: minsize = text.parse_bytes(self.minsize) if not minsize: @@ -74,6 +77,8 @@ class HttpDownloader(DownloaderBase): self.log.warning("Invalid rate limit (%r)", self.rate) if self.progress is not None: self.receive = self._receive_rate + if self.progress < 0.0: + self.progress = 0.0 def download(self, url, pathfmt): try: @@ -96,6 +101,13 @@ class HttpDownloader(DownloaderBase): adjust_extension = kwdict.get( "_http_adjust_extension", self.adjust_extension) + codes = kwdict.get("_http_retry_codes") + if codes: + retry_codes = self.retry_codes.copy() + retry_codes += codes + else: + retry_codes = self.retry_codes + if self.part and not metadata: pathfmt.part_enable(self.partdir) @@ -156,7 +168,7 @@ class HttpDownloader(DownloaderBase): break else: msg = "'{} {}' for '{}'".format(code, response.reason, url) - if code == 429 or 500 <= code < 600: # Server Error + if code in retry_codes or 500 <= code < 600: continue self.log.warning(msg) return False @@ -295,7 +307,7 @@ class HttpDownloader(DownloaderBase): write(data) if progress is not None: - if time_elapsed >= progress: + if time_elapsed > progress: self.out.progress( bytes_total, bytes_start + bytes_downloaded, |
