Meting-API

多平台音乐 API 代理 · 基于 @meting/core · 部署在 RandallFlare Workers

接口列表

路径说明
/api主接口,根据 type 返回 JSON / 302 / 纯文本
/demoAPlayer + meting-js 内嵌演示页(HTML)
/本页(文档)

查询参数

参数默认枚举 / 说明
servernetease音乐平台,见下表
typesearch查询类型,见下表
idhello搜索词 / 歌曲 / 专辑 / … 的 id,语义随 type 改变
tokenauth当 type ∈ { url, pic, lrc } 时必填,HMAC 签名(下面有算法)

server 枚举

平台登录 cookie
netease网易云音乐● 已配置
tencentQQ 音乐● 已配置
kugou酷狗音乐○ 未配置
baidu百度音乐○ 未配置
kuwo酷我音乐○ 未配置

● 已配置:运维设了 env.METING_COOKIE_<SERVER>,这个平台的上游请求会带登录态(更高音质 / VIP 曲)。○ 未配置:走匿名访问。鉴权 cookie 仅在请求 Referer 命中 METING_COOKIE_ALLOW_HOSTS 时才注入(空白允许全部)。

type 枚举

说明鉴权
search 关键词搜索 — id 是搜索词 公开
song 单曲详情 — id 是曲目 id 公开
album 专辑列表 — id 是专辑 id 公开
artist 歌手代表作 — id 是歌手 id 公开
playlist 歌单内容 — id 是歌单 id 公开
url 播放链接 302 跳转 — id 是 search 返回的 url_id 需鉴权
pic 封面图 302 跳转 — id 是 search 返回的 pic_id 需鉴权
lrc 歌词 LRC 纯文本 — id 是 search 返回的 lyric_id 需鉴权

鉴权(url / pic / lrc)

需鉴权的接口要求 query 里带 tokenauth 参数(两个等价),值是 HMAC-SHA1 签名。算法:

signature = HMAC_SHA1(key = METING_TOKEN, message = server + type + id)
hex 输出小写

METING_TOKEN 是 worker 的环境变量(运维侧设置,默认 token,强烈建议改)。

自动生成签名

实际使用中你不用手算签名 —— 调一次 type=search(或 song/album/…) 返回的 JSON 里已经把每条结果的 url/pic/lrc 三个字段拼好了,直接用就行。例:

$ curl 'http://music.rapi.rest/api?server=netease&type=search&id=Lemon'

[
  {
    "title": "Lemon",
    "author": "米津玄師",
    "url":  "http://music.rapi.rest/api?server=netease&type=url&id=...&auth=8f1c...",
    "pic":  "http://music.rapi.rest/api?server=netease&type=pic&id=...&auth=2b9e...",
    "lrc":  "http://music.rapi.rest/api?server=netease&type=lrc&id=...&auth=ad44..."
  },
  ...
]

手算签名(Node.js 示例)

import { createHmac } from 'node:crypto'

const sig = createHmac('sha1', METING_TOKEN)
  .update(`${server}${type}${id}`)
  .digest('hex')

const url = `http://music.rapi.rest/api?server=${server}&type=${type}&id=${id}&auth=${sig}`

签名错误会返 401 鉴权失败,非法调用;type 不在枚举返 400;上游不可达返 500 / 502 并把上游错误透到 body。

响应规则

缓存

每个 worker isolate 内置 LRU(1000 entries,30s freshness 抖动)。url 10 分钟,其它 60 分钟。响应 header x-cache: hit|miss 可以查命中状态。


demo 页:/demo?server=netease&type=playlist&id=2619366284

源码 · github.com/RandallAnjie/Meting-API · branch randallflare-worker