summaryrefslogtreecommitdiffstats
path: root/gallery_dl/postprocessor/common.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/postprocessor/common.py')
-rw-r--r--gallery_dl/postprocessor/common.py35
1 files changed, 32 insertions, 3 deletions
diff --git a/gallery_dl/postprocessor/common.py b/gallery_dl/postprocessor/common.py
index ef211e6..c28d060 100644
--- a/gallery_dl/postprocessor/common.py
+++ b/gallery_dl/postprocessor/common.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2018-2020 Mike Fährmann
+# Copyright 2018-2023 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
@@ -8,13 +8,42 @@
"""Common classes and constants used by postprocessor modules."""
+from .. import util, formatter
+
class PostProcessor():
"""Base class for postprocessors"""
def __init__(self, job):
- name = self.__class__.__name__[:-2].lower()
- self.log = job.get_logger("postprocessor." + name)
+ self.name = self.__class__.__name__[:-2].lower()
+ self.log = job.get_logger("postprocessor." + self.name)
def __repr__(self):
return self.__class__.__name__
+
+ def _init_archive(self, job, options, prefix=None):
+ archive = options.get("archive")
+ if archive:
+ extr = job.extractor
+ archive = util.expand_path(archive)
+ if not prefix:
+ prefix = "_" + self.name.upper() + "_"
+ archive_format = (
+ options.get("archive-prefix", extr.category) +
+ options.get("archive-format", prefix + extr.archive_fmt))
+ try:
+ if "{" in archive:
+ archive = formatter.parse(archive).format_map(
+ job.pathfmt.kwdict)
+ self.archive = util.DownloadArchive(
+ archive, archive_format,
+ options.get("archive-pragma"),
+ "_archive_" + self.name)
+ except Exception as exc:
+ self.log.warning(
+ "Failed to open %s archive at '%s' ('%s: %s')",
+ self.name, archive, exc.__class__.__name__, exc)
+ else:
+ self.log.debug("Using %s archive '%s'", self.name, archive)
+ else:
+ self.archive = None