[common] only call 'skip()' & 'finalize()' when defined

This commit is contained in:
Mike Fährmann
2026-02-06 19:17:32 +01:00
parent 40e4cc62c4
commit 7a98a93a8e
3 changed files with 19 additions and 18 deletions

View File

@@ -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)

View File

@@ -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:

View File

@@ -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}'")