MUSIC / LISTEN / API

众声各自远,聆听不必辗转。

四个平台的搜索、歌词与播放,收在同一个界面里。上游的限流、降级和失败由我们吸收 —— 但从不假装它们不存在。

无需登录即可开始播放 · 音频 302 跳上游 CDN,Portal 不存储音频

lycagon / now playing固定演示画面
Lycagon 播放器中的固定演示曲目界面

BUILT, NOT CLAIMED

不只是能播,每一处都经得起看。

下面每一条都能在产品里点到,也都带着一个可以核对的数。

实时 BPM

播放时在浏览器里算,不靠预先标注。算出来不在区间内、或置信度不够就不显示 —— 宁可不说,也不猜。

60–200 · 置信度 ≥ 0.16

频谱不作假

进度条周围的细线读真实的 AnalyserNode。封面跨域取不到频谱时退回节拍包络,而不是把一帧静态点阵当成「正在播放」。

64 段

歌词与翻译

逐行时间轴,翻译随时开关。上游确实没有歌词时,界面就说没有,不走错误路径。

逐行 · 可切翻译

背景跟着封面走

由当前封面推出三个数,整片背景的颜色全部由这三个数导出,不做整屏换肤。

--bg-h / s / l

画中画

把播放器开成一个独立的小窗口,切走标签页也在播。

420 × 190

音质说实话

按当前曲目动态解析可用档位,并显示你实际拿到的那一档 —— 不是你点的那一档。

128K — HR

CAPABILITY, PER PROVIDER

能做什么按平台说,不按端点说。

同一个端点在不同平台上并不等价。哪一格空着,我们就说空着。

Provider搜索播放地址歌词专辑歌单
网易云音乐支持支持支持支持支持
JOOX支持支持支持不支持不支持
QQ 音乐支持支持支持不支持不支持
酷狗音乐支持支持支持不支持不支持

酷狗查专辑会静默返回另一张,所以我们干脆不声明这个能力。与其给你一个「看起来成功」的错答案,不如明说做不到。

FOR BUILDERS

把音乐能力,接进你的下一件作品。

六个端点,五个可用。第六个明确回 501,因为你会写重试。

查看 API 文档 ↗
  • GET/api/v1/searchJSONq / type / provider / limit / offset
  • GET/api/v1/stream/{provider}/{id}302缺省取当前曲目动态最高可用档
  • GET/api/v1/lyric/{provider}/{id}JSON逐行时间轴,翻译可选
  • GET/api/v1/album/{provider}/{id}TrackList仅网易云声明此能力
  • GET/api/v1/playlist/{provider}/{id}TrackList仅网易云声明此能力
  • GET/api/v1/track/{provider}/{id}501上游确认不支持,明确回 CAPABILITY_UNSUPPORTED
$ curl -H "Authorization: Bearer lyc_YOUR_KEY" \
  "https://lycagon.wlop.uk/api/v1/search?q=blue"

{
  "results": [{ "title": "Blue", "artist": "Joni Mitchell" }]
}

失败是可预测的

四道闸门顺序固定,每一道有自己的状态码,不合并成一个「请求失败」。

  1. 401API Key 不对
  2. 403主体被封禁
  3. 429撞到限流
  4. 402额度不足
NO_RESULT
搜到了,但这个平台没有结果
NO_STREAM
曲目在,但拿不到可播地址
NO_QUALITIES
拿不到任何可用档位
CAPABILITY_UNSUPPORTED
这个平台不声明这个能力
RATE_LIMITED
本站限流,稍后再来
UPSTREAM_ERROR
上游出错,不是你的请求写错了

501 只用在一个地方。它和 502 分开,是因为带指数退避的客户端会一直重试一个永远不会成的请求 —— 既烧你的配额,也烧我们的限流桶。

拿一把 Key。API Key 目前按用途发放,不是自助注册 —— 说明你要做什么,我们再开。

A CLEAR CONTRACT

知道它能做什么,也知道它不做什么。

Portal 是入口与说明,不是账户后台。边界写在这里,不留给你去试。

查看完整能力文档 ↗
✓
公开能力搜索、歌词、播放地址、专辑与歌单(后两项按平台)
✓
四个 Provider网易云音乐、JOOX、QQ 音乐、酷狗音乐
—
不在这里发生账户管理、API Key 管理与音频存储

YOUR NEXT SONG

下一首,从这里开始。