Files
Mymusic2/需求.md
2026-01-06 09:46:52 +08:00

693 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

角色与目标你是一名资深的前端架构师。请帮我构建一个单文件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/>