return None
return next((x for x in self.metadata.images if x.type == ImageType.THUMB), None)
- @classmethod
- def from_item_mapping(cls: type, item: ItemMapping) -> Self:
- """Instantiate MediaItem from ItemMapping."""
- # NOTE: This will not work for albums and tracks!
- return cls.from_dict(
- {
- **item.to_dict(),
- "provider_mappings": [
- {
- "item_id": item.item_id,
- "provider_domain": item.provider,
- "provider_instance": item.provider,
- "available": item.available,
- }
- ],
- }
- )
-
@dataclass(kw_only=True)
class ItemMapping(_MediaItemBase):
async def _add_library_item(self, item: Artist | ItemMapping) -> int:
"""Add a new item record to the database."""
if isinstance(item, ItemMapping):
- item = Artist.from_item_mapping(item)
+ item = self._artist_from_item_mapping(item)
# enforce various artists name + id
if compare_strings(item.name, VARIOUS_ARTISTS_NAME):
item.mbid = VARIOUS_ARTISTS_ID_MBID
await self._update_library_item(db_artist.item_id, prov_artist)
return True
return False
+
+ def _artist_from_item_mapping(self, item: ItemMapping) -> Artist:
+ domain, instance_id = None, None
+ if prov := self.mass.get_provider(item.provider):
+ domain = prov.domain
+ instance_id = prov.instance_id
+ return Artist.from_dict(
+ {
+ **item.to_dict(),
+ "provider_mappings": [
+ {
+ "item_id": item.item_id,
+ "provider_domain": domain,
+ "provider_instance": instance_id,
+ "available": item.available,
+ }
+ ],
+ }
+ )