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(
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 = [
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":
# 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()
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(
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:
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
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
"""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):