From c3634420dcea1626b66889828515cb2a5e9b8157 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Fri, 19 Apr 2019 19:09:16 +0200 Subject: [PATCH] Ensure script_to_filename() doesn't modify passed metadata - it's hard to be sure the caller did a copy or not before - there's no point in modifying the passed metadata - no need to copy over images to temporary Metadata object --- picard/util/scripttofilename.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/picard/util/scripttofilename.py b/picard/util/scripttofilename.py index 8b588036a..e00c96b71 100644 --- a/picard/util/scripttofilename.py +++ b/picard/util/scripttofilename.py @@ -21,6 +21,7 @@ from picard import config from picard.const.sys import IS_WIN +from picard.metadata import Metadata from picard.script import ScriptParser from picard.util import ( replace_win32_incompat, @@ -33,11 +34,11 @@ def script_to_filename(naming_format, metadata, file=None, settings=None): if settings is None: settings = config.setting # make sure every metadata can safely be used in a path name + meta = Metadata() for name in metadata: - values = [sanitize_filename(str(v)) for v in metadata.getall(name)] - metadata.set(name, values) + meta[name] = [sanitize_filename(str(v)) for v in metadata.getall(name)] naming_format = naming_format.replace("\t", "").replace("\n", "") - filename = ScriptParser().eval(naming_format, metadata, file) + filename = ScriptParser().eval(naming_format, meta, file) if settings["ascii_filenames"]: filename = replace_non_ascii(filename, pathsave=True) # replace incompatible characters