diff options
| author | 2021-11-01 05:03:49 -0400 | |
|---|---|---|
| committer | 2021-11-01 05:03:49 -0400 | |
| commit | 4a965d875415907cc1a016b428ae305a964f9228 (patch) | |
| tree | 7cece9948a7ba390348e00c669f9cb1f7a9ba39a /gallery_dl/postprocessor/compare.py | |
| parent | 34ba2951b8c523713425c98addb9256ea05c946f (diff) | |
New upstream version 1.19.1.upstream/1.19.1
Diffstat (limited to 'gallery_dl/postprocessor/compare.py')
| -rw-r--r-- | gallery_dl/postprocessor/compare.py | 58 |
1 files changed, 32 insertions, 26 deletions
diff --git a/gallery_dl/postprocessor/compare.py b/gallery_dl/postprocessor/compare.py index a08cdc4..b3b94f7 100644 --- a/gallery_dl/postprocessor/compare.py +++ b/gallery_dl/postprocessor/compare.py @@ -20,36 +20,32 @@ class ComparePP(PostProcessor): PostProcessor.__init__(self, job) if options.get("shallow"): self._compare = self._compare_size + self._equal_exc = self._equal_cnt = 0 - 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): + equal = options.get("equal") + if equal: + equal, _, emax = equal.partition(":") + self._equal_max = text.parse_int(emax) + if equal == "abort": + self._equal_exc = exception.StopExtraction + elif equal == "terminate": + self._equal_exc = exception.TerminateExtraction + elif equal == "exit": + self._equal_exc = sys.exit + + job.register_hooks({"file": ( + self.enumerate + if options.get("action") == "enumerate" else + self.replace + )}, options) + + def replace(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 + return self._equal(pathfmt) except OSError: pass + self._equal_cnt = 0 def enumerate(self, pathfmt): num = 1 @@ -58,9 +54,10 @@ class ComparePP(PostProcessor): pathfmt.prefix = str(num) + "." pathfmt.set_extension(pathfmt.extension, False) num += 1 - pathfmt.delete = True + return self._equal(pathfmt) except OSError: pass + self._equal_cnt = 0 def _compare(self, f1, f2): return self._compare_size(f1, f2) and self._compare_content(f1, f2) @@ -81,5 +78,14 @@ class ComparePP(PostProcessor): if not buf1: return True + def _equal(self, pathfmt): + if self._equal_exc: + self._equal_cnt += 1 + if self._equal_cnt >= self._equal_max: + util.remove_file(pathfmt.temppath) + print() + raise self._equal_exc() + pathfmt.delete = True + __postprocessor__ = ComparePP |
