From bd0db6f130a3ee8340fb469a22a852154ba97a58 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Sat, 24 Oct 2020 20:27:31 +0200 Subject: [PATCH] PICARD-1987: Fix ~multiartist, ~pregap and ~datatrack variables not set for files --- picard/album.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/picard/album.py b/picard/album.py index f4a5ca04a..0f823a5d6 100644 --- a/picard/album.py +++ b/picard/album.py @@ -335,21 +335,25 @@ class Album(DataObject, Item): if "pregap" in medium_node: discpregap = True absolutetracknumber += 1 - track = self._finalize_loading_track(medium_node['pregap'], mm, artists, va, absolutetracknumber, discpregap) - track.metadata['~pregap'] = "1" + extra = { + '~pregap': '1' + } + self._finalize_loading_track(medium_node['pregap'], mm, artists, va, absolutetracknumber, discpregap, extra) track_count = medium_node['track-count'] if track_count: tracklist_node = medium_node['tracks'] for track_node in tracklist_node: absolutetracknumber += 1 - track = self._finalize_loading_track(track_node, mm, artists, va, absolutetracknumber, discpregap) + self._finalize_loading_track(track_node, mm, artists, va, absolutetracknumber, discpregap) if "data-tracks" in medium_node: for track_node in medium_node['data-tracks']: absolutetracknumber += 1 - track = self._finalize_loading_track(track_node, mm, artists, va, absolutetracknumber, discpregap) - track.metadata['~datatrack'] = "1" + extra = { + '~datatrack': '1' + } + self._finalize_loading_track(track_node, mm, artists, va, absolutetracknumber, discpregap, extra) totalalbumtracks = absolutetracknumber self._new_metadata['~totalalbumtracks'] = totalalbumtracks @@ -360,6 +364,7 @@ class Album(DataObject, Item): track.metadata["~totalalbumtracks"] = totalalbumtracks if len(artists) > 1: track.metadata["~multiartist"] = "1" + track.orig_metadata["~multiartist"] = "1" del self._release_node del self._release_artist_nodes self._tracks_loaded = True @@ -413,7 +418,7 @@ class Album(DataObject, Item): if self.item.isSelected(): self.tagger.window.refresh_metadatabox() - def _finalize_loading_track(self, track_node, metadata, artists, va, absolutetracknumber, discpregap): + def _finalize_loading_track(self, track_node, metadata, artists, va, absolutetracknumber, discpregap, extrametadata=None): # As noted in `_parse_release` above, the release artist nodes # may contain supplementary data that isn't present in track # artist nodes. Similarly, the track artists may contain @@ -441,6 +446,8 @@ class Album(DataObject, Item): del tm["compilation"] if discpregap: tm["~discpregap"] = "1" + if extrametadata: + tm.update(extrametadata) # Run track metadata plugins try: