From 7a98a93a8e868af375c71d2e8ffae0feed44bf77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Fri, 6 Feb 2026 19:17:32 +0100 Subject: [PATCH] [common] only call 'skip()' & 'finalize()' when defined --- gallery_dl/extractor/common.py | 7 +------ gallery_dl/job.py | 24 ++++++++++++++---------- test/test_extractor.py | 6 ++++-- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/gallery_dl/extractor/common.py b/gallery_dl/extractor/common.py index 90aceed3..5879f425 100644 --- a/gallery_dl/extractor/common.py +++ b/gallery_dl/extractor/common.py @@ -53,6 +53,7 @@ class Extractor(): request_interval_min = 0.0 request_interval_429 = 60.0 request_timestamp = 0.0 + finalize = skip = None def __init__(self, match): self.log = logging.getLogger(self.category) @@ -103,16 +104,10 @@ class Extractor(): self._init() self.initialize = util.noop - def finalize(self, status): - pass - def items(self): return yield - def skip(self, num): - return 0 - def config(self, key, default=None): return config.interpolate(self._cfgpath, key, default) diff --git a/gallery_dl/job.py b/gallery_dl/job.py index 710ffd95..c70bbc2a 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -201,7 +201,8 @@ class Job(): if extractor.status: self.status |= extractor.status self.handle_finalize() - extractor.finalize(self.status) + if extractor.finalize is not None: + extractor.finalize(self.status) return self.status @@ -285,15 +286,17 @@ class Job(): pass def _init(self): - self.extractor.initialize() - self.pred_url = self._prepare_predicates( - "file", "image", True) - self.pred_post = self._prepare_predicates( - "post", None, False) - self.pred_queue = self._prepare_predicates( - "child", "chapter", False) + extr = self.extractor - init = self.extractor.config("init", False) + extr.initialize() + self.pred_url = self._prepare_predicates( + "file", "image", extr.skip) + self.pred_post = self._prepare_predicates( + "post", None, None) + self.pred_queue = self._prepare_predicates( + "child", "chapter", None) + + init = extr.config("init", False) if init and init != "lazy": self.initialize() @@ -315,7 +318,8 @@ class Job(): if (prange := extr.config(target + "-range")) or \ alt is not None and (prange := extr.config(alt + "-range")): try: - skip = extr.skip if skip and not pfilter else None + if pfilter: + skip = None flag = target if alt is not None else None predicates.append(util.predicate_range(prange, skip, flag)) except ValueError as exc: diff --git a/test/test_extractor.py b/test/test_extractor.py index c06b890c..25c0aee7 100644 --- a/test/test_extractor.py +++ b/test/test_extractor.py @@ -160,13 +160,15 @@ class TestExtractorModule(unittest.TestCase): extr.request = fail_request extr.initialize() - extr.finalize() + if extr.finalize is not None: + extr.finalize(0) def test_init_ytdl(self): try: extr = extractor.find("ytdl:") extr.initialize() - extr.finalize() + if extr.finalize is not None: + extr.finalize(0) except ImportError as exc: if exc.name in ("youtube_dl", "yt_dlp"): raise unittest.SkipTest(f"cannot import module '{exc.name}'")