Fix library tracks images
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 18 Feb 2025 15:17:13 +0000 (16:17 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 18 Feb 2025 15:17:13 +0000 (16:17 +0100)
music_assistant/controllers/media/albums.py
music_assistant/controllers/media/base.py

index 5566439f157848ecf996b0619cc81b4d88c49616..678c7d7d2ad780fd2a598ffb496a961f6a18af4b 100644 (file)
@@ -215,10 +215,6 @@ class AlbumsController(MediaControllerBase[Album, Album]):
         if not library_album:
             return await self._get_provider_album_tracks(item_id, provider_instance_id_or_domain)
         db_items = await self.get_library_album_tracks(library_album.item_id)
-        # override embedded images with album thumb
-        if library_album.image:
-            for db_item in db_items:
-                db_item.metadata.images = library_album.metadata.images
         result: UniqueList[Track] = UniqueList(db_items)
         if in_library_only:
             # return in-library items only
@@ -246,6 +242,10 @@ class AlbumsController(MediaControllerBase[Album, Album]):
                     continue
                 unique_ids.add(unique_id)
                 provider_track.album = library_album
+                # always prefer album image
+                album_images = [library_album.image] if library_album.image else []
+                track_images = provider_track.metadata.images or []
+                provider_track.metadata.images = album_images + track_images
                 result.append(provider_track)
         # NOTE: we need to return the results sorted on disc/track here
         # to ensure the correct order at playback
index 0f6ecec84216fd6b895d623d4b7fb195a0ee51fa..cbfa95db71b1cbed97ecaa268b95be9a93625d16 100644 (file)
@@ -811,9 +811,11 @@ class MediaControllerBase(Generic[ItemCls, LibraryUpdate], metaclass=ABCMeta):
                 if album_thumb:
                     # copy album image to itemmapping single image
                     db_row_dict["image"] = album_thumb
-                    if db_row_dict.get("metadata") and db_row_dict["metadata"].get("images"):
+                    if db_row_dict["metadata"].get("images"):
                         db_row_dict["metadata"]["images"] = [
                             album_thumb,
                             *db_row_dict["metadata"]["images"],
                         ]
+                    else:
+                        db_row_dict["metadata"]["images"] = [album_thumb]
         return db_row_dict