zarzet
270496b3d5
refactor(lyrics): classify provider errors by type, not message text
...
Replace the substring signal lists in isLyricsProviderUnavailableError
with typed errors (errLyricsNotFound / errLyricsServiceUnavailable in
the new lyrics_errors.go). Providers now classify failures at the point
of origin: HTTP statuses via lyricsHTTPStatusError (429/5xx cooldown),
netease API codes and paxsenix proxy failures as explicit unavailable,
and every "no lyrics/songs found" path as typed not-found.
Substring matching survives only for error payloads from third-party
proxies (rate limit, missing parameters), whose messages genuinely
arrive as free text.
Two deliberate behavior changes: LyricsPlus 429/5xx responses now cool
the provider down (previously unclassified), and proxy payloads saying
"not found" are treated as not-found instead of disabling the provider.
2026-07-10 15:11:34 +07:00
..
2026-07-02 01:24:21 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-05-04 02:21:17 +07:00
2026-07-10 10:18:00 +07:00
2026-04-13 23:32:12 +07:00
2026-03-26 01:11:29 +07:00
2026-05-10 23:18:32 +07:00
2026-06-12 21:10:37 +07:00
2026-07-10 10:18:03 +07:00
2026-04-18 23:32:16 +07:00
2026-05-06 00:04:49 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 13:08:55 +07:00
2026-06-12 21:10:37 +07:00
2026-05-04 02:21:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:03 +07:00
2026-07-10 13:08:55 +07:00
2026-03-15 21:12:47 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:03 +07:00
2026-05-04 02:21:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:12:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 12:07:11 +07:00
2026-07-10 10:12:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:12:17 +07:00
2026-07-01 03:19:02 +07:00
2026-06-02 00:58:40 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-05-03 14:12:53 +07:00
2026-07-10 10:12:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-06-02 00:58:42 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-06-11 01:08:20 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:03 +07:00
2026-07-10 10:18:00 +07:00
2026-04-13 23:32:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:03 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:25:12 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:12:13 +07:00
2026-05-08 01:06:48 +07:00
2026-05-03 14:12:53 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:02 +07:00
2026-07-10 10:18:02 +07:00
2026-04-13 23:35:03 +07:00
2026-06-27 06:35:32 +07:00
2026-06-27 06:35:32 +07:00
2026-06-27 06:35:32 +07:00
2026-04-13 23:32:14 +07:00
2026-05-08 20:35:41 +07:00
2026-04-13 23:32:12 +07:00
2026-06-26 22:39:22 +07:00
2026-05-04 02:21:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 15:11:34 +07:00
2026-07-10 15:11:34 +07:00
2026-07-10 15:11:34 +07:00
2026-07-10 15:11:34 +07:00
2026-07-10 15:11:34 +07:00
2026-07-10 15:11:34 +07:00
2026-07-10 15:11:34 +07:00
2026-07-10 15:11:34 +07:00
2026-07-10 15:11:34 +07:00
2026-06-14 15:00:34 +07:00
2026-04-13 23:32:12 +07:00
2026-05-10 22:14:47 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-03-08 04:15:28 +07:00
2026-02-19 18:27:14 +07:00
2026-07-10 10:25:12 +07:00
2026-06-27 06:35:32 +07:00
2026-04-18 23:32:16 +07:00
2026-05-06 12:08:53 +07:00
2026-07-10 10:18:00 +07:00
2026-03-08 04:15:28 +07:00
2026-04-13 23:32:14 +07:00
2026-04-13 23:32:15 +07:00
2026-04-13 23:35:03 +07:00
2026-04-18 23:32:16 +07:00
2026-05-06 00:04:49 +07:00
2026-06-02 00:58:40 +07:00
2026-07-10 10:18:00 +07:00