Skip to content

Integration: push lyrics + cross-platform metadata to iLyricsDB/iHymns on Apple Music download #907

@Salem874

Description

@Salem874

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

  1. 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.
  2. Hook after the lyrics-finalization enrichment step in download_queue.rs: push_to_lyrics_backend(track, lyrics, metadata) with the user's API token.
  3. 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.
  4. Activity log: per-push attempt (title, artist, status, error).
  5. 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions