},
)
item_id = new_item["item_id"]
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, item.provider_mappings)
- self.logger.debug("added %s to database", item.name)
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, item.provider_mappings)
+ self.logger.debug("added %s to database", item.name)
# return created object
return await self.get_db_item(item_id)
else:
album_type = cur_item.album_type
sort_artist = album_artists[0].sort_name if album_artists else ""
-
- await self.mass.music.database.update(
- self.db_table,
- {"item_id": item_id},
- {
- "name": item.name if overwrite else cur_item.name,
- "sort_name": item.sort_name if overwrite else cur_item.sort_name,
- "sort_artist": sort_artist,
- "version": item.version if overwrite else cur_item.version,
- "year": item.year if overwrite else cur_item.year or item.year,
- "barcode": ";".join(cur_item.barcode),
- "album_type": album_type.value,
- "artists": serialize_to_json(album_artists) or None,
- "metadata": serialize_to_json(metadata),
- "provider_mappings": serialize_to_json(provider_mappings),
- "musicbrainz_id": item.musicbrainz_id or cur_item.musicbrainz_id,
- "timestamp_modified": int(utc_timestamp()),
- },
- )
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, provider_mappings)
- self.logger.debug("updated %s in database: %s", item.name, item_id)
+ async with self._db_add_lock:
+ await self.mass.music.database.update(
+ self.db_table,
+ {"item_id": item_id},
+ {
+ "name": item.name if overwrite else cur_item.name,
+ "sort_name": item.sort_name if overwrite else cur_item.sort_name,
+ "sort_artist": sort_artist,
+ "version": item.version if overwrite else cur_item.version,
+ "year": item.year if overwrite else cur_item.year or item.year,
+ "barcode": ";".join(cur_item.barcode),
+ "album_type": album_type.value,
+ "artists": serialize_to_json(album_artists) or None,
+ "metadata": serialize_to_json(metadata),
+ "provider_mappings": serialize_to_json(provider_mappings),
+ "musicbrainz_id": item.musicbrainz_id or cur_item.musicbrainz_id,
+ "timestamp_modified": int(utc_timestamp()),
+ },
+ )
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, provider_mappings)
+ self.logger.debug("updated %s in database: %s", item.name, item_id)
return await self.get_db_item(item_id)
async def _get_provider_album_tracks(
async with self._db_add_lock:
new_item = await self.mass.music.database.insert(self.db_table, item.to_db_row())
item_id = new_item["item_id"]
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, item.provider_mappings)
- self.logger.debug("added %s to database", item.name)
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, item.provider_mappings)
+ self.logger.debug("added %s to database", item.name)
# return created object
return await self.get_db_item(item_id)
item.musicbrainz_id = VARIOUS_ARTISTS_ID
if item.musicbrainz_id == VARIOUS_ARTISTS_ID:
item.name = VARIOUS_ARTISTS
-
- await self.mass.music.database.update(
- self.db_table,
- {"item_id": item_id},
- {
- "name": item.name if overwrite else cur_item.name,
- "sort_name": item.sort_name if overwrite else cur_item.sort_name,
- "musicbrainz_id": musicbrainz_id,
- "metadata": serialize_to_json(metadata),
- "provider_mappings": serialize_to_json(provider_mappings),
- "timestamp_modified": int(utc_timestamp()),
- },
- )
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, provider_mappings)
- self.logger.debug("updated %s in database: %s", item.name, item_id)
+ async with self._db_add_lock:
+ await self.mass.music.database.update(
+ self.db_table,
+ {"item_id": item_id},
+ {
+ "name": item.name if overwrite else cur_item.name,
+ "sort_name": item.sort_name if overwrite else cur_item.sort_name,
+ "musicbrainz_id": musicbrainz_id,
+ "metadata": serialize_to_json(metadata),
+ "provider_mappings": serialize_to_json(provider_mappings),
+ "timestamp_modified": int(utc_timestamp()),
+ },
+ )
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, provider_mappings)
+ self.logger.debug("updated %s in database: %s", item.name, item_id)
return await self.get_db_item(item_id)
async def _get_provider_dynamic_tracks(
async with self._db_add_lock:
new_item = await self.mass.music.database.insert(self.db_table, item.to_db_row())
item_id = new_item["item_id"]
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, item.provider_mappings)
- self.logger.debug("added %s to database", item.name)
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, item.provider_mappings)
+ self.logger.debug("added %s to database", item.name)
# return created object
return await self.get_db_item(item_id)
cur_item = await self.get_db_item(item_id)
metadata = cur_item.metadata.update(getattr(item, "metadata", None), overwrite)
provider_mappings = self._get_provider_mappings(cur_item, item, overwrite)
- await self.mass.music.database.update(
- self.db_table,
- {"item_id": item_id},
- {
- # always prefer name/owner from updated item here
- "name": item.name or cur_item.name,
- "sort_name": item.sort_name or cur_item.sort_name,
- "owner": item.owner or cur_item.sort_name,
- "is_editable": item.is_editable,
- "metadata": serialize_to_json(metadata),
- "provider_mappings": serialize_to_json(provider_mappings),
- "timestamp_modified": int(utc_timestamp()),
- },
- )
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, provider_mappings)
- self.logger.debug("updated %s in database: %s", item.name, item_id)
+ async with self._db_add_lock:
+ await self.mass.music.database.update(
+ self.db_table,
+ {"item_id": item_id},
+ {
+ # always prefer name/owner from updated item here
+ "name": item.name or cur_item.name,
+ "sort_name": item.sort_name or cur_item.sort_name,
+ "owner": item.owner or cur_item.sort_name,
+ "is_editable": item.is_editable,
+ "metadata": serialize_to_json(metadata),
+ "provider_mappings": serialize_to_json(provider_mappings),
+ "timestamp_modified": int(utc_timestamp()),
+ },
+ )
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, provider_mappings)
+ self.logger.debug("updated %s in database: %s", item.name, item_id)
return await self.get_db_item(item_id)
async def _get_provider_playlist_tracks(
async with self._db_add_lock:
new_item = await self.mass.music.database.insert(self.db_table, item.to_db_row())
item_id = new_item["item_id"]
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, item.provider_mappings)
- self.logger.debug("added %s to database", item.name)
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, item.provider_mappings)
+ self.logger.debug("added %s to database", item.name)
# return created object
return await self.get_db_item(item_id)
metadata = cur_item.metadata.update(getattr(item, "metadata", None), overwrite)
provider_mappings = self._get_provider_mappings(cur_item, item, overwrite)
match = {"item_id": item_id}
- await self.mass.music.database.update(
- self.db_table,
- match,
- {
- # always prefer name from updated item here
- "name": item.name or cur_item.name,
- "sort_name": item.sort_name or cur_item.sort_name,
- "metadata": serialize_to_json(metadata),
- "provider_mappings": serialize_to_json(provider_mappings),
- "timestamp_modified": int(utc_timestamp()),
- },
- )
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, provider_mappings)
- self.logger.debug("updated %s in database: %s", item.name, item_id)
+ async with self._db_add_lock:
+ await self.mass.music.database.update(
+ self.db_table,
+ match,
+ {
+ # always prefer name from updated item here
+ "name": item.name or cur_item.name,
+ "sort_name": item.sort_name or cur_item.sort_name,
+ "metadata": serialize_to_json(metadata),
+ "provider_mappings": serialize_to_json(provider_mappings),
+ "timestamp_modified": int(utc_timestamp()),
+ },
+ )
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, provider_mappings)
+ self.logger.debug("updated %s in database: %s", item.name, item_id)
return await self.get_db_item(item_id)
async def _get_provider_dynamic_tracks(
},
)
item_id = new_item["item_id"]
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, item.provider_mappings)
- # return created object
- self.logger.debug("added %s to database: %s", item.name, item_id)
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, item.provider_mappings)
+ # return created object
+ self.logger.debug("added %s to database: %s", item.name, item_id)
return await self.get_db_item(item_id)
async def _update_db_item(
cur_item.isrc.update(item.isrc)
track_artists = await self._get_artist_mappings(cur_item, item)
track_albums = await self._get_track_albums(cur_item, item)
- await self.mass.music.database.update(
- self.db_table,
- {"item_id": item_id},
- {
- "name": item.name or cur_item.name,
- "sort_name": item.sort_name or cur_item.sort_name,
- "version": item.version or cur_item.version,
- "duration": getattr(item, "duration", None) or cur_item.duration,
- "artists": serialize_to_json(track_artists),
- "albums": serialize_to_json(track_albums),
- "metadata": serialize_to_json(metadata),
- "provider_mappings": serialize_to_json(provider_mappings),
- "isrc": ";".join(cur_item.isrc),
- "timestamp_modified": int(utc_timestamp()),
- },
- )
- # update/set provider_mappings table
- await self._set_provider_mappings(item_id, provider_mappings)
- self.logger.debug("updated %s in database: %s", item.name, item_id)
+ async with self._db_add_lock:
+ await self.mass.music.database.update(
+ self.db_table,
+ {"item_id": item_id},
+ {
+ "name": item.name or cur_item.name,
+ "sort_name": item.sort_name or cur_item.sort_name,
+ "version": item.version or cur_item.version,
+ "duration": getattr(item, "duration", None) or cur_item.duration,
+ "artists": serialize_to_json(track_artists),
+ "albums": serialize_to_json(track_albums),
+ "metadata": serialize_to_json(metadata),
+ "provider_mappings": serialize_to_json(provider_mappings),
+ "isrc": ";".join(cur_item.isrc),
+ "timestamp_modified": int(utc_timestamp()),
+ },
+ )
+ # update/set provider_mappings table
+ await self._set_provider_mappings(item_id, provider_mappings)
+ self.logger.debug("updated %s in database: %s", item.name, item_id)
return await self.get_db_item(item_id)
async def _get_track_albums(