custom_components/mass_queue/controller.py, custom_components/mass_queue/utils.py

This commit is contained in:
Home Assistant Version Control
2026-08-28 13:58:36 +00:00
parent 78466fe5c8
commit 2b6054ac4b
2 changed files with 33 additions and 14 deletions
+30 -13
View File
@@ -145,23 +145,40 @@ class MassQueueController:
data = data or {} data = data or {}
return await self._client.send_command(command, require_schema=None, **data) return await self._client.send_command(command, require_schema=None, **data)
async def get_recommendation_items(self, provider: str, item_id: str):
"""Return all recommendation items for a recommendation section."""
return await self._client.send_command(
"music/recommendations/items",
provider=provider,
item_id=item_id,
)
async def get_recommendations(self, providers: list | None = None): async def get_recommendations(self, providers: list | None = None):
"""Pulls all recommendations.""" """Pulls all recommendations."""
recs = await self._client.music.recommendations() recs = await self._client.music.recommendations()
if not providers: if providers:
return recs rec_providers = []
rec_providers = [] for rec in recs:
for rec in recs: if rec.provider not in rec_providers:
if rec.provider not in rec_providers: rec_providers.append(rec.provider)
rec_providers.append(rec.provider)
used_rec_providers = [ used_rec_providers = [
rec_provider rec_provider
for rec_provider in rec_providers for rec_provider in rec_providers
for provider in providers for provider in providers
if rec_provider.startswith(provider) if rec_provider.startswith(provider)
] ]
return [rec for rec in recs if rec.provider in used_rec_providers] filtered_recommendations = [rec for rec in recs if rec.provider in used_rec_providers]
else:
filtered_recommendations = recs
msg = f"Filtered recommendations: {filtered_recommendations}"
LOGGER.debug(msg)
result = []
for rec in filtered_recommendations:
_rec = rec.to_dict()
_rec["items"] = await self.get_recommendation_items(rec.provider, rec.item_id)
result.append(_rec)
return result
async def get_grouped_volume(self, player_id: str): async def get_grouped_volume(self, player_id: str):
"""Get the grouped volume for a given player.""" """Get the grouped volume for a given player."""
+3 -1
View File
@@ -241,7 +241,6 @@ def process_recommendation_section_items(items: list):
def process_recommendation_section(section): def process_recommendation_section(section):
"""Process and reformat a single recommendation section.""" """Process and reformat a single recommendation section."""
LOGGER.debug(f"Got section: {section}") LOGGER.debug(f"Got section: {section}")
section = section.to_dict()
return { return {
"item_id": section["item_id"], "item_id": section["item_id"],
"provider": section["provider"], "provider": section["provider"],
@@ -323,6 +322,9 @@ def get_entity_info(hass: HomeAssistant, entity_id: str):
player_id = [_id[1] for _id in identifiers if _id[0] == "music_assistant"][0] player_id = [_id[1] for _id in identifiers if _id[0] == "music_assistant"][0]
player = client.players.get(player_id) player = client.players.get(player_id)
if not player:
msg = f"Entity {entity_id} is not available yet."
raise ServiceValidationError(msg)
mass_entry_id = _get_mass_entity_config_entry_id(hass, entity_id) mass_entry_id = _get_mass_entity_config_entry_id(hass, entity_id)
mass_queue_id = get_mass_queue_entry(hass, entity_id).entry_id mass_queue_id = get_mass_queue_entry(hass, entity_id).entry_id