
Meting-API
特性
🎵 支持多个音乐平台:网易云、QQ音乐、酷狗、虾米、百度、酷我
🚀 基于 Hono.js 高性能框架
💾 内置 LRU 缓存机制,减少上游 API 调用
🔐 HMAC-SHA1 令牌鉴权,保护敏感接口
🐳 Docker 部署支持
📝 结构化 JSON 日志输出
第一步:安装Node js
宝塔面板安装Node js 版本:20.12.2



安装完成后,点击命令行版本->设置为20.12.2
第二步:安装项目依赖环境
克隆项目到本地目录
git clone https://github.com/metowolf/Meting-API.git如果遇到Github进不去或网络访问链接失败,需下载下方的文件手动上传到服务器
进入到项目目录,安装项目依赖,Node js版本:18+,这里实际运行版本:20.12.2
# 安装依赖
yarn install
# 创建环境变量文件(可选)
touch .env
# 如果没有该文件需执行创建打开.env环境变量文件,输入以下内容,注意将https://your-domain.com替换成自己的实际访问地址
# .env环境变量文件
HTTP_PREFIX=meting
HTTP_PORT=7000
HTTPS_ENABLED=false
METING_TOKEN=meting_token
METING_COOKIE_ALLOW_HOSTS=
METING_URL=https://your-domain.com/meting第三步:添加部署项目
添加Node项目,选择pm2项目,照着图中填写即可,启动文件和运行目录需修改为自己实际的地址,点击确定等待项目部署成功即可。

第四步:添加域名访问
添加访问域名和开启SSL,此处域名需和第二步骤中.env文件METING_URL 的域名保持一致!


第五步:访问接口服务
接口地址:METING_URL /api
返回一段音乐json数据,表示即部署成功!
如果无法访问,可尝试放行端口:7000
API 接口文档
基础接口
GET /api
请求参数
操作类型说明
响应格式
列表数据 (search/song/album/artist/playlist):
[
{
"title": "歌曲名称",
"author": "艺术家1 / 艺术家2",
"url": "https://METING_URL/api?server=netease&type=url&id=xxx&auth=xxx",
"pic": "https://METING_URL/api?server=netease&type=pic&id=xxx&auth=xxx",
"lrc": "https://METING_URL/api?server=netease&type=lrc&id=xxx&auth=xxx"
}
]歌词数据 (lrc):
[00:00.000] 歌词第一行
[00:05.123] 歌词第二行 (翻译内容)
[00:10.456] 歌词第三行
音频/图片 (url/pic):
成功:302 重定向到实际资源 URL
失败:404 Not Found
请求示例
搜索歌曲:
curl "http://METING_URL/api?server=netease&type=search&id=周杰伦"获取歌曲详情:
curl "http://METING_URL/api?server=netease&type=song&id=歌曲ID"获取歌词(需要 token):
curl "http://METING_URL/api?server=netease&type=lrc&id=歌曲ID&auth=计算的token"鉴权机制
敏感操作(lrc、url、pic)需要提供 HMAC-SHA1 签名的 token:
// Token 计算公式
token = HMAC-SHA1(METING_TOKEN, server + type + id)示例(使用 Node.js):
const crypto = require('crypto');
function generateToken(server, type, id, secret = 'token') {
const message = `${server}${type}${id}`;
return crypto.createHmac('sha1', secret).update(message).digest('hex');
}
const token = generateToken('netease', 'url', '123456');缓存策略
默认缓存容量:1000 条记录
缓存时长:
url类型:10 分钟其他类型:1 小时
响应头
x-cache:miss:缓存未命中,调用上游 API无此头:缓存命中
Cookie 配置
部分音乐平台的 API 需要登录态才能访问完整数据。可以通过以下两种方式配置 Cookie:
方式一:环境变量(推荐)
通过环境变量 METING_COOKIE_大写平台名 配置:
# .env环境变量文件示例
METING_COOKIE_NETEASE=xxx # 网易云音乐 Cookie
METING_COOKIE_TENCENT=xxx # QQ音乐 Cookie
METING_COOKIE_KUGOU=xxx # 酷狗音乐 Cookie
METING_COOKIE_BAIDU=xxx # 百度音乐 Cookie
METING_COOKIE_KUWO=xxx # 酷我音乐 Cookie方式二:文件存储
在项目根目录 cookie/ 文件夹下创建以平台名命名的文件(无扩展名):
cookie/
├── netease # 网易云音乐 Cookie
├── tencent # QQ音乐 Cookie
├── kugou # 酷狗音乐 Cookie
└── ...
每个文件存储对应平台的 Cookie 字符串。
Cookie 优先级
优先从环境变量读取(
METING_COOKIE_NETEASE等)环境变量不存在时从文件读取(
cookie/netease等)
Cookie 缓存
Cookie 内容会在内存中缓存 5 分钟,减少文件系统读取
使用文件存储时,修改 cookie 文件会自动清除缓存,立即生效
环境变量方式需要重启服务才能更新
获取VIP音乐
如果自己有会员账号,可以将vip的cookie添加到cookie文件,就可以获取到vip音乐了
Referrer 白名单
通过 METING_COOKIE_ALLOW_HOSTS 环境变量限制哪些来源可以使用 Cookie:
# 仅允许特定域名使用 Cookie
METING_COOKIE_ALLOW_HOSTS=example.com,music.example.com不设置时不限制来源。这可以防止 Cookie 被第三方滥用。
错误处理
API 返回标准 HTTP 状态码:
错误信息通过响应头 x-error-message 返回。
评论区