Skip to content

feat: add preferred cover art provider setting with automatic fallback - #23

Open
Epikaigle wants to merge 1 commit into
avinaxhroy:mainfrom
Epikaigle:feature/preferred-cover-art-provider
Open

Epikaigle wants to merge 1 commit into
avinaxhroy:mainfrom
Epikaigle:feature/preferred-cover-art-provider

Conversation

@Epikaigle

Copy link
Copy Markdown
Contributor

Summary

Allows users to choose their preferred album cover source (e.g., Deezer for high-resolution 1000x1000 artwork, Spotify, Apple Music / iTunes, or MusicBrainz) while preserving Tempo's existing automatic fallback.

What's new:

  • New setting under Settings → Music Tracking: Choose between Automatic (default), Deezer, Spotify, Apple Music / iTunes, or MusicBrainz.
  • Artwork prioritization: When tracks are enriched, the chosen provider is prioritized for artwork. All other metadata (genres, audio features, IDs, previews) keep their existing provider order.
  • Automatic fallback: If the preferred provider has no cover or is unavailable, Tempo falls back to the other services seamlessly.
  • Existing library support: Changing the preference automatically requeues tracks with non-matching covers to PENDING so they refresh in the background without clearing any metadata.

Implementation Details

  • Clean arbitration: Added pure priority arbitration in AlbumArtSource.shouldBeReplacedBy(other, preferred) without side effects.
  • Unified Deezer search: A single API call handles both 30s previews and high-res artwork, eliminating redundant network calls.
  • Safe re-enrichment: MusicBrainz and Deezer preserve existing release dates, tags, genres, and artist credits.
  • Native UI/UX: The option is integrated directly into the Music Tracking card with accessible Role.RadioButton semantics and zero UI flicker.

Verification

  • Added unit tests in CoverArtSourcePreferenceTest and PreferredDeezerArtworkTest.
  • ./gradlew testDebugUnitTest: Passed (438 tests, 0 failures).
  • ./gradlew lintDebug: Passed (0 errors).

- Add preferred album cover source setting (Automatic, Deezer, Spotify, iTunes, MusicBrainz) in Settings -> Music Tracking.
- Implement pure cover-art arbitration in AlbumArtSource and CoverArtSourcePreference without altering metadata priorities.
- Preserve enrichment pipeline order while only keeping gap open for providers capable of satisfying or replacing artwork.
- Automatically requeue non-matching enriched tracks to PENDING on preference change and allow re-enrichment from song details.
- Unify Deezer track search to eliminate redundant API calls for previews and artwork.
- Prevent MusicBrainz cover refresh from overwriting or wiping existing release metadata.
- Support strict Deezer artwork matching for short track titles and collab primary artist matching.
- Add accessible radio button semantics (Role.RadioButton) in SettingsScreen.
- Add comprehensive unit tests in CoverArtSourcePreferenceTest and PreferredDeezerArtworkTest.
- Add localized strings for English, German, French, Hungarian, Portuguese, and Russian.
@Epikaigle
Epikaigle force-pushed the feature/preferred-cover-art-provider branch from f025e25 to 3111aba Compare October 19, 2026 15:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant