Initial commit

This commit is contained in:
史悦
2026-01-06 09:46:52 +08:00
commit 1ae3444970
5 changed files with 2184 additions and 0 deletions

693
需求.md Normal file
View File

@@ -0,0 +1,693 @@
角色与目标你是一名资深的前端架构师。请帮我构建一个单文件Single-File的 React 应用,这是一个具有“音乐搜索下载播放”功能的 Progressive Web App (PWA)。
技术栈1.Framework: React (使用 Functional Components + Hooks) 2.Styling: Tailwind CSS (追求现代、干净、移动端优先的 UI) 3.Icons: Font Awesome
核心功能根据我提供的API实现音乐的搜索、下载、在线播放; 搜索直接 aggregateSearch 全局检索即可,然后显示音乐信息列表 最好显示专辑封面 其他信息你可以自己选择,支持查看歌曲的专辑列表;下载,支持单个音乐的下载,支持专辑的批量下载;在线播放,支持当前列表的播放,支持单独音乐加入歌单,只保留一个歌单即可,支持歌单的清理,支持专辑的批量播放;围绕这三个主需求的其他需求你可以自己补充;
输出要求:请生成一个完整的 .html 文件(包含 React 和 Babel 的 CDN 链接,以便单文件运行),代码需要有详细的注释。
注意我提供的API文档比较旧返回的信息不可信你自己测试下看看真实的返回结果aggregateSearch 是真实的,我测了;
<api>
TuneHub API
v1.0.0
概览
服务介绍
✨ 实时看板 (Live)
支持平台
核心 API
1. 歌曲信息
2. 音乐链接 (文件)
3. 专辑封面
4. 歌词获取
5. 歌曲搜索
6. 聚合搜索
7. 歌单详情
8. 排行榜列表
9. 排行榜歌曲
10-11. 系统监控
统计 API
12. 获取统计数据
13. 统计摘要
14. 平台统计概览
15. QPS 统计
16. 趋势数据
17. 请求类型统计
TuneHub API 接口文档
TuneHub 是一个统一的音乐信息解析服务。它打破了不同音乐平台之间的壁垒,提供了一套标准化的 API 接口。
Base URL: https://music-dl.sayqz.com
|
Version: 1.0.0
实时统计看板
今日总调用
-
成功率
-
平均耗时
-
ms
平均 QPS
-
平台调用占比 (Today)
等待数据...
Top 5 接口类型 (Today)
接口 调用量 成功率
...
支持的平台
平台标识 (source) 平台名称 状态
netease 网易云音乐 ✅ 已启用
kuwo 酷我音乐 ✅ 已启用
qq QQ音乐 ✅ 已启用
1. 获取歌曲基本信息 GET
GET /api/?source={source}&id={id}&type=info
获取歌曲的名称、歌手、专辑等基本元数据信息。
Response Example
{
"code": 200,
"message": "success",
"data": {
"name": "歌曲名称",
"artist": "歌手名称",
"album": "专辑名称",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=123456&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=123456&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=123456&type=lrc"
},
"timestamp": "2025-11-23T12:00:00.000+08:00"
}
2. 获取音乐文件链接 GET
GET /api/?source={source}&id={id}&type=url&br=[320k]
音质参数 (br) 对照表
值 说明 比特率
128k 标准音质 128kbps
320k 高品质 320kbps
flac 无损音质 ~1000kbps
flac24bit Hi-Res 音质 ~1400kbps
💡 响应说明 (Response)
成功时返回 302 Redirect 到实际的音乐文件 URL。
自动换源:当请求的原平台失败时,系统会自动尝试其他平台。此时响应头会包含 X-Source-Switch 字段例如netease -> kuwo
3. 获取专辑封面 GET
获取歌曲的专辑封面图片。
GET /api/?source={source}&id={id}&type=pic
Response: 302 Redirect to image URL.
4. 获取歌词 GET
获取歌曲的 LRC 格式歌词。
GET /api/?source={source}&id={id}&type=lrc
Response Example (Text/Plain)
[00:00.00]歌词第一行
[00:05.50]歌词第二行
[00:10.20]歌词第三行
5. 搜索歌曲 GET
GET /api/?source={source}&type=search&keyword={keyword}&limit=[20]
Response Example
{
"code": 200,
"message": "success",
"data": {
"keyword": "周杰伦",
"total": 10,
"results": [
{
"id": "123456",
"name": "歌曲名称",
"artist": "周杰伦",
"album": "专辑名称",
"url": "https://music-dl.sayqz.com/api/?...",
"platform": "netease"
}
]
}
}
6. 聚合搜索 GET
GET /api/?type=aggregateSearch&keyword={keyword}
Response Example
{
"code": 200,
"message": "success",
"data": {
"keyword": "周杰伦",
"limit": 10,
"page": 1,
"platforms": [
"netease",
"qq",
"kuwo"
],
"platformStats": {
"netease": {
"success": true,
"count": 10,
"duration": 160,
"error": null
},
"qq": {
"success": true,
"count": 10,
"duration": 133,
"error": null
},
"kuwo": {
"success": true,
"count": 10,
"duration": 59,
"error": null
}
},
"total": 30,
"results": [
{
"id": "509781655",
"name": "想你就写信 (Live)",
"artist": "周杰伦、李硕、张鑫",
"album": "中国新歌声第二季 第13期",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=509781655&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=509781655&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=509781655&type=lrc"
},
{
"id": "0039MnYb0qxYhV",
"name": "晴天",
"artist": "周杰伦",
"album": "叶惠美",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=0039MnYb0qxYhV&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=0039MnYb0qxYhV&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=0039MnYb0qxYhV&type=lrc"
},
{
"id": "228908",
"name": "晴天",
"artist": "周杰伦",
"album": "叶惠美",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=228908&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=228908&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=228908&type=lrc"
},
{
"id": "5257138",
"name": "屋顶",
"artist": "周杰伦、温岚、吴宗宪",
"album": "男女情歌对唱冠军全记录",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=5257138&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=5257138&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=5257138&type=lrc"
},
{
"id": "001Bbywq2gicae",
"name": "搁浅",
"artist": "周杰伦",
"album": "七里香",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=001Bbywq2gicae&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=001Bbywq2gicae&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=001Bbywq2gicae&type=lrc"
},
{
"id": "324244",
"name": "青花瓷",
"artist": "周杰伦",
"album": "我很忙",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=324244&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=324244&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=324244&type=lrc"
},
{
"id": "1888354230",
"name": "默 (Live)",
"artist": "李荣浩、周杰伦",
"album": "2021中国好声音 第1期",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=1888354230&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=1888354230&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=1888354230&type=lrc"
},
{
"id": "002tNzue0g8xQA",
"name": "爱你没差",
"artist": "周杰伦",
"album": "十二新作",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=002tNzue0g8xQA&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=002tNzue0g8xQA&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=002tNzue0g8xQA&type=lrc"
},
{
"id": "440615",
"name": "花海",
"artist": "周杰伦",
"album": "魔杰座",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=440615&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=440615&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=440615&type=lrc"
},
{
"id": "210049",
"name": "布拉格广场",
"artist": "蔡依林、周杰伦",
"album": "看我72变",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=210049&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=210049&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=210049&type=lrc"
},
{
"id": "003aAYrm3GE0Ac",
"name": "稻香",
"artist": "周杰伦",
"album": "魔杰座",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=003aAYrm3GE0Ac&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=003aAYrm3GE0Ac&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=003aAYrm3GE0Ac&type=lrc"
},
{
"id": "118987",
"name": "枫",
"artist": "周杰伦",
"album": "十一月的萧邦",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=118987&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=118987&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=118987&type=lrc"
},
{
"id": "490595315",
"name": "因为爱情 (Live)",
"artist": "周杰伦、那英",
"album": "中国新歌声第二季 第1期",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=490595315&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=490595315&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=490595315&type=lrc"
},
{
"id": "002qU5aY3Qu24y",
"name": "青花瓷",
"artist": "周杰伦",
"album": "我很忙",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=002qU5aY3Qu24y&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=002qU5aY3Qu24y&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=002qU5aY3Qu24y&type=lrc"
},
{
"id": "94237",
"name": "七里香",
"artist": "周杰伦",
"album": "七里香",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=94237&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=94237&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=94237&type=lrc"
},
{
"id": "255020",
"name": "刀马旦",
"artist": "李玟、周杰伦",
"album": "Promise",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=255020&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=255020&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=255020&type=lrc"
},
{
"id": "004Z8Ihr0JIu5s",
"name": "七里香",
"artist": "周杰伦",
"album": "七里香",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=004Z8Ihr0JIu5s&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=004Z8Ihr0JIu5s&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=004Z8Ihr0JIu5s&type=lrc"
},
{
"id": "94239",
"name": "搁浅",
"artist": "周杰伦",
"album": "七里香",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=94239&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=94239&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=94239&type=lrc"
},
{
"id": "210062",
"name": "骑士精神",
"artist": "蔡依林、周杰伦",
"album": "看我72变",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=210062&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=210062&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=210062&type=lrc"
},
{
"id": "003KtYhg4frNXC",
"name": "枫",
"artist": "周杰伦",
"album": "十一月的萧邦",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=003KtYhg4frNXC&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=003KtYhg4frNXC&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=003KtYhg4frNXC&type=lrc"
},
{
"id": "440613",
"name": "稻香",
"artist": "周杰伦",
"album": "魔杰座",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=440613&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=440613&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=440613&type=lrc"
},
{
"id": "490602328",
"name": "沧海一声笑 (Live)",
"artist": "那英、周杰伦、刘欢、陈奕迅",
"album": "中国新歌声第二季 第1期",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=490602328&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=490602328&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=490602328&type=lrc"
},
{
"id": "003cI52o4daJJL",
"name": "花海",
"artist": "周杰伦",
"album": "魔杰座",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=003cI52o4daJJL&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=003cI52o4daJJL&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=003cI52o4daJJL&type=lrc"
},
{
"id": "118980",
"name": "夜曲",
"artist": "周杰伦",
"album": "十一月的萧邦",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=118980&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=118980&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=118980&type=lrc"
},
{
"id": "1317494434",
"name": "屋顶 (Live)",
"artist": "周杰伦、宿涵、张神儿",
"album": "2018中国好声音 澳门演唱会",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=1317494434&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=1317494434&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=1317494434&type=lrc"
},
{
"id": "001zMQr71F1Qo8",
"name": "夜曲",
"artist": "周杰伦",
"album": "十一月的萧邦",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=001zMQr71F1Qo8&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=001zMQr71F1Qo8&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=001zMQr71F1Qo8&type=lrc"
},
{
"id": "3211586",
"name": "爱你没差",
"artist": "周杰伦",
"album": "十二新作",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=3211586&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=3211586&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=3211586&type=lrc"
},
{
"id": "5234479",
"name": "布拉格广场",
"artist": "蔡依林、周杰伦",
"album": "跨世纪金曲精选",
"platform": "netease",
"url": "https://music-dl.sayqz.com/api/?source=netease&id=5234479&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=netease&id=5234479&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=netease&id=5234479&type=lrc"
},
{
"id": "001xd0HI0X9GNq",
"name": "一路向北",
"artist": "周杰伦",
"album": "J III MP3 Player",
"platform": "qq",
"url": "https://music-dl.sayqz.com/api/?source=qq&id=001xd0HI0X9GNq&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=qq&id=001xd0HI0X9GNq&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=qq&id=001xd0HI0X9GNq&type=lrc"
},
{
"id": "440616",
"name": "兰亭序",
"artist": "周杰伦",
"album": "魔杰座",
"platform": "kuwo",
"url": "https://music-dl.sayqz.com/api/?source=kuwo&id=440616&type=url",
"pic": "https://music-dl.sayqz.com/api/?source=kuwo&id=440616&type=pic",
"lrc": "https://music-dl.sayqz.com/api/?source=kuwo&id=440616&type=lrc"
}
]
},
"timestamp": "2026-01-05T14:09:25.068+08:00"
}
7-9. 歌单与排行榜
7. 获取歌单详情
GET /api/?source={source}&id={id}&type=playlist
{
"code": 200,
"data": {
"list": [
{
"id": "123456",
"name": "歌曲名称",
"types": ["flac", "320k", "128k"]
}
],
"info": {
"name": "歌单名称",
"author": "创建者"
}
}
}
8. 获取排行榜列表
GET /api/?source={source}&type=toplists
{
"code": 200,
"data": {
"list": [
{
"id": "19723756",
"name": "飙升榜",
"updateFrequency": "每天更新"
}
]
}
}
9. 获取排行榜歌曲
GET /api/?source={source}&id={id}&type=toplist
{
"code": 200,
"data": {
"list": [
{
"id": "123456",
"name": "歌曲名称"
}
],
"source": "netease"
}
}
10-11. 系统监控
GET /status
{
"code": 200,
"data": {
"status": "running",
"platforms": { "netease": { "enabled": true } }
}
}
GET /health
{
"code": 200,
"data": { "status": "healthy" }
}
统计分析 API 详解
TuneHub 提供完整的 API 调用统计分析功能。所有数据均使用 UTC+8北京时间 时区。
12. 获取统计数据 GET
GET /stats?period=[today]&groupBy=[platform]
Response Example
{
"code": 200,
"data": {
"period": "today",
"overall": {
"total_calls": 15420,
"success_calls": 14856,
"success_rate": 96.34,
"avg_duration": 245.67
},
"breakdown": [
{
"group_key": "netease",
"total_calls": 8234,
"success_rate": 97.13
}
],
"qps": {
"avg_qps": 0.1785,
"peak_qps": 2.4567
}
}
}
13. 获取统计摘要 GET
GET /stats/summary
{
"code": 200,
"data": {
"today": {
"total_calls": 15420,
"success_rate": 96.34
},
"week": {
"total_calls": 98765
},
"top_platforms_today": [
{ "group_key": "netease", "total_calls": 8234 }
]
}
}
14. 平台统计概览 GET
GET /stats/platforms?period=[today]
{
"code": 200,
"data": {
"platforms": {
"netease": {
"total_calls": 8234,
"success_rate": 97.13
},
"kuwo": {
"total_calls": 4521,
"success_rate": 97.08
}
}
}
}
15. QPS 统计 GET
GET /stats/qps?period=[today]
{
"code": 200,
"data": {
"qps": {
"avg_qps": 0.1785,
"peak_qps": 2.4567,
"hourly_data": [
{
"date": "2025-11-24",
"hour": 14,
"calls": 8845,
"qps": "2.4569"
}
]
}
}
}
16. 趋势数据 GET
GET /stats/trends?period=[week]
{
"code": 200,
"data": {
"trends": [
{
"date": "2025-11-17",
"total_calls": 12345,
"success_rate": 96.20
},
{
"date": "2025-11-18",
"total_calls": 13567,
"success_rate": 96.48
}
]
}
}
17. 请求类型统计 GET
GET /stats/types?period=[today]
{
"code": 200,
"data": {
"requestTypes": {
"url": {
"total_calls": 6234,
"success_rate": 96.21
},
"info": {
"total_calls": 4521,
"success_rate": 98.56
}
}
}
}
高级特性
🔄 自动换源 (Auto-Switch)
当请求 type=url 时,如果原平台获取失败,系统会自动按配置优先级尝试其他平台。
换源优先级:
kuwo (酷我音乐)
netease (网易云音乐)
qq (QQ音乐)
🔍 聚合搜索 (Aggregate Search)
使用 aggregateSearch 可以一次性并发请求所有启用的平台,并对结果进行智能混合排列。
特性:
并发请求,速度快
自动去重
支持统一分页
© 2025 TuneHub API Documentation
<api/>