From 8dc57949724c918b1a0c6055da1274563382a9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 29 May 2025 20:29:45 +0200 Subject: [PATCH] [common] return NullResponse for non-fatal requests (#7598) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make Extractor.request(…, fatal=False) actually non-fatal by returning an empty response instead of raising an exception when a request fails due to connection issues. --- gallery_dl/extractor/common.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gallery_dl/extractor/common.py b/gallery_dl/extractor/common.py index 9484237b..879a7e9f 100644 --- a/gallery_dl/extractor/common.py +++ b/gallery_dl/extractor/common.py @@ -172,7 +172,6 @@ class Extractor(): try: response = session.request(method, url, **kwargs) except requests.exceptions.ConnectionError as exc: - code = 0 try: reason = exc.args[0].reason cls = reason.__class__.__name__ @@ -180,13 +179,15 @@ class Extractor(): msg = " {}: {}".format(cls, (err or pre).lstrip()) except Exception: msg = exc + code = 0 except (requests.exceptions.Timeout, requests.exceptions.ChunkedEncodingError, requests.exceptions.ContentDecodingError) as exc: msg = exc code = 0 except (requests.exceptions.RequestException) as exc: - raise exception.HttpError(exc) + msg = exc + break else: code = response.status_code if self._write_pages: @@ -238,6 +239,9 @@ class Extractor(): self.sleep(seconds, "retry") tries += 1 + if not fatal or fatal is ...: + self.log.warning(msg) + return util.NullResponse(url, msg) raise exception.HttpError(msg, response) def request_location(self, url, **kwargs):