add '"skip": "terminate"' option

Stops not only the current extractor/job,
but all parent extractors/jobs as well.
pull/1558/head
Mike Fährmann 3 years ago
parent 4835888acc
commit c693db5b1a
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -1,5 +1,7 @@
# Changelog
## Unreleased
## 1.17.4 - 2021-05-07
### Additions
- [gelbooru] add extractor for `/redirect.php` URLs ([#1530](https://github.com/mikf/gallery-dl/issues/1530))

@ -226,10 +226,14 @@ Description
* ``true``: Skip downloads
* ``false``: Overwrite already existing files
* ``"abort"``: Abort the current extractor run
* ``"abort:N"``: Skip downloads and abort extractor run
* ``"abort"``: Stop the current extractor run
* ``"abort:N"``: Skip downloads and stop the current extractor run
after ``N`` consecutive skips
* ``"terminate"``: Stop the current extractor run, including parent extractors
* ``"terminate:N"``: Skip downloads and stop the current extractor run,
including parent extractors, after ``N`` consecutive skips
* ``"exit"``: Exit the program altogether
* ``"exit:N"``: Skip downloads and exit the program
after ``N`` consecutive skips

@ -249,6 +249,8 @@ def main():
retval |= jobtype(url.value).run()
else:
retval |= jobtype(url).run()
except exception.TerminateExtraction:
pass
except exception.NoExtractorError:
log.error("No suitable extractor found for '%s'", url)
retval |= 64

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright 2015-2019 Mike Fährmann
# Copyright 2015-2021 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@ -23,6 +23,7 @@ Exception
+-- FilterError
+-- NoExtractorError
+-- StopExtraction
+-- TerminateExtraction
"""
@ -109,3 +110,8 @@ class StopExtraction(GalleryDLException):
GalleryDLException.__init__(self)
self.message = message % args if args else message
self.code = 1 if message else 0
class TerminateExtraction(GalleryDLException):
"""Terminate data extraction"""
code = 0

@ -80,6 +80,8 @@ class Job():
if exc.message:
log.error(exc.message)
self.status |= exc.code
except exception.TerminateExtraction:
raise
except exception.GalleryDLException as exc:
log.error("%s: %s", exc.__class__.__name__, exc)
self.status |= exc.code
@ -400,6 +402,8 @@ class DownloadJob(Job):
skip, _, smax = skip.partition(":")
if skip == "abort":
self._skipexc = exception.StopExtraction
elif skip == "terminate":
self._skipexc = exception.TerminateExtraction
elif skip == "exit":
self._skipexc = sys.exit
self._skipcnt = 0

@ -6,4 +6,4 @@
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
__version__ = "1.17.4"
__version__ = "1.17.5-dev"

Loading…
Cancel
Save