aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/postprocessor/classify.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/postprocessor/classify.py')
-rw-r--r--gallery_dl/postprocessor/classify.py47
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