diff options
Diffstat (limited to 'gallery_dl/postprocessor/classify.py')
| -rw-r--r-- | gallery_dl/postprocessor/classify.py | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/gallery_dl/postprocessor/classify.py b/gallery_dl/postprocessor/classify.py index 34af1d9..5642955 100644 --- a/gallery_dl/postprocessor/classify.py +++ b/gallery_dl/postprocessor/classify.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2018-2021 Mike Fährmann +# Copyright 2018-2024 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 @@ -15,44 +15,43 @@ import os class ClassifyPP(PostProcessor): DEFAULT_MAPPING = { - "Music" : ("mp3", "aac", "flac", "ogg", "wma", "m4a", "wav"), - "Video" : ("flv", "ogv", "avi", "mp4", "mpg", "mpeg", "3gp", "mkv", - "webm", "vob", "wmv"), - "Pictures" : ("jpg", "jpeg", "png", "gif", "bmp", "svg", "webp"), + "Pictures" : ("jpg", "jpeg", "png", "gif", "bmp", "svg", "webp", + "avif", "heic", "heif", "ico", "psd"), + "Video" : ("flv", "ogv", "avi", "mp4", "mpg", "mpeg", "3gp", "mkv", + "webm", "vob", "wmv", "m4v", "mov"), + "Music" : ("mp3", "aac", "flac", "ogg", "wma", "m4a", "wav"), "Archives" : ("zip", "rar", "7z", "tar", "gz", "bz2"), + "Documents": ("txt", "pdf"), } def __init__(self, job, options): PostProcessor.__init__(self, job) - mapping = options.get("mapping", self.DEFAULT_MAPPING) + self.directory = self.realdirectory = "" + mapping = options.get("mapping", self.DEFAULT_MAPPING) self.mapping = { ext: directory for directory, exts in mapping.items() for ext in exts } - job.register_hooks( - {"prepare": self.prepare, "file": self.move}, options) - def prepare(self, pathfmt): - ext = pathfmt.extension - if ext in self.mapping: - # set initial paths to enable download skips - self._build_paths(pathfmt, self.mapping[ext]) + job.register_hooks({ + "post" : self.initialize, + "prepare": self.prepare, + }, options) + + def initialize(self, pathfmt): + # store base directory paths + self.directory = pathfmt.directory + self.realdirectory = pathfmt.realdirectory - def move(self, pathfmt): + def prepare(self, pathfmt): + # extend directory paths depending on file extension 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 + extra - pathfmt.realpath = path + os.sep + pathfmt.filename - pathfmt.path = pathfmt.directory + extra + os.sep + pathfmt.filename - return path + extra = self.mapping[ext] + os.sep + pathfmt.directory = self.directory + extra + pathfmt.realdirectory = self.realdirectory + extra __postprocessor__ = ClassifyPP |
