Add Deezer/Wikipedia artist info as fallback for all servers#876
Open
M0Rf30 wants to merge 1 commit intodweymouth:mainfrom
Open
Add Deezer/Wikipedia artist info as fallback for all servers#876M0Rf30 wants to merge 1 commit intodweymouth:mainfrom
M0Rf30 wants to merge 1 commit intodweymouth:mainfrom
Conversation
1e4dea7 to
a2a9872
Compare
There was a problem hiding this comment.
Pull request overview
This PR extracts Deezer/Wikipedia artist info fetching into a shared fallback mechanism available to all server types, following the same pattern as the existing LrcLib lyrics integration. When a server returns incomplete artist metadata (missing biography or image), the system transparently queries Deezer for images and Wikipedia for biographies.
Changes:
- New
ArtistInfoFetcherfor Deezer image and Wikipedia biography retrieval with in-memory caching and request deduplication - New
ArtistInfoManagerthat wraps the server's nativeGetArtistInfowith external fallback - Settings checkbox and config field to enable/disable external artist info requests
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
backend/artistinfofetcher.go |
New file: Deezer/Wikipedia fetcher with caching, deduplication, and concurrency limiting |
backend/artistinfomanager.go |
New file: fallback manager that tries server first, then external sources |
backend/config.go |
Adds EnableExternalArtistInfo config field with default true |
backend/app.go |
Wires ArtistInfoManager into the app lifecycle and cache clearing |
ui/dialogs/settingsdialog.go |
Adds checkbox for enabling/disabling external artist info in Advanced tab |
ui/browsing/artistpage.go |
Uses ArtistInfoManager instead of direct server call |
ui/browsing/router.go |
Passes ArtistInfoManager to artist page constructor |
res/translations/it.json |
Adds Italian translation for the new setting string |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Extract artist info fetching from external sources (Deezer for images, Wikipedia for biographies) into a shared ArtistInfoManager that works as a fallback for all server types, not just MPD. When a server returns incomplete artist info (missing biography or image), the manager automatically queries Deezer and Wikipedia to fill in the gaps. This follows the same pattern as the existing LrcLib lyrics fallback. A new 'Enable Deezer/Wikipedia artist info' checkbox in Settings > Advanced allows users to disable these external integrations.
a2a9872 to
8b8e006
Compare
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.
Summary
As discussed in #826, this PR extracts the Deezer/Wikipedia artist info fetching into a shared fallback available for all server types (Subsonic, Jellyfin, and future MPD), following the same pattern as the existing LrcLib lyrics integration.
ArtistInfoFetcher— fetches artist images from Deezer and biographies from Wikipedia (with language preference and in-memory caching)ArtistInfoManager— tries the server's nativeGetArtistInfofirst, then fills in missing biography/image data from external sourcesHow it works
When a server returns incomplete artist info (empty biography or no image URL), the manager transparently queries Deezer and Wikipedia to fill the gaps. Servers that already return complete metadata (e.g. Subsonic with Last.fm configured) will see no additional network requests.
Files changed
backend/artistinfofetcher.gobackend/artistinfomanager.gobackend/config.goEnableExternalArtistInfoconfig fieldbackend/app.goArtistInfoManagerinto App lifecycleui/dialogs/settingsdialog.goui/browsing/artistpage.goArtistInfoManagerinstead of directmp.GetArtistInfoui/browsing/router.goArtistInfoManagerto artist pageRelation to #826
This is the prerequisite PR mentioned in the review comment. Once merged, the MPD PR (#826) can be rebased to use the shared fetcher instead of its own copy, reducing its line count.