[Feature]: Expand lyrics sources
enhancement
### What problem are you trying to solve?
Most songs come back with no lyrics. We are using lrclib and it's missing a large chunk of the catalogue, especially non-English tracks and anything obscure. We want broader coverage by adding more providers, and control over how they're chosen rather than a single hardcoded order.
### Proposed solution
Add three more providers behind the existing `Lyrics` enum (so synced vs plain keeps working) and make the fallback order configurable:
- **NetEase Cloud Music** (`music.163.com/api/song/lyric`) — free, no auth, returns synced LRC (often word-level). Best coverage boost, strong on non-English.
- **YouTube Music lyrics** — reuse the InnerTube path kopuz already has: lyrics browseId from the `next`/watch response → `browse`. Exact-track match (no fuzzy artist/title), but plain text only. YT-tracks only.
- **Paxsenix** — Musixmatch-backed aggregator, plain/synced.
### Alternatives considered
On top of the providers:
- **Preference order**: a user-configurable ordered list of enabled sources (config field, e.g. `lyrics_provider_order: Vec<LyricsProvider>`), walked in order until one returns a hit. Replaces the current hardcoded fallthrough.
- **Selection conditions**: rules for *which* result wins beyond "first non-empty" — e.g. prefer synced over plain, require a duration match within N seconds (lrclib/NetEase return track length), prefer the exact-match YT source for YT tracks, and optionally keep
searching past a plain-text hit if a later provider can supply synced.
### Area
Other
### Additional context
_No response_
关闭于 2026-06-27 0 条评论