Bump Music Assistant Client to 1.2.3 (#147885)

This commit is contained in:
Marcel van der Veldt 2025-07-01 20:26:26 +02:00 committed by Franck Nijhof
parent 01e7efc7b4
commit 3ed440a3af
No known key found for this signature in database
GPG Key ID: AB33ADACE7101952
9 changed files with 22 additions and 30 deletions

View File

@ -34,7 +34,7 @@ class MusicAssistantEntity(Entity):
identifiers={(DOMAIN, player_id)},
manufacturer=self.player.device_info.manufacturer or provider.name,
model=self.player.device_info.model or self.player.name,
name=self.player.display_name,
name=self.player.name,
configuration_url=f"{mass.server_url}/#/settings/editplayer/{player_id}",
)

View File

@ -7,6 +7,6 @@
"documentation": "https://www.home-assistant.io/integrations/music_assistant",
"iot_class": "local_push",
"loggers": ["music_assistant"],
"requirements": ["music-assistant-client==1.2.0"],
"requirements": ["music-assistant-client==1.2.3"],
"zeroconf": ["_mass._tcp.local."]
}

View File

@ -6,11 +6,7 @@ import logging
from typing import TYPE_CHECKING, Any, cast
from music_assistant_models.enums import MediaType as MASSMediaType
from music_assistant_models.media_items import (
BrowseFolder,
MediaItemType,
SearchResults,
)
from music_assistant_models.media_items import MediaItemType, SearchResults
from homeassistant.components import media_source
from homeassistant.components.media_player import (
@ -549,8 +545,6 @@ def _process_search_results(
# Add available items to results
for item in items:
if TYPE_CHECKING:
assert not isinstance(item, BrowseFolder)
if not item.available:
continue

View File

@ -250,8 +250,8 @@ class MusicAssistantPlayer(MusicAssistantEntity, MediaPlayerEntity):
# update generic attributes
if player.powered and active_queue is not None:
self._attr_state = MediaPlayerState(active_queue.state.value)
if player.powered and player.state is not None:
self._attr_state = MediaPlayerState(player.state.value)
if player.powered and player.playback_state is not None:
self._attr_state = MediaPlayerState(player.playback_state.value)
else:
self._attr_state = MediaPlayerState(STATE_OFF)
# active source and source list (translate to HA source names)
@ -270,12 +270,12 @@ class MusicAssistantPlayer(MusicAssistantEntity, MediaPlayerEntity):
self._attr_source = active_source_name
group_members: list[str] = []
if player.group_childs:
group_members = player.group_childs
if player.group_members:
group_members = player.group_members
elif player.synced_to and (parent := self.mass.players.get(player.synced_to)):
group_members = parent.group_childs
group_members = parent.group_members
# translate MA group_childs to HA group_members as entity id's
# translate MA group_members to HA group_members as entity id's
entity_registry = er.async_get(self.hass)
group_members_entity_ids: list[str] = [
entity_id

2
requirements_all.txt generated
View File

@ -1467,7 +1467,7 @@ mozart-api==4.1.1.116.4
mullvad-api==1.0.0
# homeassistant.components.music_assistant
music-assistant-client==1.2.0
music-assistant-client==1.2.3
# homeassistant.components.tts
mutagen==1.47.0

View File

@ -1259,7 +1259,7 @@ mozart-api==4.1.1.116.4
mullvad-api==1.0.0
# homeassistant.components.music_assistant
music-assistant-client==1.2.0
music-assistant-client==1.2.3
# homeassistant.components.tts
mutagen==1.47.0

View File

@ -53,6 +53,7 @@ async def music_assistant_client_fixture() -> AsyncGenerator[MagicMock]:
client.connect = AsyncMock(side_effect=connect)
client.start_listening = AsyncMock(side_effect=listen)
client.send_command = AsyncMock(return_value=None)
client.server_info = ServerInfoMessage(
server_id=MOCK_SERVER_ID,
server_version="0.0.0",

View File

@ -4,7 +4,6 @@
"player_id": "00:00:00:00:00:01",
"provider": "test",
"type": "player",
"name": "Test Player 1",
"available": true,
"powered": false,
"device_info": {
@ -23,10 +22,10 @@
],
"elapsed_time": null,
"elapsed_time_last_updated": 0,
"state": "idle",
"playback_state": "idle",
"volume_level": 20,
"volume_muted": false,
"group_childs": [],
"group_members": [],
"active_source": "00:00:00:00:00:01",
"active_group": null,
"current_media": null,
@ -37,7 +36,7 @@
"enabled": true,
"icon": "mdi-speaker",
"group_volume": 20,
"display_name": "Test Player 1",
"name": "Test Player 1",
"power_control": "native",
"volume_control": "native",
"mute_control": "native",
@ -75,7 +74,6 @@
"player_id": "00:00:00:00:00:02",
"provider": "test",
"type": "player",
"name": "Test Player 2",
"available": true,
"powered": true,
"device_info": {
@ -93,10 +91,10 @@
],
"elapsed_time": 0,
"elapsed_time_last_updated": 0,
"state": "playing",
"playback_state": "playing",
"volume_level": 20,
"volume_muted": false,
"group_childs": [],
"group_members": [],
"active_source": "spotify",
"active_group": null,
"current_media": {
@ -117,7 +115,7 @@
"hidden": false,
"icon": "mdi-speaker",
"group_volume": 20,
"display_name": "My Super Test Player 2",
"name": "My Super Test Player 2",
"power_control": "native",
"volume_control": "native",
"mute_control": "native",
@ -139,7 +137,6 @@
"player_id": "test_group_player_1",
"provider": "player_group",
"type": "group",
"name": "Test Group Player 1",
"available": true,
"powered": true,
"device_info": {
@ -157,10 +154,10 @@
],
"elapsed_time": 0.0,
"elapsed_time_last_updated": 1730315437.9904983,
"state": "idle",
"playback_state": "idle",
"volume_level": 6,
"volume_muted": false,
"group_childs": ["00:00:00:00:00:01", "00:00:00:00:00:02"],
"group_members": ["00:00:00:00:00:01", "00:00:00:00:00:02"],
"active_source": "test_group_player_1",
"active_group": null,
"current_media": {
@ -180,7 +177,7 @@
"enabled": true,
"icon": "mdi-speaker-multiple",
"group_volume": 6,
"display_name": "Test Group Player 1",
"name": "Test Group Player 1",
"power_control": "native",
"volume_control": "native",
"mute_control": "native",

View File

@ -75,7 +75,7 @@ async def test_button_press_action(
await trigger_subscription_callback(
hass, music_assistant_client, EventType.PLAYER_CONFIG_UPDATED, mass_player_id
)
with pytest.raises(HomeAssistantError, match="Player has no active source"):
with pytest.raises(HomeAssistantError, match="No current item to add to favorites"):
await hass.services.async_call(
BUTTON_DOMAIN,
SERVICE_PRESS,