def item_payload(item: dict[str, Any], *, can_play_artist: bool) -> BrowseMedia: """ Create response payload for a single media item. Used by async_browse_media. """ try: media_type = item["type"] media_id = item["uri"] except KeyError as err: _LOGGER.debug("Missing type or URI for media item: %s", item) raise MissingMediaInformation from err try: media_class = CONTENT_TYPE_MEDIA_CLASS[media_type] except KeyError as err: _LOGGER.debug("Unknown media type received: %s", media_type) raise UnknownMediaType from err can_expand = media_type not in [ MEDIA_TYPE_TRACK, MEDIA_TYPE_EPISODE, ] can_play = media_type in PLAYABLE_MEDIA_TYPES and ( media_type != MEDIA_TYPE_ARTIST or can_play_artist) browse_media = BrowseMedia( can_expand=can_expand, can_play=can_play, children_media_class=media_class["children"], media_class=media_class["parent"], media_content_id=media_id, media_content_type=f"{MEDIA_PLAYER_PREFIX}{media_type}", title=item.get("name", "Unknown"), ) if "images" in item: browse_media.thumbnail = fetch_image_url(item) elif MEDIA_TYPE_ALBUM in item: browse_media.thumbnail = fetch_image_url(item[MEDIA_TYPE_ALBUM]) return browse_media
media_content_id=media_content_id, media_content_type=f"{MEDIA_PLAYER_PREFIX}{media_content_type}", thumbnail=image, title=title, ) browse_media.children = [] for item in items: try: browse_media.children.append( item_payload(item, can_play_artist=can_play_artist)) except (MissingMediaInformation, UnknownMediaType): continue if "images" in media: browse_media.thumbnail = fetch_image_url(media) return browse_media def item_payload(item: dict[str, Any], *, can_play_artist: bool) -> BrowseMedia: """ Create response payload for a single media item. Used by async_browse_media. """ try: media_type = item["type"] media_id = item["uri"] except KeyError as err: