diff --git a/CHANGELOG.md b/CHANGELOG.md index 05ec91c3..e45783bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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)) diff --git a/docs/configuration.rst b/docs/configuration.rst index 0cd00db5..e2f1032e 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -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 diff --git a/gallery_dl/__init__.py b/gallery_dl/__init__.py index 7d64c91e..8154afc7 100644 --- a/gallery_dl/__init__.py +++ b/gallery_dl/__init__.py @@ -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 diff --git a/gallery_dl/exception.py b/gallery_dl/exception.py index f553d419..0433dc97 100644 --- a/gallery_dl/exception.py +++ b/gallery_dl/exception.py @@ -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 diff --git a/gallery_dl/job.py b/gallery_dl/job.py index 00688d45..64d29798 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -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 diff --git a/gallery_dl/version.py b/gallery_dl/version.py index 031c4ebf..07403811 100644 --- a/gallery_dl/version.py +++ b/gallery_dl/version.py @@ -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"