mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Bump Music Assistant client to 1.1.1 (#139331)
This commit is contained in:
parent
b676c2f61b
commit
bb9aba2a7d
@ -48,6 +48,7 @@ from .schemas import (
|
|||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from music_assistant_client import MusicAssistantClient
|
from music_assistant_client import MusicAssistantClient
|
||||||
|
from music_assistant_models.media_items import Album, Artist, Playlist, Radio, Track
|
||||||
|
|
||||||
from . import MusicAssistantConfigEntry
|
from . import MusicAssistantConfigEntry
|
||||||
|
|
||||||
@ -173,6 +174,9 @@ async def handle_get_library(call: ServiceCall) -> ServiceResponse:
|
|||||||
"offset": offset,
|
"offset": offset,
|
||||||
"order_by": order_by,
|
"order_by": order_by,
|
||||||
}
|
}
|
||||||
|
library_result: (
|
||||||
|
list[Album] | list[Artist] | list[Track] | list[Radio] | list[Playlist]
|
||||||
|
)
|
||||||
if media_type == MediaType.ALBUM:
|
if media_type == MediaType.ALBUM:
|
||||||
library_result = await mass.music.get_library_albums(
|
library_result = await mass.music.get_library_albums(
|
||||||
**base_params,
|
**base_params,
|
||||||
@ -181,7 +185,7 @@ async def handle_get_library(call: ServiceCall) -> ServiceResponse:
|
|||||||
elif media_type == MediaType.ARTIST:
|
elif media_type == MediaType.ARTIST:
|
||||||
library_result = await mass.music.get_library_artists(
|
library_result = await mass.music.get_library_artists(
|
||||||
**base_params,
|
**base_params,
|
||||||
album_artists_only=call.data.get(ATTR_ALBUM_ARTISTS_ONLY),
|
album_artists_only=bool(call.data.get(ATTR_ALBUM_ARTISTS_ONLY)),
|
||||||
)
|
)
|
||||||
elif media_type == MediaType.TRACK:
|
elif media_type == MediaType.TRACK:
|
||||||
library_result = await mass.music.get_library_tracks(
|
library_result = await mass.music.get_library_tracks(
|
||||||
|
@ -7,6 +7,6 @@
|
|||||||
"documentation": "https://www.home-assistant.io/integrations/music_assistant",
|
"documentation": "https://www.home-assistant.io/integrations/music_assistant",
|
||||||
"iot_class": "local_push",
|
"iot_class": "local_push",
|
||||||
"loggers": ["music_assistant"],
|
"loggers": ["music_assistant"],
|
||||||
"requirements": ["music-assistant-client==1.0.8"],
|
"requirements": ["music-assistant-client==1.1.1"],
|
||||||
"zeroconf": ["_mass._tcp.local."]
|
"zeroconf": ["_mass._tcp.local."]
|
||||||
}
|
}
|
||||||
|
@ -166,6 +166,8 @@ async def build_playlist_items_listing(
|
|||||||
) -> BrowseMedia:
|
) -> BrowseMedia:
|
||||||
"""Build Playlist items browse listing."""
|
"""Build Playlist items browse listing."""
|
||||||
playlist = await mass.music.get_item_by_uri(identifier)
|
playlist = await mass.music.get_item_by_uri(identifier)
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
assert playlist.uri is not None
|
||||||
|
|
||||||
return BrowseMedia(
|
return BrowseMedia(
|
||||||
media_class=MediaClass.PLAYLIST,
|
media_class=MediaClass.PLAYLIST,
|
||||||
@ -219,6 +221,9 @@ async def build_artist_items_listing(
|
|||||||
artist = await mass.music.get_item_by_uri(identifier)
|
artist = await mass.music.get_item_by_uri(identifier)
|
||||||
albums = await mass.music.get_artist_albums(artist.item_id, artist.provider)
|
albums = await mass.music.get_artist_albums(artist.item_id, artist.provider)
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
assert artist.uri is not None
|
||||||
|
|
||||||
return BrowseMedia(
|
return BrowseMedia(
|
||||||
media_class=MediaType.ARTIST,
|
media_class=MediaType.ARTIST,
|
||||||
media_content_id=artist.uri,
|
media_content_id=artist.uri,
|
||||||
@ -267,6 +272,9 @@ async def build_album_items_listing(
|
|||||||
album = await mass.music.get_item_by_uri(identifier)
|
album = await mass.music.get_item_by_uri(identifier)
|
||||||
tracks = await mass.music.get_album_tracks(album.item_id, album.provider)
|
tracks = await mass.music.get_album_tracks(album.item_id, album.provider)
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
assert album.uri is not None
|
||||||
|
|
||||||
return BrowseMedia(
|
return BrowseMedia(
|
||||||
media_class=MediaType.ALBUM,
|
media_class=MediaType.ALBUM,
|
||||||
media_content_id=album.uri,
|
media_content_id=album.uri,
|
||||||
@ -340,6 +348,9 @@ def build_item(
|
|||||||
title = item.name
|
title = item.name
|
||||||
img_url = mass.get_media_item_image_url(item)
|
img_url = mass.get_media_item_image_url(item)
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
assert item.uri is not None
|
||||||
|
|
||||||
return BrowseMedia(
|
return BrowseMedia(
|
||||||
media_class=media_class or item.media_type.value,
|
media_class=media_class or item.media_type.value,
|
||||||
media_content_id=item.uri,
|
media_content_id=item.uri,
|
||||||
|
@ -20,6 +20,7 @@ from music_assistant_models.enums import (
|
|||||||
from music_assistant_models.errors import MediaNotFoundError, MusicAssistantError
|
from music_assistant_models.errors import MediaNotFoundError, MusicAssistantError
|
||||||
from music_assistant_models.event import MassEvent
|
from music_assistant_models.event import MassEvent
|
||||||
from music_assistant_models.media_items import ItemMapping, MediaItemType, Track
|
from music_assistant_models.media_items import ItemMapping, MediaItemType, Track
|
||||||
|
from music_assistant_models.player_queue import PlayerQueue
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components import media_source
|
from homeassistant.components import media_source
|
||||||
@ -78,7 +79,6 @@ from .schemas import QUEUE_DETAILS_SCHEMA, queue_item_dict_from_mass_item
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from music_assistant_client import MusicAssistantClient
|
from music_assistant_client import MusicAssistantClient
|
||||||
from music_assistant_models.player import Player
|
from music_assistant_models.player import Player
|
||||||
from music_assistant_models.player_queue import PlayerQueue
|
|
||||||
|
|
||||||
SUPPORTED_FEATURES = (
|
SUPPORTED_FEATURES = (
|
||||||
MediaPlayerEntityFeature.PAUSE
|
MediaPlayerEntityFeature.PAUSE
|
||||||
@ -473,6 +473,8 @@ class MusicAssistantPlayer(MusicAssistantEntity, MediaPlayerEntity):
|
|||||||
album=album,
|
album=album,
|
||||||
media_type=MediaType(media_type) if media_type else None,
|
media_type=MediaType(media_type) if media_type else None,
|
||||||
):
|
):
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
assert item.uri is not None
|
||||||
media_uris.append(item.uri)
|
media_uris.append(item.uri)
|
||||||
|
|
||||||
if not media_uris:
|
if not media_uris:
|
||||||
|
@ -65,20 +65,20 @@ MEDIA_ITEM_SCHEMA = vol.Schema(
|
|||||||
|
|
||||||
def media_item_dict_from_mass_item(
|
def media_item_dict_from_mass_item(
|
||||||
mass: MusicAssistantClient,
|
mass: MusicAssistantClient,
|
||||||
item: MediaItemType | ItemMapping | None,
|
item: MediaItemType | ItemMapping,
|
||||||
) -> dict[str, Any] | None:
|
) -> dict[str, Any]:
|
||||||
"""Parse a Music Assistant MediaItem."""
|
"""Parse a Music Assistant MediaItem."""
|
||||||
if not item:
|
base: dict[str, Any] = {
|
||||||
return None
|
|
||||||
base = {
|
|
||||||
ATTR_MEDIA_TYPE: item.media_type,
|
ATTR_MEDIA_TYPE: item.media_type,
|
||||||
ATTR_URI: item.uri,
|
ATTR_URI: item.uri,
|
||||||
ATTR_NAME: item.name,
|
ATTR_NAME: item.name,
|
||||||
ATTR_VERSION: item.version,
|
ATTR_VERSION: item.version,
|
||||||
ATTR_IMAGE: mass.get_media_item_image_url(item),
|
ATTR_IMAGE: mass.get_media_item_image_url(item),
|
||||||
}
|
}
|
||||||
|
artists: list[ItemMapping] | None
|
||||||
if artists := getattr(item, "artists", None):
|
if artists := getattr(item, "artists", None):
|
||||||
base[ATTR_ARTISTS] = [media_item_dict_from_mass_item(mass, x) for x in artists]
|
base[ATTR_ARTISTS] = [media_item_dict_from_mass_item(mass, x) for x in artists]
|
||||||
|
album: ItemMapping | None
|
||||||
if album := getattr(item, "album", None):
|
if album := getattr(item, "album", None):
|
||||||
base[ATTR_ALBUM] = media_item_dict_from_mass_item(mass, album)
|
base[ATTR_ALBUM] = media_item_dict_from_mass_item(mass, album)
|
||||||
return base
|
return base
|
||||||
@ -151,7 +151,11 @@ def queue_item_dict_from_mass_item(
|
|||||||
ATTR_QUEUE_ITEM_ID: item.queue_item_id,
|
ATTR_QUEUE_ITEM_ID: item.queue_item_id,
|
||||||
ATTR_NAME: item.name,
|
ATTR_NAME: item.name,
|
||||||
ATTR_DURATION: item.duration,
|
ATTR_DURATION: item.duration,
|
||||||
ATTR_MEDIA_ITEM: media_item_dict_from_mass_item(mass, item.media_item),
|
ATTR_MEDIA_ITEM: (
|
||||||
|
media_item_dict_from_mass_item(mass, item.media_item)
|
||||||
|
if item.media_item
|
||||||
|
else None
|
||||||
|
),
|
||||||
}
|
}
|
||||||
if streamdetails := item.streamdetails:
|
if streamdetails := item.streamdetails:
|
||||||
base[ATTR_STREAM_TITLE] = streamdetails.stream_title
|
base[ATTR_STREAM_TITLE] = streamdetails.stream_title
|
||||||
|
2
requirements_all.txt
generated
2
requirements_all.txt
generated
@ -1447,7 +1447,7 @@ mozart-api==4.1.1.116.4
|
|||||||
mullvad-api==1.0.0
|
mullvad-api==1.0.0
|
||||||
|
|
||||||
# homeassistant.components.music_assistant
|
# homeassistant.components.music_assistant
|
||||||
music-assistant-client==1.0.8
|
music-assistant-client==1.1.1
|
||||||
|
|
||||||
# homeassistant.components.tts
|
# homeassistant.components.tts
|
||||||
mutagen==1.47.0
|
mutagen==1.47.0
|
||||||
|
2
requirements_test_all.txt
generated
2
requirements_test_all.txt
generated
@ -1219,7 +1219,7 @@ mozart-api==4.1.1.116.4
|
|||||||
mullvad-api==1.0.0
|
mullvad-api==1.0.0
|
||||||
|
|
||||||
# homeassistant.components.music_assistant
|
# homeassistant.components.music_assistant
|
||||||
music-assistant-client==1.0.8
|
music-assistant-client==1.1.1
|
||||||
|
|
||||||
# homeassistant.components.tts
|
# homeassistant.components.tts
|
||||||
mutagen==1.47.0
|
mutagen==1.47.0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user