From 2495b99347a000985448b14ffe3b22e5e977ceb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 19 Aug 2019 22:55:54 +0200 Subject: [PATCH] [postprocessor:classify] improve path generation (fixes #138) It still doesn't work for converted ugoira animations thanks to how those files are handled, but everything else, including files with unknown or changing file extension, now works as it should. --- gallery_dl/postprocessor/classify.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/gallery_dl/postprocessor/classify.py b/gallery_dl/postprocessor/classify.py index c0ab59c2..721dee00 100644 --- a/gallery_dl/postprocessor/classify.py +++ b/gallery_dl/postprocessor/classify.py @@ -34,16 +34,24 @@ class ClassifyPP(PostProcessor): def prepare(self, pathfmt): ext = pathfmt.extension - if ext in self.mapping: - self._dir = pathfmt.realdirectory + os.sep + self.mapping[ext] - pathfmt.realpath = self._dir + os.sep + pathfmt.filename - else: - self._dir = None + # set initial paths to enable download skips + self._build_paths(pathfmt, self.mapping[ext]) def run(self, pathfmt): - if self._dir: - os.makedirs(self._dir, exist_ok=True) + ext = pathfmt.extension + if ext in self.mapping: + # rebuild paths in case the filename extension changed + path = self._build_paths(pathfmt, self.mapping[ext]) + os.makedirs(path, exist_ok=True) + + @staticmethod + def _build_paths(pathfmt, extra): + path = pathfmt.realdirectory + os.sep + extra + pathfmt.realpath = path + os.sep + pathfmt.filename + pathfmt.path = (pathfmt.directory + os.sep + + extra + os.sep + pathfmt.filename) + return path __postprocessor__ = ClassifyPP