PICARD-259: Have file metadata available when manually running script

Ensure that file metadata is also available to script when being run on a track manually after loading. If clear_existing_tags is present tags that would be deleted are not available. Technical variables are always available.
This commit is contained in:
Philipp Wolfer
2020-10-09 08:13:19 +02:00
parent cedb3d7497
commit 2c83f4ecc5
2 changed files with 10 additions and 3 deletions

View File

@@ -248,6 +248,8 @@ class File(QtCore.QObject, Item):
saved_metadata[tag] = values
deleted_tags = self.metadata.deleted_tags
self.metadata.copy(metadata)
for info in FILE_INFO_TAGS:
metadata[info] = self.orig_metadata[info]
if preserve_deleted:
for tag in deleted_tags:
del self.metadata[tag]

View File

@@ -174,9 +174,14 @@ class Track(DataObject, Item):
return
# Run the scripts for the file to allow usage of
# file specific metadata and variables
metadata = Metadata(self.orig_metadata)
metadata_proxy = MultiMetadataProxy(metadata, file.metadata)
self.run_scripts(metadata_proxy)
if config.setting["clear_existing_tags"]:
metadata = Metadata(self.orig_metadata)
metadata_proxy = MultiMetadataProxy(metadata, file.metadata)
self.run_scripts(metadata_proxy)
else:
metadata = Metadata(file.metadata)
metadata.update(self.orig_metadata)
self.run_scripts(metadata)
# Apply changes to the track's metadata done manually after the scripts ran
meta_diff = self.metadata.diff(self.scripted_metadata)
metadata.update(meta_diff)