吃着火锅, 写着代码, 听着歌...一不小心某音乐就上市了. 趁着兴头扒了一套 api (极简, 可用, 从获取排行榜到歌曲播放 url, 歌词, 封面等信息). 现共享一下接口文档. 大家玩儿的开心. 😄
由于个人的力量毕竟有限, 加之 🐧 厂的兄弟们一直致力于升级 api 上. 所以维护过程中出现心有余力不足的情况, 这里盛情邀请有精力且愿意折腾一下的小伙伴们和我一起来维护这个项目, 有兴趣的小伙伴请不吝提出 issue 和 PR.
本项目地址github
/api/v2/music
获取网站首页的推荐信息, 包含顶部轮播和广播
请求说明:
请求方式 GET
请求URL :/recommend
字段 | 字段类型 | 字段说明 |
---|---|---|
无 | 无 | 无 |
{
"announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
"errno": 0,
"msg": "success",
"data": {
"slider": [
"http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1121987.jpg",
"http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1122653.jpg",
"http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1121479.jpg",
"http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1120772.jpg",
"http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1123020.jpg"
],
"radioList": [
{
"picUrl": "http://y.gtimg.cn/music/photo/radio/track_radio_199_13_1.jpg",
"title": "热歌",
"id": 199
},
{
"picUrl": "http://y.gtimg.cn/music/photo/radio/track_radio_307_13_1.jpg",
"title": "一人一首招牌歌",
"id": 307
}
]
}
}
字段 | 字段类型 | 字段说明 |
---|---|---|
announce | string | 声明文案 |
errno | int | 0: 表示没有问题, 其他表示有问题. 详情参考 msg |
msg | string | 接口返回状态描述 |
data | object | 接口返回数据主体 |
slider | array | 轮播图信息(子条目为 string) |
radioList | array | 电台列表数据(始终返回两条) |
picUrl | string | 电台logo |
title | string | 电台标题 |
id | ing | 电台id |
代码健壮的像一头牛, 不会报错~
获取排行榜数据, 获取到的是从各种维度获取的排行版歌单(比如周榜, 月榜...)
请求说明:
请求方式 GET
请求URL :/toplist
字段 | 字段类型 | 字段说明 |
---|---|---|
无 | 无 | 无 |
{
"announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
"errno": 0,
"msg": "success",
"data": [
{
"id": 4,
"title": "巅峰榜·流行指数",
"listenCount": 19800000,
"picUrl": "http://y.gtimg.cn/music/photo_new/T003R300x300M000004DDmku3TdWR9.jpg",
"songList": [
{
"singerName": "林俊杰",
"songName": "不为谁而作的歌",
"number": 1
},
{
"singerName": "林俊杰",
"songName": "圣所",
"number": 2
},
{
"singerName": "GAI",
"songName": "永不独行",
"number": 3
}
]
},
...各种数据...
]
}
字段 | 字段类型 | 字段说明 |
---|---|---|
announce | string | 声明文案 |
errno | int | 0: 表示没有问题, 其他表示有问题. 详情参考 msg |
msg | string | 接口返回状态描述 |
data | array | 接口返回数据主体 |
id | int | 歌单id |
title | string | 歌单标题 |
listenCount | int | 歌单播放次数 |
picUrl | string | 歌单 logo url |
songList | array | 歌单中排行榜前三的曲目 |
singerName | string | 歌手名称 |
songName | string | 歌曲名称 |
number | int | 排行 |
代码健壮的像一头牛, 不会报错~
获取指定歌单中的曲目列表
请求说明:
请求方式 GET
请求URL :/songList/{:songListId}
字段 | 字段类型 | 字段说明 |
---|---|---|
songListId | string | 歌单id, 就是排行榜中获取的歌单条目的id字段. 用于指定用户选择的歌单 |
{
"announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
"errno": 0,
"msg": "success",
"data": {
"updateTime": "2019-01-10",
"totalSongNum": 100,
"topInfo": {
"picAlbum": "http://imgcache.qq.com/music/photo_new/T002R300x300M000003nbc0602Tgfx.jpg",
"listName": "巅峰榜·流行指数"
},
"songList": [
{
"songMid": "002K4xqW4A7m7q",
"singer": [
{
"singerName": "林俊杰",
"singerMid": "001BLpXF2DyJe2"
}
],
"songName": "不为谁而作的歌",
"songId": 105095766,
"albumMid": "003nbc0602Tgfx"
}
...各种数据...
]
}
}
字段 | 字段类型 | 字段说明 |
---|---|---|
announce | string | 声明文案 |
errno | int | 0: 表示没有问题, 其他表示有问题. 详情参考 msg |
msg | string | 接口返回状态描述 |
data | object | 接口返回数据主体 |
updateTime | string | 更新时间 |
totalSongNum | int | 歌单中歌曲数目 |
topInfo | object | 歌单信息 |
picAlbum | string | 歌单封面logo |
listName | string | 歌单名称 |
songList | array | 歌曲列表 |
songMid | string | 歌曲id |
singer | array | 歌手信息 |
singerName | string | 歌手名称 |
singerMid | string | 歌手媒体 id, 用户获取歌手头像 |
songName | string | 歌曲名称 |
songId | string | 歌曲 id, 用于获取歌词 |
albumMid | string | 专辑媒体 id, 用于获取专辑封面 url |
代码健壮的像一头牛, 不会报错~
根据歌曲id, 获取播放 url(目前可用)
请求说明:
请求方式 GET
请求URL :/songUrllist/{:songIdList}
字段 | 字段类型 | 字段说明 |
---|---|---|
songIdList | stringArray | 歌曲 id 列表, 需要拼接成 id1,id2,id3,id4 的形式 |
{
"announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
"errno": 0,
"msg": "success",
"data": [
"http://isure.stream.qqmusic.qq.com//C400000Qepff3UyUWO.m4a?guid=5579254314&vkey=70D5522DDF8F35B36B133AA0F85A9C2FA608F2FA85BCBB4EC31CC6A0047CEAB873E9E2B947A6D893C219C65781B9EFE1F00C583518290F4E&uin=0&fromtag=38",
"http://isure.stream.qqmusic.qq.com//C400001KxFBr3ZrMIk.m4a?guid=5579254314&vkey=7DC202D78758D601A1EF4B15F5597A805C740CFCE9210870073D05247716E83D4146EE3907962645D2F7BE99071BFC0B01E73F09AFA5114D&uin=0&fromtag=38"
]
}
字段 | 字段类型 | 字段说明 |
---|---|---|
announce | string | 声明文案 |
errno | int | 0: 表示没有问题, 其他表示有问题. 详情参考 msg |
msg | string | 接口返回状态描述 |
data | array | item 为对应音乐的播放 url, 直接放到 audio 标签就可以播放 |
代码健壮的像一头牛, 不会报错~
音乐搜索功能, 可以根据音乐信息搜索出匹配的歌曲列表
请求说明:
请求方式 GET
请求URL :/music/search/唐人/1/10
字段 | 字段类型 | 字段说明 |
---|---|---|
key | string | 搜索关键词 |
page | int | (非必须, 默认值为 1)当前页码 |
page | int | (非必须, 默认值为 20)每页条数 |
{
"announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
"errno": 0,
"msg": "success",
"data": {
"page": {
"currentNumber": 10,
"currentPage": 1,
"totalNumber": 397
},
"songList": [
{
"songMid": "003ALEZa186Qlq",
"singer": [
{
"singerName": "孙子涵",
"singerMid": "001oXbjs29oPul"
}
],
"songName": "唐人",
"songId": 4823575,
"albumMid": "002CWEnV2g4m3p"
}
...各种数据...
]
}
}
字段 | 字段类型 | 字段说明 |
---|---|---|
errno | int | 0: 表示没有问题, 其他表示有问题. 详情参考 msg |
announce | string | 声明文案 |
msg | string | 接口返回状态描述 |
data | object | 返回数据 |
page | object | 分页信息 |
currentNumber | int | 当前返回的条目数 |
currentPage | int | 当前页码 |
totalNumber | int | 总条目数 |
songList | array | 歌曲列表 |
songMid | string | 歌曲id |
singer | array | 歌手信息 |
singerName | string | 歌手名称 |
singerMid | string | 歌手媒体 id, 用户获取歌手头像 |
songName | string | 歌曲名称 |
songId | string | 歌曲 id, 用于获取歌词 |
albumMid | string | 专辑媒体 id, 用于获取专辑封面 url |
代码健壮的像一头牛, 不会报错~
获取歌词, 这个没啥可以描述的啦~
请求说明:
请求方式 GET
请求URL :/music/lrc/:id
字段 | 字段类型 | 字段说明 |
---|---|---|
id | string | 歌曲 id |
{
"announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
"errno": 0,
"msg": "success",
"data": {
"lyric": "[ti:唐人][换行][ar:孙子涵][换行][al:唐朝好男人 电视剧原声带][换行][by:][换行][offset:0][换行][00:00.00]唐人 (《唐朝好男人》电视剧主题曲) - 孙子涵 (Niko Sun)[换行][00:09.66]词:孙子涵[换行][00:19.32]曲:孙子涵[换行][00:28.99]一如昨日烛火 伴扁舟相随[换行][00:32.46][换行][00:33.22]哪有唐人不懂得陶醉[换行][00:36.73]我孤舟 你窈窕 岸上有隐晦[换行][00:40.54][换行][00:41.24]一踏万里与谁相随[换行][00:43.91][换行][00:44.62]你穿错了嫁妆怎能有快乐[换行][00:48.50][换行][00:49.19]再上一层胭脂也不美[换行][00:52.77]一声戛然而止庭前的鞭炮[换行][00:57.10]妄想同你华发的心作废[换行][01:00.27][换行][01:00.84]你说不要自作自受自己创造伤悲[换行][01:04.77]谁都可以彻底忘记谁[换行][01:08.02][换行][01:08.71]你说过往不及回首 别后悔了才会[换行][01:12.90]想方设法的把你追回[换行][01:16.13][换行][01:16.69]你说孤独是诗人应该具有的体会[换行][01:20.81]写歌的人就该有伤悲[换行][01:24.17][换行][01:24.74]我点一丝烛火 一时泛滥了思念[换行][01:28.75]写首小调名字叫后悔[换行][01:32.32][换行][01:33.66]一如昨日烛火 伴着扁舟相随[换行][01:36.91][换行][01:37.53]哪有唐人不懂得陶醉[换行][01:40.67][换行][01:41.48]你穿错了嫁妆怎可能有快乐[换行][01:44.99][换行][01:45.54]再上一层胭脂也不美[换行][01:47.94][换行][01:48.91]你穿错了嫁妆怎能有快乐[换行][01:52.65][换行][01:53.16]再上一层胭脂也不美[换行][01:56.71]一声戛然而止庭前的鞭炮[换行][02:00.45][换行][02:01.03]妄想同你华发的心作废[换行][02:04.27][换行][02:04.88]你说不要自作自受自己创造伤悲[换行][02:08.73]谁都可以彻底忘记谁[换行][02:12.07][换行][02:12.69]你说过往不及回首 别后悔了才会[换行][02:16.90]想方设法的把你追回[换行][02:20.11][换行][02:20.68]你说孤独是诗人应该具有的体会[换行][02:24.90]写歌的人就该有伤悲[换行][02:28.75]我点一丝烛火 一时泛滥了思念[换行][02:32.74]写首小调名字叫后悔[换行][02:36.73][换行][02:40.74]你说不要自作自受自己创造伤悲[换行][02:44.85]谁都可以彻底忘记谁[换行][02:48.62]你说过往不及回首 别后悔了才会[换行][02:52.80]想方设法的把你追回[换行][02:56.10][换行][02:56.63]你说孤独是诗人应该具有的体会[换行][03:00.80]写歌的人就该有伤悲[换行][03:04.64]我点一丝烛火 一时泛滥了思念[换行][03:08.77]写首小调名字叫后悔[换行][03:12.45][换行][03:13.38]一如昨日烛火 伴着扁舟相随[换行][03:17.51]哪有唐人不懂得陶醉[换行][03:20.69][换行][03:21.48]你穿错了嫁妆怎可能有快乐[换行][03:25.56]再上一层胭脂也不美[换行][03:28.19][换行][03:29.39]一如昨日烛火 伴着扁舟相随[换行][03:32.86][换行][03:33.47]哪有唐人不懂得陶醉[换行][03:36.65][换行][03:37.48]你穿错了嫁妆怎可能有快乐[换行][03:41.46]再上一层胭脂也不美"
}
}
字段 | 字段类型 | 字段说明 |
---|---|---|
announce | string | 声明文案 |
errno | int | 0: 表示没有问题, 其他表示有问题. 详情参考 msg |
msg | string | 接口返回状态描述 |
data | object | 返回数据 |
lyric | string | 歌词信息, 由于 JSON 不能添加换行, 所以直接在 lrc 文件本该换行的位置插入了换行标记[换行] 前端代码中直接 lyric.replace(/\[换行\]/g, '\n') 即可还原 lrc 文件. |
代码健壮的像一头牛, 不会报错~
获取歌曲封面和歌手的头像图片, 就是播放器用来转圈的那个~
请求说明:
请求方式 GET
请求URL :/music/imgs/{:albummid}/{:singerMid}
字段 | 字段类型 | 字段说明 |
---|---|---|
albummid | string | 歌曲所属的专辑的媒体 id |
singerMid | string | 歌手的媒体 id |
{
"announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
"errno": 0,
"msg": "success",
"data": {
"albumImgUrl": "https://y.gtimg.cn/music/photo_new/T002R300x300M000002CWEnV2g4m3p.jpg",
"singerAvatarUrl": "https://y.gtimg.cn/music/photo_new/T001R150x150M000001oXbjs29oPul.jpg"
}
}
字段 | 字段类型 | 字段说明 |
---|---|---|
errno | int | 0: 表示没有问题, 其他表示有问题. 详情参考 msg |
announce | string | 声明文案 |
msg | string | 接口返回状态描述 |
data | object | 返回数据 |
albumImgUrl | string | 歌曲所属的专辑封面 url |
singerAvatarUrl | string | 歌手头像 url |
代码健壮的像一头牛, 不会报错~