[common] only call 'skip()' & 'finalize()' when defined
This commit is contained in:
@@ -53,6 +53,7 @@ class Extractor():
|
|||||||
request_interval_min = 0.0
|
request_interval_min = 0.0
|
||||||
request_interval_429 = 60.0
|
request_interval_429 = 60.0
|
||||||
request_timestamp = 0.0
|
request_timestamp = 0.0
|
||||||
|
finalize = skip = None
|
||||||
|
|
||||||
def __init__(self, match):
|
def __init__(self, match):
|
||||||
self.log = logging.getLogger(self.category)
|
self.log = logging.getLogger(self.category)
|
||||||
@@ -103,16 +104,10 @@ class Extractor():
|
|||||||
self._init()
|
self._init()
|
||||||
self.initialize = util.noop
|
self.initialize = util.noop
|
||||||
|
|
||||||
def finalize(self, status):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
return
|
return
|
||||||
yield
|
yield
|
||||||
|
|
||||||
def skip(self, num):
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def config(self, key, default=None):
|
def config(self, key, default=None):
|
||||||
return config.interpolate(self._cfgpath, key, default)
|
return config.interpolate(self._cfgpath, key, default)
|
||||||
|
|
||||||
|
|||||||
@@ -201,7 +201,8 @@ class Job():
|
|||||||
if extractor.status:
|
if extractor.status:
|
||||||
self.status |= extractor.status
|
self.status |= extractor.status
|
||||||
self.handle_finalize()
|
self.handle_finalize()
|
||||||
extractor.finalize(self.status)
|
if extractor.finalize is not None:
|
||||||
|
extractor.finalize(self.status)
|
||||||
|
|
||||||
return self.status
|
return self.status
|
||||||
|
|
||||||
@@ -285,15 +286,17 @@ class Job():
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def _init(self):
|
def _init(self):
|
||||||
self.extractor.initialize()
|
extr = self.extractor
|
||||||
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)
|
|
||||||
|
|
||||||
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":
|
if init and init != "lazy":
|
||||||
self.initialize()
|
self.initialize()
|
||||||
|
|
||||||
@@ -315,7 +318,8 @@ class Job():
|
|||||||
if (prange := extr.config(target + "-range")) or \
|
if (prange := extr.config(target + "-range")) or \
|
||||||
alt is not None and (prange := extr.config(alt + "-range")):
|
alt is not None and (prange := extr.config(alt + "-range")):
|
||||||
try:
|
try:
|
||||||
skip = extr.skip if skip and not pfilter else None
|
if pfilter:
|
||||||
|
skip = None
|
||||||
flag = target if alt is not None else None
|
flag = target if alt is not None else None
|
||||||
predicates.append(util.predicate_range(prange, skip, flag))
|
predicates.append(util.predicate_range(prange, skip, flag))
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
|
|||||||
@@ -160,13 +160,15 @@ class TestExtractorModule(unittest.TestCase):
|
|||||||
|
|
||||||
extr.request = fail_request
|
extr.request = fail_request
|
||||||
extr.initialize()
|
extr.initialize()
|
||||||
extr.finalize()
|
if extr.finalize is not None:
|
||||||
|
extr.finalize(0)
|
||||||
|
|
||||||
def test_init_ytdl(self):
|
def test_init_ytdl(self):
|
||||||
try:
|
try:
|
||||||
extr = extractor.find("ytdl:")
|
extr = extractor.find("ytdl:")
|
||||||
extr.initialize()
|
extr.initialize()
|
||||||
extr.finalize()
|
if extr.finalize is not None:
|
||||||
|
extr.finalize(0)
|
||||||
except ImportError as exc:
|
except ImportError as exc:
|
||||||
if exc.name in ("youtube_dl", "yt_dlp"):
|
if exc.name in ("youtube_dl", "yt_dlp"):
|
||||||
raise unittest.SkipTest(f"cannot import module '{exc.name}'")
|
raise unittest.SkipTest(f"cannot import module '{exc.name}'")
|
||||||
|
|||||||
Reference in New Issue
Block a user