add 'skip-filter' option (#5255)
This commit is contained in:
@@ -337,6 +337,15 @@ Description
|
|||||||
filename extension (``file.1.ext``, ``file.2.ext``, etc.)
|
filename extension (``file.1.ext``, ``file.2.ext``, etc.)
|
||||||
|
|
||||||
|
|
||||||
|
extractor.*.skip-filter
|
||||||
|
-----------------------
|
||||||
|
Type
|
||||||
|
``string``
|
||||||
|
Description
|
||||||
|
Python expression controlling which skipped files to count towards
|
||||||
|
``"abort"`` / ``"terminate"`` / ``"exit"``.
|
||||||
|
|
||||||
|
|
||||||
extractor.*.sleep
|
extractor.*.sleep
|
||||||
-----------------
|
-----------------
|
||||||
Type
|
Type
|
||||||
|
|||||||
@@ -468,9 +468,12 @@ class DownloadJob(Job):
|
|||||||
for callback in self.hooks["skip"]:
|
for callback in self.hooks["skip"]:
|
||||||
callback(pathfmt)
|
callback(pathfmt)
|
||||||
if self._skipexc:
|
if self._skipexc:
|
||||||
self._skipcnt += 1
|
if not self._skipftr or self._skipftr(pathfmt.kwdict):
|
||||||
if self._skipcnt >= self._skipmax:
|
self._skipcnt += 1
|
||||||
raise self._skipexc()
|
if self._skipcnt >= self._skipmax:
|
||||||
|
raise self._skipexc()
|
||||||
|
else:
|
||||||
|
self._skipcnt = 0
|
||||||
|
|
||||||
def download(self, url):
|
def download(self, url):
|
||||||
"""Download 'url'"""
|
"""Download 'url'"""
|
||||||
@@ -559,6 +562,12 @@ class DownloadJob(Job):
|
|||||||
elif skip == "exit":
|
elif skip == "exit":
|
||||||
self._skipexc = SystemExit
|
self._skipexc = SystemExit
|
||||||
self._skipmax = text.parse_int(smax)
|
self._skipmax = text.parse_int(smax)
|
||||||
|
|
||||||
|
skip_filter = cfg("skip-filter")
|
||||||
|
if skip_filter:
|
||||||
|
self._skipftr = util.compile_expression(skip_filter)
|
||||||
|
else:
|
||||||
|
self._skipftr = None
|
||||||
else:
|
else:
|
||||||
# monkey-patch methods to always return False
|
# monkey-patch methods to always return False
|
||||||
pathfmt.exists = lambda x=None: False
|
pathfmt.exists = lambda x=None: False
|
||||||
|
|||||||
Reference in New Issue
Block a user