Fix: ignore invalid group members in hass player attributes
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 27 Mar 2025 20:27:10 +0000 (21:27 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 27 Mar 2025 20:27:10 +0000 (21:27 +0100)
music_assistant/providers/hass_players/__init__.py

index a887eba93eb871f62f534bda766affd03dc11bd4..0c9e4c8d07953eaf58ca1fadf62904a7db3690da 100644 (file)
@@ -577,12 +577,25 @@ class HomeAssistantPlayers(PlayerProvider):
             if key == "media_content_id":
                 player.current_item_id = value
             if key == "group_members":
-                if value and value[0] == player.player_id:
-                    player.group_childs.set(value)
+                group_members: list[str] = (
+                    [
+                        # ignore integrations that incorrectly set the group members attribute
+                        # (e.g. linkplay)
+                        x
+                        for x in value
+                        if x.startswith("media_player.")
+                    ]
+                    if value
+                    else []
+                )
+                if group_members and group_members[0] == player.player_id:
+                    # first in the list is the group leader
+                    player.group_childs.set(group_members)
                     player.synced_to = None
-                elif value and value[0] != player.player_id:
+                elif group_members and group_members[0] != player.player_id:
+                    # this player is not the group leader
                     player.group_childs.clear()
-                    player.synced_to = value[0]
+                    player.synced_to = group_members[0]
                 else:
                     player.group_childs.clear()
                     player.synced_to = None