diff --git a/picard/file.py b/picard/file.py index 6420e6b8b..e08313e01 100644 --- a/picard/file.py +++ b/picard/file.py @@ -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] diff --git a/picard/track.py b/picard/track.py index 276afc5af..bb774e9fc 100644 --- a/picard/track.py +++ b/picard/track.py @@ -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)