From: Marcel van der Veldt Date: Thu, 20 Jul 2023 12:23:19 +0000 (+0200) Subject: Fix itemmapping album X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=164bf566ccabcb52209a7d875b395898d1fcb105;p=music-assistant-server.git Fix itemmapping album --- diff --git a/music_assistant/server/controllers/media/albums.py b/music_assistant/server/controllers/media/albums.py index 2b064090..5d0ad300 100644 --- a/music_assistant/server/controllers/media/albums.py +++ b/music_assistant/server/controllers/media/albums.py @@ -65,6 +65,7 @@ class AlbumsController(MediaControllerBase[Album]): lazy: bool = True, details: Album | ItemMapping = None, add_to_library: bool = False, + skip_metadata_lookup: bool = False, ) -> Album: """Return (full) details for a single media item.""" album = await super().get( @@ -74,6 +75,7 @@ class AlbumsController(MediaControllerBase[Album]): lazy=lazy, details=details, add_to_library=add_to_library, + skip_metadata_lookup=skip_metadata_lookup, ) # append full artist details to full album item album.artists = [ diff --git a/music_assistant/server/controllers/media/base.py b/music_assistant/server/controllers/media/base.py index 216a344c..b0846753 100644 --- a/music_assistant/server/controllers/media/base.py +++ b/music_assistant/server/controllers/media/base.py @@ -138,6 +138,7 @@ class MediaControllerBase(Generic[ItemCls], metaclass=ABCMeta): lazy: bool = True, details: ItemCls = None, add_to_library: bool = False, + skip_metadata_lookup: bool = False, ) -> ItemCls: """Return (full) details for a single media item.""" if provider_instance_id_or_domain == "database": @@ -186,7 +187,12 @@ class MediaControllerBase(Generic[ItemCls], metaclass=ABCMeta): # only if we really need to wait for the result (e.g. to prevent race conditions), # we can set lazy to false and we await the job to complete. task_id = f"add_{self.media_type.value}.{details.provider}.{details.item_id}" - add_task = self.mass.create_task(self.add_item_to_library, item=details, task_id=task_id) + add_task = self.mass.create_task( + self.add_item_to_library, + item=details, + skip_metadata_lookup=skip_metadata_lookup, + task_id=task_id, + ) if not lazy: await add_task return add_task.result() diff --git a/music_assistant/server/controllers/media/tracks.py b/music_assistant/server/controllers/media/tracks.py index 26f5ab54..840d779e 100644 --- a/music_assistant/server/controllers/media/tracks.py +++ b/music_assistant/server/controllers/media/tracks.py @@ -56,6 +56,7 @@ class TracksController(MediaControllerBase[Track]): details: Track = None, album_uri: str | None = None, add_to_library: bool = False, + skip_metadata_lookup: bool = False, ) -> Track: """Return (full) details for a single media item.""" track = await super().get( @@ -65,6 +66,7 @@ class TracksController(MediaControllerBase[Track]): lazy=lazy, details=details, add_to_library=add_to_library, + skip_metadata_lookup=skip_metadata_lookup, ) # append full album details to full track item try: @@ -77,6 +79,7 @@ class TracksController(MediaControllerBase[Track]): lazy=lazy, details=None if isinstance(track.album, ItemMapping) else track.album, add_to_library=add_to_library, + skip_metadata_lookup=skip_metadata_lookup, ) elif provider_instance_id_or_domain == "library": # grab the first album this track is attached to @@ -102,6 +105,7 @@ class TracksController(MediaControllerBase[Track]): lazy=lazy, details=None if isinstance(artist, ItemMapping) else artist, add_to_library=add_to_library, + skip_metadata_lookup=skip_metadata_lookup, ) ) track.artists = full_artists @@ -395,13 +399,14 @@ class TracksController(MediaControllerBase[Track]): """Store AlbumTrack info.""" if album.provider == "library": db_album = album - elif match := await self.mass.music.albums.get_library_item_by_prov_mappings( - album.provider_mappings - ): - db_album = match else: - db_album = await self.mass.music.albums.add_item_to_library( - album, skip_metadata_lookup=True + db_album = await self.mass.music.albums.get( + item_id=album.item_id, + provider_instance_id_or_domain=album.provider, + lazy=False, + details=album, + add_to_library=True, + skip_metadata_lookup=True, ) album_mapping = {"track_id": db_id, "album_id": int(db_album.item_id)} if db_row := await self.mass.music.database.get_row(DB_TABLE_ALBUM_TRACKS, album_mapping):