Goal
Extend MeedyaDL's post-download enrichment to push lyrics + timing + cross-platform metadata to the shared lyrics-ingest endpoint (iLyricsDB canonical receiver, or iHymns satellite) when a track is downloaded from Apple Music. Backend handles normalization + dedupe; MeedyaDL just supplies the payload.
Format
See the iLyricsDB / iHymns lyrics-ingest cards for the contract. MeedyaDL supplies: song metadata (title/artist/album/ISRC/UPC/duration from the Apple Music API), raw TTML (GAMDL Apple-Music download, preserves word timing), optional alternative formats (Enhanced LRC, Lyricsfile YAML), and cross-platform IDs (MusicBrainz recording/work via optional AcoustID+MB lookup; Spotify/YouTube Music/Genius URLs).
Approach
- New Rust service
src-tauri/src/services/lyrics_ingest_client.rs — HTTP POST with exponential backoff; handle 429/401/transient; queue + retry failed (max 3) before logging failed; honour the opt-in setting.
- Hook after the lyrics-finalization enrichment step in
download_queue.rs: push_to_lyrics_backend(track, lyrics, metadata) with the user's API token.
- Config in
config_service.rs: endpoint URL + bearer token. Settings → Integrations UI: opt-in checkbox (default OFF for privacy), token field, status badge (valid/expired/not-configured), "Test connection" button.
- Activity log: per-push attempt (title, artist, status, error).
- Optional cross-platform enrichment: MusicBrainz (AcoustID), Spotify/YT-Music/Genius URLs into the payload.
Acceptance
- Settings UI renders the integration section; "Test connection" validates the token before real pushes; expired token shows status.
- A downloaded track with TTML is pushed on completion when opt-in is enabled; activity log shows pushed/skipped/failed; failures retried up to 3×.
- Cross-platform IDs included; backend responds with match status + id.
- Runs silently in the background; opt-in only, disablable anytime.
Part of the multi-format import/export + lyrics-ingest roadmap (2026-06-04). Priority: high. Foundation #1047 (normalized lyrics model: tblLyrics/tblLyricLines/tblLyricWords) has landed; the dedupe-on-import matcher is the shared base for every importer. All schema changes follow CLAUDE.md rule #19 (schema.sql + migration-registry + real probe).
Goal
Extend MeedyaDL's post-download enrichment to push lyrics + timing + cross-platform metadata to the shared lyrics-ingest endpoint (iLyricsDB canonical receiver, or iHymns satellite) when a track is downloaded from Apple Music. Backend handles normalization + dedupe; MeedyaDL just supplies the payload.
Format
See the iLyricsDB / iHymns lyrics-ingest cards for the contract. MeedyaDL supplies: song metadata (title/artist/album/ISRC/UPC/duration from the Apple Music API), raw TTML (GAMDL Apple-Music download, preserves word timing), optional alternative formats (Enhanced LRC, Lyricsfile YAML), and cross-platform IDs (MusicBrainz recording/work via optional AcoustID+MB lookup; Spotify/YouTube Music/Genius URLs).
Approach
src-tauri/src/services/lyrics_ingest_client.rs— HTTP POST with exponential backoff; handle 429/401/transient; queue + retry failed (max 3) before logging failed; honour the opt-in setting.download_queue.rs:push_to_lyrics_backend(track, lyrics, metadata)with the user's API token.config_service.rs: endpoint URL + bearer token. Settings → Integrations UI: opt-in checkbox (default OFF for privacy), token field, status badge (valid/expired/not-configured), "Test connection" button.Acceptance
Part of the multi-format import/export + lyrics-ingest roadmap (2026-06-04). Priority: high. Foundation #1047 (normalized lyrics model: tblLyrics/tblLyricLines/tblLyricWords) has landed; the dedupe-on-import matcher is the shared base for every importer. All schema changes follow CLAUDE.md rule #19 (schema.sql + migration-registry + real probe).