split 'build_path' from 'set_filename' and 'set_extension'

Do not automatically build a new path
when setting file metadata or updating its extension.
This commit is contained in:
Mike Fährmann
2022-11-08 17:01:10 +01:00
parent 39d9c362e4
commit 8124c16a50
8 changed files with 53 additions and 38 deletions

View File

@@ -15,16 +15,16 @@ import functools
from . import util, formatter, exception
WINDOWS = util.WINDOWS
EXTENSION_MAP = {
"jpeg": "jpg",
"jpe" : "jpg",
"jfif": "jpg",
"jif" : "jpg",
"jfi" : "jpg",
}
class PathFormat():
EXTENSION_MAP = {
"jpeg": "jpg",
"jpe" : "jpg",
"jfif": "jpg",
"jif" : "jpg",
"jfi" : "jpg",
}
def __init__(self, extractor):
config = extractor.config
@@ -78,7 +78,7 @@ class PathFormat():
extension_map = config("extension-map")
if extension_map is None:
extension_map = self.EXTENSION_MAP
extension_map = EXTENSION_MAP
self.extension_map = extension_map.get
restrict = config("path-restrict", "auto")
@@ -161,12 +161,14 @@ class PathFormat():
num = 1
try:
while True:
self.prefix = str(num) + "."
self.set_extension(self.extension, False)
prefix = format(num) + "."
self.kwdict["extension"] = prefix + self.extension
self.build_path()
os.stat(self.realpath) # raises OSError if file doesn't exist
num += 1
except OSError:
pass
self.prefix = prefix
return False
def set_directory(self, kwdict):
@@ -198,28 +200,21 @@ class PathFormat():
def set_filename(self, kwdict):
"""Set general filename data"""
self.kwdict = kwdict
self.temppath = self.prefix = ""
self.filename = self.temppath = self.prefix = ""
ext = kwdict["extension"]
kwdict["extension"] = self.extension = self.extension_map(ext, ext)
if self.extension:
self.build_path()
else:
self.filename = ""
def set_extension(self, extension, real=True):
"""Set filename extension"""
extension = self.extension_map(extension, extension)
if real:
self.extension = extension
self.extension = extension = self.extension_map(extension, extension)
self.kwdict["extension"] = self.prefix + extension
self.build_path()
def fix_extension(self, _=None):
"""Fix filenames without a given filename extension"""
if not self.extension:
self.set_extension("", False)
self.kwdict["extension"] = self.prefix + self.extension_map("", "")
self.build_path()
if self.path[-1] == ".":
self.path = self.path[:-1]
self.temppath = self.realpath = self.realpath[:-1]
@@ -296,7 +291,9 @@ class PathFormat():
if self.extension:
self.temppath += ".part"
else:
self.set_extension("part", False)
self.kwdict["extension"] = self.prefix + self.extension_map(
"part", "part")
self.build_path()
if part_directory:
self.temppath = os.path.join(
part_directory,