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
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),
},
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
)
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),
},
self.db_table,
match,
{
- **radio.to_db_row(),
"name": radio.name,
"sort_name": radio.sort_name,
"metadata": json_serializer(metadata),
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)
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(
return [
await self._parse_radio(item)
for item in result["body"]
- if item["type"] == "audio"
+ if item.get("type", "") == "audio"
]
return []