From: Marcel van der Veldt Date: Fri, 19 Apr 2024 09:37:53 +0000 (+0200) Subject: fixes for local images X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=b7b6fcf9a0e3ccd8c5cc44bbbc7c41298c4b75b2;p=music-assistant-server.git fixes for local images --- diff --git a/music_assistant/common/models/media_items.py b/music_assistant/common/models/media_items.py index 67a35c59..25fe0a95 100644 --- a/music_assistant/common/models/media_items.py +++ b/music_assistant/common/models/media_items.py @@ -183,6 +183,7 @@ class MediaItemMetadata(DataClassDictMixin): description: str | None = None review: str | None = None explicit: bool | None = None + # NOTE: images is a list of available images, sorted by preference images: list[MediaItemImage] | None = None genres: set[str] | None = None mood: str | None = None @@ -203,7 +204,7 @@ class MediaItemMetadata(DataClassDictMixin): def update( self, new_values: MediaItemMetadata, - allow_overwrite: bool = True, + allow_overwrite: bool = False, ) -> MediaItemMetadata: """Update metadata (in-place) with new values.""" if not new_values: diff --git a/music_assistant/server/controllers/media/tracks.py b/music_assistant/server/controllers/media/tracks.py index a6a9e928..9078abfe 100644 --- a/music_assistant/server/controllers/media/tracks.py +++ b/music_assistant/server/controllers/media/tracks.py @@ -143,13 +143,7 @@ class TracksController(MediaControllerBase[Track]): except MusicAssistantError as err: # edge case where playlist track has invalid albumdetails self.logger.warning("Unable to fetch album details %s - %s", track.album.uri, str(err)) - # prefer album image if album explicitly given or track has no image on its own - if ( - (album_uri or not track.metadata.images) - and isinstance(track.album, Album) - and track.album.image - ): - track.metadata.images = [track.album.image] + # append artist details to full track item (resolve ItemMappings) track_artists = [] for artist in track.artists: @@ -187,18 +181,14 @@ class TracksController(MediaControllerBase[Track]): # grab additional metadata if metadata_lookup: await self.mass.metadata.get_track_metadata(item) - # copy track image from album (only if albumtype = single) + # copy track image from album (only if albumtype = single !) if ( not item.image and isinstance(item.album, Album) and item.album.image and item.album.album_type == AlbumType.SINGLE ): - item.metadata.images = item.album.metadata.images - elif item.image and isinstance(item.album, Album) and item.image == item.album.image: - item.metadata.images = [] - if item.image and isinstance(item.album, Album) and not item.album.image: - item.album.metadata.images = item.metadata.images + item.metadata.images = [item.album.image] # check for existing item first library_item = None if cur_item := await self.get_library_item_by_prov_id(item.item_id, item.provider): diff --git a/music_assistant/server/controllers/metadata.py b/music_assistant/server/controllers/metadata.py index 81bd4dac..aae513a7 100644 --- a/music_assistant/server/controllers/metadata.py +++ b/music_assistant/server/controllers/metadata.py @@ -235,7 +235,7 @@ class MetaDataController(CoreController): if ProviderFeature.ARTIST_METADATA not in provider.supported_features: continue if metadata := await provider.get_artist_metadata(artist): - artist.metadata.update(metadata) + artist.metadata.update(metadata, allow_overwrite=False) self.logger.debug( "Fetched metadata for Artist %s on provider %s", artist.name, @@ -254,7 +254,7 @@ class MetaDataController(CoreController): if ProviderFeature.ALBUM_METADATA not in provider.supported_features: continue if metadata := await provider.get_album_metadata(album): - album.metadata.update(metadata) + album.metadata.update(metadata, allow_overwrite=False) self.logger.debug( "Fetched metadata for Album %s on provider %s", album.name, @@ -272,7 +272,7 @@ class MetaDataController(CoreController): if ProviderFeature.TRACK_METADATA not in provider.supported_features: continue if metadata := await provider.get_track_metadata(track): - track.metadata.update(metadata) + track.metadata.update(metadata, allow_overwrite=False) self.logger.debug( "Fetched metadata for Track %s on provider %s", track.name,