From 276c1242dd57a59f137e2bbf8a037187c6d1d40a Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Thu, 27 Aug 2026 14:29:15 -0400 Subject: [PATCH 1/2] Update prek, ruff --- .pre-commit-config.yaml | 4 ---- .ruff.toml | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1321a48..f4c30b6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,3 @@ repos: hooks: - id: ruff args: ["--fix"] - - repo: https://github.com/psf/black - rev: 25.1.0 - hooks: - - id: black diff --git a/.ruff.toml b/.ruff.toml index 5b7d786..0572861 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -9,6 +9,7 @@ select = ["ALL"] ignore = [ "ANN", "ANN401", # Dynamically typed expressions (typing.Any) are disallowed in {name} + "CPY001", # Missing copyright notice at top of file "D203", "D213", "D401", # First line of docstring should be in imperative mood From 2dd9a6284a40914aeca876ae5b41241389269d23 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Thu, 27 Aug 2026 14:29:18 -0400 Subject: [PATCH 2/2] Fix: Pull recommendation items separately from folders --- custom_components/mass_queue/controller.py | 45 +++++++++++++++------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/custom_components/mass_queue/controller.py b/custom_components/mass_queue/controller.py index 3602cc7..5b54d0d 100644 --- a/custom_components/mass_queue/controller.py +++ b/custom_components/mass_queue/controller.py @@ -145,23 +145,40 @@ async def send_command(self, command: str, data: dict | None = None): data = data or {} 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): """Pulls all recommendations.""" recs = await self._client.music.recommendations() - if not providers: - return recs - 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] + if 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) + ] + 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): """Get the grouped volume for a given player."""