Open
Conversation
marcelveldt
reviewed
Jan 26, 2026
marcelveldt
reviewed
Jan 26, 2026
marcelveldt
reviewed
Jan 26, 2026
marcelveldt
reviewed
Jan 26, 2026
39c8072 to
301d2fa
Compare
Contributor
🔒 Dependency Security Report✅ No dependency changes detected in this PR. |
Member
|
I keep forgetting to come back on this one. Long term goal is that we can have provider independent recommendations providers. Now question is if this belongs to metadata providers or this should be plugins. Also metadata is strictly about metadata so I'm inclined to say this should be plugin. |
Contributor
Author
|
As discussed on Discord. Changed to a metadata provider. |
marcelveldt
reviewed
Apr 14, 2026
marcelveldt
reviewed
Apr 14, 2026
marcelveldt
reviewed
Apr 14, 2026
Adds +isrcs to the MusicBrainz recording include clause so that get_recording_details returns ISRC codes. Required by the Last.fm Recommendations provider to resolve tracks to streaming providers via ISRC matching. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Mirrors the default implementation on MusicProvider, allowing metadata providers to declare ProviderFeature.RECOMMENDATIONS and contribute recommendation folders to the Home screen. The dispatch in controllers/music.py already filters providers by feature rather than by class, so no controller changes are needed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds a new MetadataProvider that surfaces Last.fm-powered recommendation rows on the Home screen, grouped into four configurable toggles: - Personalized (similar artists/tracks based on your listening history) - Global Charts (Last.fm worldwide top artists/tracks) - Genre (top artists/albums/tracks for your most-played Last.fm genre; requires username) - Geographic (top artists/tracks for a selected country) Items returned by Last.fm are resolved to your configured streaming providers using MBIDs and ISRCs where available, falling back to name matching. Resolved items are cached for 90 days and MBID to ISRC lookups for 90 days. Built recommendation folders are persisted for 24 hours so they survive restarts without re-hitting APIs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
b406df8 to
7f7f309
Compare
The music controller's recommendations() aggregator was iterating self.providers, which filters to ProviderType.MUSIC only. With the Last.fm provider moving to MetadataProvider, its folders were never dispatched even though the feature flag was set. Iterate self.mass.providers (all types) and filter by ProviderFeature.RECOMMENDATIONS instead, preserving the existing user_provider_filter logic.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A new music provider that generates recommendation folders using the Last.fm API. Recommendations are resolved to playable items via streaming providers (Spotify, etc).
Recommendation Rows
The provider generates up to 9 recommendation folders, arranged into four groups configurable via toggle:
Personalized (based on user's MA library play counts)
Global Charts (Last.fm worldwide data)
Genre-based (requires Last.fm username)
Geographic (configurable country)
Resolution Pipeline
Key Features