From 27794d95d79561d1c33325d876160c4de1400054 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Thu, 18 Dec 2025 20:58:03 -0500 Subject: [PATCH 1/3] Get MA integration by unique ID instead of URL --- custom_components/mass_queue/utils.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/custom_components/mass_queue/utils.py b/custom_components/mass_queue/utils.py index ed5a390..b42c07d 100644 --- a/custom_components/mass_queue/utils.py +++ b/custom_components/mass_queue/utils.py @@ -41,8 +41,8 @@ def _get_config_entry( def get_mass_queue_entry(hass, entity_id): """Gets the actions for the selected entity.""" mass_entry = get_mass_entry(hass, entity_id) - mass = mass_entry.runtime_data.mass.connection.ws_server_url - return find_mass_queue_entry(hass, mass) + unique_id = mass_entry.unique_id + return find_mass_queue_entry_from_unique_id(hass, unique_id) def get_entity_actions_controller(hass, entity_id): @@ -69,14 +69,13 @@ def _get_mass_entity_config_entry_id(hass, entity_id): return registry.async_get(entity_id).config_entry_id -def find_mass_queue_entry(hass, mass_url): +def find_mass_queue_entry_from_unique_id(hass: HomeAssistant, unique_id: str): """Finds the mass_queue entry for the given MA URL.""" entries = _get_mass_queue_entries(hass) for entry in entries: - entry_url = entry.runtime_data.mass.connection.ws_server_url - if entry_url == mass_url: + if entry.unique_id == unique_id: return entry - msg = f"Cannot find entry for Music Assistant at {mass_url}" + msg = f"Cannot find entry for Music Assistant with unique ID {unique_id}" raise ServiceValidationError(msg) From c58fae2319bed4701ac7133fa4af85969938d995 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 19 Dec 2025 13:06:23 -0500 Subject: [PATCH 2/3] Fix: Recommendations broken with MA v2.7.0+ --- custom_components/mass_queue/controller.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/custom_components/mass_queue/controller.py b/custom_components/mass_queue/controller.py index d4d5fec..f4250b4 100644 --- a/custom_components/mass_queue/controller.py +++ b/custom_components/mass_queue/controller.py @@ -149,7 +149,18 @@ async def get_recommendations(self, providers: list | None = None): recs = await self._client.music.recommendations() if not providers: return recs - return [rec for rec in recs if rec.provider in providers] + rec_providers = [] + for rec in recs: + if rec.provider not in rec_providers: + rec_providers.append(rec.provider) + + used_rec_providers = [ + rec_provider + for rec_provider in rec_providers + for provider in providers + if rec_provider.startswith(provider) + ] + return [rec for rec in recs if rec.provider in used_rec_providers] async def get_grouped_volume(self, player_id: str): """Get the grouped volume for a given player.""" From a6284c843603085847cbac7ea607ce11e9c340de Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Sat, 20 Dec 2025 11:47:59 -0500 Subject: [PATCH 3/3] Version bump --- custom_components/mass_queue/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/mass_queue/manifest.json b/custom_components/mass_queue/manifest.json index de31fdd..18e2904 100644 --- a/custom_components/mass_queue/manifest.json +++ b/custom_components/mass_queue/manifest.json @@ -11,6 +11,6 @@ "issue_tracker": "https://github.com/droans/mass_queue/issues", "requirements": ["music-assistant-client"], "ssdp": [], - "version": "0.9.1", + "version": "0.9.2", "zeroconf": ["_mass._tcp.local."] }