return full provider item in versions
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 22 Jul 2022 14:32:19 +0000 (16:32 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 22 Jul 2022 14:32:19 +0000 (16:32 +0200)
music_assistant/controllers/music/tracks.py

index d8df400dd2969a715e4e6d05642915069bcc91bb..ee5a46caf492606488e85b169dfbbca9a761c9bb 100644 (file)
@@ -88,11 +88,11 @@ class TracksController(MediaControllerBase[Track]):
         for prov_version in track.provider_ids:
             if prov_version.item_id in all_versions:
                 continue
-            track_copy = Track.from_dict(track.to_dict())
-            track_copy.item_id = prov_version.item_id
-            track_copy.provider = prov_version.prov_type
-            track_copy.provider_ids = {prov_version}
-            all_versions[prov_version.item_id] = track_copy
+            # grab full item here including album details etc
+            prov_track = await self.get_provider_item(
+                prov_version.item_id, prov_version.prov_id
+            )
+            all_versions[prov_version.item_id] = prov_track
 
         # return the aggregated result
         return all_versions.values()
@@ -268,10 +268,10 @@ class TracksController(MediaControllerBase[Track]):
         """Extract all (unique) albums of track as TrackAlbumMapping."""
         track_albums: List[TrackAlbumMapping] = []
         # existing TrackAlbumMappings are starting point
-        if upd_track and upd_track.albums:
-            track_albums = upd_track.albums
-        elif base_track.albums:
+        if base_track.albums:
             track_albums = base_track.albums
+        elif upd_track and upd_track.albums:
+            track_albums = upd_track.albums
         # append update item album if needed
         if upd_track and upd_track.album:
             mapping = await self._get_album_mapping(