From 75c76258e960f5e28ce57032bb929066e725b61d Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Sun, 24 Apr 2022 01:53:47 +0200 Subject: [PATCH] Fix errors while updating existing items (#264) * fix errors when existing records are updated * fix typo * fix keyerror in tunein provider --- music_assistant/controllers/music/albums.py | 12 ++++++++---- music_assistant/controllers/music/artists.py | 4 +++- music_assistant/controllers/music/radio.py | 1 - music_assistant/controllers/music/tracks.py | 8 ++++++-- music_assistant/providers/tunein.py | 2 +- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/music_assistant/controllers/music/albums.py b/music_assistant/controllers/music/albums.py index 06363c1e..8b865a2f 100644 --- a/music_assistant/controllers/music/albums.py +++ b/music_assistant/controllers/music/albums.py @@ -178,7 +178,7 @@ class AlbumsController(MediaControllerBase[Album]): or cur_item.artist ) - if cur_item.album_type == AlbumType.UNKNOWN: + if album.album_type != AlbumType.UNKNOWN: album_type = album.album_type else: album_type = cur_item.album_type @@ -187,9 +187,13 @@ class AlbumsController(MediaControllerBase[Album]): self.db_table, {"item_id": item_id}, { - **album.to_db_row(), - "artist": json_serializer(album_artist), + "name": album.name if overwrite else cur_item.name, + "sort_name": album.sort_name if overwrite else cur_item.sort_name, + "version": album.version if overwrite else cur_item.version, + "year": album.year or cur_item.year, + "upc": album.upc or cur_item.upc, "album_type": album_type.value, + "artist": json_serializer(album_artist), "metadata": json_serializer(metadata), "provider_ids": json_serializer(provider_ids), }, @@ -260,7 +264,7 @@ class AlbumsController(MediaControllerBase[Album]): prov_artist = await self.mass.music.artists.get_provider_item( prov_album.artist.item_id, prov_album.artist.provider ) - await self.mass.music.artists.update_db_artist( + await self.mass.music.artists.update_db_item( db_album.artist.item_id, prov_artist ) diff --git a/music_assistant/controllers/music/artists.py b/music_assistant/controllers/music/artists.py index 6231a56c..5df58d24 100644 --- a/music_assistant/controllers/music/artists.py +++ b/music_assistant/controllers/music/artists.py @@ -185,7 +185,9 @@ class ArtistsController(MediaControllerBase[Artist]): self.db_table, {"item_id": item_id}, { - **artist.to_db_row(), + "name": artist.name if overwrite else cur_item.name, + "sort_name": artist.sort_name if overwrite else cur_item.sort_name, + "musicbrainz_id": artist.musicbrainz_id or cur_item.musicbrainz_id, "metadata": json_serializer(metadata), "provider_ids": json_serializer(provider_ids), }, diff --git a/music_assistant/controllers/music/radio.py b/music_assistant/controllers/music/radio.py index ac1bd7f9..a1aebf96 100644 --- a/music_assistant/controllers/music/radio.py +++ b/music_assistant/controllers/music/radio.py @@ -84,7 +84,6 @@ class RadioController(MediaControllerBase[Radio]): self.db_table, match, { - **radio.to_db_row(), "name": radio.name, "sort_name": radio.sort_name, "metadata": json_serializer(metadata), diff --git a/music_assistant/controllers/music/tracks.py b/music_assistant/controllers/music/tracks.py index 06b8fa31..cb859c8d 100644 --- a/music_assistant/controllers/music/tracks.py +++ b/music_assistant/controllers/music/tracks.py @@ -187,9 +187,11 @@ class TracksController(MediaControllerBase[Track]): if overwrite: metadata = track.metadata provider_ids = track.provider_ids + track_artists = track.artists else: metadata = merge_dict(cur_item.metadata, track.metadata) provider_ids = {*cur_item.provider_ids, *track.provider_ids} + track_artists = await self._get_track_artists(track, cur_item.artists) # we store a mapping to artists on the track for easier access/listings track_artists = await self._get_track_artists(track, cur_item.artists) @@ -197,12 +199,14 @@ class TracksController(MediaControllerBase[Track]): self.db_table, {"item_id": item_id}, { - **track.to_db_row(), + "name": track.name if overwrite else cur_item.name, + "sort_name": track.sort_name if overwrite else cur_item.sort_name, + "version": track.version if overwrite else cur_item.version, + "duration": track.duration if overwrite else cur_item.duration, "artists": json_serializer(track_artists), "metadata": json_serializer(metadata), "provider_ids": json_serializer(provider_ids), "isrc": track.isrc or cur_item.isrc, - "duration": track.duration or cur_item.duration, }, ) await self.mass.music.set_provider_mappings( diff --git a/music_assistant/providers/tunein.py b/music_assistant/providers/tunein.py index 013148d5..ac97e00f 100644 --- a/music_assistant/providers/tunein.py +++ b/music_assistant/providers/tunein.py @@ -55,7 +55,7 @@ class TuneInProvider(MusicProvider): return [ await self._parse_radio(item) for item in result["body"] - if item["type"] == "audio" + if item.get("type", "") == "audio" ] return [] -- 2.34.1