diff options
| author | 2021-10-05 23:30:05 -0400 | |
|---|---|---|
| committer | 2021-10-05 23:30:05 -0400 | |
| commit | 34ba2951b8c523713425c98addb9256ea05c946f (patch) | |
| tree | 6ec7e96d0c6e6f6e94b6b97ecd8c0a414ceef93d /gallery_dl/postprocessor/compare.py | |
| parent | 3f5483df9075ae526f4c54f4cbe80edeabf6d4cc (diff) | |
New upstream version 1.19.0.upstream/1.19.0
Diffstat (limited to 'gallery_dl/postprocessor/compare.py')
| -rw-r--r-- | gallery_dl/postprocessor/compare.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/gallery_dl/postprocessor/compare.py b/gallery_dl/postprocessor/compare.py index 1bca593..a08cdc4 100644 --- a/gallery_dl/postprocessor/compare.py +++ b/gallery_dl/postprocessor/compare.py @@ -9,6 +9,8 @@ """Compare versions of the same file and replace/enumerate them on mismatch""" from .common import PostProcessor +from .. import text, util, exception +import sys import os @@ -19,16 +21,33 @@ class ComparePP(PostProcessor): if options.get("shallow"): self._compare = self._compare_size - job.register_hooks({"file": ( - self.enumerate - if options.get("action") == "enumerate" else - self.compare - )}, options) + action = options.get("action") + if action == "enumerate": + job.register_hooks({"file": self.enumerate}, options) + else: + job.register_hooks({"file": self.compare}, options) + action, _, smax = action.partition(":") + self._skipmax = text.parse_int(smax) + self._skipexc = self._skipcnt = 0 + if action == "abort": + self._skipexc = exception.StopExtraction + elif action == "terminate": + self._skipexc = exception.TerminateExtraction + elif action == "exit": + self._skipexc = sys.exit def compare(self, pathfmt): try: if self._compare(pathfmt.realpath, pathfmt.temppath): + if self._skipexc: + self._skipcnt += 1 + if self._skipcnt >= self._skipmax: + util.remove_file(pathfmt.temppath) + print() + raise self._skipexc() pathfmt.delete = True + else: + self._skipcnt = 0 except OSError: pass |
