Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,3 @@ repos:
hooks:
- id: ruff
args: ["--fix"]
- repo: https://github.com/psf/black
rev: 25.1.0
hooks:
- id: black
1 change: 1 addition & 0 deletions .ruff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
45 changes: 31 additions & 14 deletions custom_components/mass_queue/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -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."""
Expand Down
Loading