429 错误是什么、为什么会出现
本质是什么
429 是 HTTP 状态码,含义是 "Too Many Requests"——请求过多。具体到 Lyricify 场景:Lyricify 向 Spotify 公共 Web API 发送请求的频率超过了 Spotify 给公共客户端设的阈值,Spotify 直接拒绝服务,返回一个告诉 Lyricify "等 X 秒再来" 的数字。
这不是 Lyricify 的 bug,是 Spotify 平台层面的限流机制。开发者也在 FAQ 里明确写了:"不是 Lyricify 的锅。"
哪些操作会触发 429
Lyricify 几乎所有云端操作都要消耗 API 配额:
| 操作 | API 消耗 | 触发频率 |
|---|---|---|
| 读取当前播放进度 | 每次请求消耗 1 次 | 取决于你的同步频率设置 |
| 搜索曲目 | 消耗 1 次每次 | 低(不是高频) |
| 歌词搜索(Lyricify 服务器失败后) | 间接消耗 | 偶尔 |
| 播放控制(Premium) | 每次控制消耗 1 次 | 低(按需触发) |
| 内置播放 | 持续消耗 | 用内置播放时持续触发 |
其中同步频率是 429 最主要的来源——默认 2 秒一次,一天下来就是几万次请求。如果同时用 Lyricify 4 + Lyricify Mobile + Web Player,多个实例叠加请求更容易触发。
429 vs 超长 429
普通 429:等待秒数在几百秒以内(通常几十秒到 3 分钟),等一会儿自动恢复。常见于频繁刷新播放进度。
超长 429:等待秒数达到几千到几万秒(几小时甚至超过一天),通常由以下原因触发:
- 连续使用超过 10 小时
- 没有播放内容时让 Lyricify 持续运行(此时仍然在周期性请求 API)
- 多台设备同时用同一个 Spotify 账号 + 高同步频率 + 长时间运行
免费账号 vs Premium
其实 429 限流不区分 Free 和 Premium——配额是按 API Client(而不是按账号)来算的。但 Premium 账号可以配置自定义 API Client获得独立配额,而免费账号不能(自定义 API Client 需要 Premium)。
所以 Premium 用户可以通过配自定义 Client 避开限流;免费用户只能:
- 调高同步频率(减少请求次数)
- 开启 Media Session(让本地控制走不消耗 Web API 的通道)
- 关掉 Lyricify(尤其是没有音乐在放的时候)
- 碰运气等配额恢复
一句话总结
429 = 用公共 API 的人太多被排队了。唯一的根治方法是有 Premium 订阅 + 配一个自定义 API Client,拿到独立配额。没有 Premium 就只能减少请求、等自然恢复。