QQMusicAPI
QQ 音乐 API koa2 版本, 通过 Web 网页版请求 QQ 音乐接口数据, 有问题请提 issue, 或者你有其他想法欢迎
PR
.
Github
知乎
掘金
环境要求
因为本项目采用的是
koa2
, 所以请确保你的node
版本是 7.6.0+
node -v
安装
git@github.com:Rain120/qq-music-api.git
npm install
项目启动
// npm i -g nodemon
npm run start
// or don't install nodemon
node app.js
项目监听端口是3200
使用文档
使用 apis
详见文档
关于本人
Rain120: 前端菜鸟, 入职前端 1 年, 公司的技术栈是 React, 因为公司官网由我重构过, 我使用的 Vue.js 重构的。目前正在脱坑, 求大佬内推呀
API 结构图
API 接口
koa 接口说明(参数, 地址, 效果图)
获取 QQ 音乐产品的下载地址
接口说明: 调用此接口, 可获取 QQ 音乐标准产品下载链接
接口地址: /downloadQQMusic
调用例子: /downloadQQMusic
示例截图:
获取歌单分类
接口说明: 调用此接口, 可获取歌单分类, 包含 category
信息
接口地址: /getSongListCategories
调用例子: /getSongListCategories
<details>
<summary>SortID</summary>
sortId: 1, sortName: 默认
sortId: 2, sortName: 最新
sortId: 3, sortName: 最热
sortId: 4, sortName: 评分
sortId: 5, sortName: none
</details>
歌单分类(categoryId & categoryName)
<details>
<summary>1. 热门 </summary>
1.1
"categoryId": 10000000,
"categoryName": 全部,
</details>
<details>
<summary>2. 语种 </summary>
2.1
"categoryId": 167,
"categoryName": "英语",
2.2
"categoryId": 168,
"categoryName": "韩语",
2.3
"categoryId": 166,
"categoryName": "粤语",
2.4
"categoryId": 169,
"categoryName": "日语",
2.5
"categoryId": 170,
"categoryName": "小语种",
2.6
"categoryId": 203,
"categoryName": "闽南语",
2.7
"categoryId": 204,
"categoryName": "法语",
2.8
"categoryId": 205,
"categoryName": "拉丁语",
</details>
<details>
<summary>3. 流派 </summary>
3.1
"categoryId": 6,
"categoryName": "流行",
3.2
"categoryId": 15,
"categoryName": "轻音乐",
3.3
"categoryId": 11,
"categoryName": "摇滚",
3.4
"categoryId": 28,
"categoryName": "民谣",
3.5
"categoryId": 8,
"categoryName": "R&B",
3.6
"categoryId": 153,
"categoryName": "嘻哈",
3.7
"categoryId": 24,
"categoryName": "电子",
3.8
"categoryId": 27,
"categoryName": "古典",
3.9
"categoryId": 18,
"categoryName": "乡村",
3.10
"categoryId": 22,
"categoryName": "蓝调",
3.11
"categoryId": 21,
"categoryName": "爵士",
3.12
"categoryId": 164,
"categoryName": "新世纪",
3.13
"categoryId": 25,
"categoryName": "拉丁",
3.14
"categoryId": 218,
"categoryName": "后摇",
3.15
"categoryId": 219,
"categoryName": "中国传统",
3.16
"categoryId": 220,
"categoryName": "世界音乐",
</details>
<details>
<summary>4. 主题 </summary>
4.1
"categoryId": 39,
"categoryName": "ACG",
4.2
"categoryId": 136,
"categoryName": "经典",
4.3
"categoryId": 146,
"categoryName": "网络歌曲",
4.4
"categoryId": 133,
"categoryName": "影视",
4.5
"categoryId": 141,
"categoryName": "KTV 热歌",
4.6
"categoryId": 131,
"categoryName": "儿歌",
4.7
"categoryId": 145,
"categoryName": "中国风",
4.8
"categoryId": 194,
"categoryName": "古风",
4.9
"categoryId": 148,
"categoryName": "情歌",
4.10
"categoryId": 196,
"categoryName": "城市",
4.11
"categoryId": 197,
"categoryName": "现场音乐",
4.12
"categoryId": 199,
"categoryName": "背景音乐",
4.13
"categoryId": 200,
"categoryName": "佛教音乐",
4.14
"categoryId": 201,
"categoryName": "UP 主",
4.15
"categoryId": 202,
"categoryName": "乐器",
4.16
"categoryId": 14,
"categoryName": "DJ",
</details>
<details>
<summary>5. 心情 </summary>
5.1
"categoryId": 52,
"categoryName": "伤感",
5.2
"categoryId": 122,
"categoryName": "安静",
5.3
"categoryId": 117,
"categoryName": "快乐",
5.4
"categoryId": 116,
"categoryName": "治愈",
5.5
"categoryId": 125,
"categoryName": "励志",
5.6
"categoryId": 59,
"categoryName": "甜蜜",
5.7
"categoryId": 55,
"categoryName": "寂寞",
5.8
"categoryId": 126,
"categoryName": "宣泄",
5.9
"categoryId": 68,
"categoryName": "思念",
</details>
<details>
<summary>6. 场景 </summary>
6.1
"categoryId": 78,
"categoryName": "睡前",
6.2
"categoryId": 102,
"categoryName": "夜店",
6.3
"categoryId": 101,
"categoryName": "学习",
6.4
"categoryId": 99,
"categoryName": "运动",
6.5
"categoryId": 99,
"categoryName": "运动",
6.6
"categoryId": 76,
"categoryName": "约会",
6.7
"categoryId": 94,
"categoryName": "工作",
6.8
"categoryId": 81,
"categoryName": "旅行",
6.9
"categoryId": 103,
"categoryName": "派对",
6.10
"categoryId": 222,
"categoryName": "婚礼",
6.11
"categoryId": 223,
"categoryName": "咖啡馆",
6.12
"categoryId": 224,
"categoryName": "跳舞",
6.13
"categoryId": 16,
"categoryName": "校园",
</summary>
</details>
示例截图:
获取歌单列表
接口说明: 调用此接口, 可获取歌单列表
参数列表:
- 必选参数
categoryId
: 类别id
- 可选参数
page
: 当前页数, 默认为 1
limit
: 取出歌单数量, 默认为 20
sortId
: 最新, 最热, 评分, 默认为 5
接口地址: /getSongLists
调用例子: /getSongLists?categoryId=10000000
示例截图:
获取歌单列表
获取歌单列表 - 带参数
获取歌单详情
接口说明: 调用此接口, 可获取歌单详情
参数列表:
- 必选参数
disstid
: 歌单id
接口地址: /getSongListDetail
调用例子: /getSongListDetail?disstid=7011264340
示例截图:
获取 MV 标签
接口说明: 调用此接口, 可获取 MV 标签
接口地址: /getMvByTag
调用例子: /getMvByTag
示例截图:
获取 MV 播放信息
接口说明: 调用此接口, 可获取 MV 播放信息
参数列表:
- 必选参数
vid
: video id
接口地址: /getMvPlay
调用例子: /getMvPlay?vid=u00222le4ox
示例截图:
获取歌手 MV
接口说明: 调用此接口, 可获取歌手 MV
参数列表:
- 必选参数
singermid
: 歌手id
- 可选参数
order
: 当前 MV 类型, 默认为time
-
listen
: 歌手专辑音乐 MV -
time
: 粉丝上传 MV 视频
limit
: 取出歌单数量, 默认为 5
接口地址: /getSingerMV
调用例子: /getSingerMV?singermid=0025NhlN2yWrP4&order=all&limit=5
示例截图:
获取相似歌手
接口说明: 调用此接口, 可获取相似歌手
参数列表:
- 必选参数
singermid
: 歌手id
接口地址: /getSimilarSinger
调用例子: /getSimilarSinger?singermid=0025NhlN2yWrP4
示例截图:
获取歌手信息
接口说明: 调用此接口, 可获取歌手信息
参数列表:
- 必选参数
singermid
: 歌手id
接口地址: /getSingerDesc
调用例子: /getSingerDesc?singermid=0025NhlN2yWrP4
示例截图:
获取歌手被关注数量信息
接口说明: 调用此接口, 可获取歌手被关注数量信息
参数列表:
- 必选参数
singermid
: 歌手id
接口地址: /getSingerStarNum
调用例子: /getSingerStarNum?singermid=0025NhlN2yWrP4
示例截图:
获取电台列表
接口说明: 调用此接口, 可获取电台列表, 分类
接口地址: /getRadioLists
调用例子: /getRadioLists
示例截图:
获取专辑
接口说明: 调用此接口, 可获取专辑信息(专辑列表、详情)
参数列表:
- 必选参数
albummid
: 专辑id
接口地址: /getAlbumInfo
调用例子: /getAlbumInfo?albummid=0016l2F430zMux
示例截图:
获取数字专辑
接口说明: 调用此接口, 可获取数字专辑, 轮播图banner
, 专辑列表等信息, 详见 API 结构图
接口地址: /getDigitalAlbumLists
调用例子: /getDigitalAlbumLists
示例截图:
获取歌曲歌词
接口说明: 调用此接口, 可获取歌曲歌词
参数列表:
- 必选参数
songmid
: 专辑id
- 可选参数
isFormat
: 是否格式化歌词, 默认值为 false
接口地址: /getLyric
调用例子: /getLyric?songmid=003rJSwm3TechU
示例截图:
获取 MV
接口说明: 调用此接口, 可获取 MV 以及其 Tag 信息
参数列表:
- 必选参数
area_id
: 区域id
, 默认值为全部(15)
<details>
<summary>Area</summary>
"area": [
{
"id": 15,
"name": "全部"
},
{
"id": 16,
"name": "内地"
},
{
"id": 17,
"name": "港台"
},
{
"id": 18,
"name": "欧美"
},
{
"id": 19,
"name": "韩国"
},
{
"id": 20,
"name": "日本"
}
]
</details>
version_id
: 版本id
, 默认值为全部(7)
<details>
<summary>Version</summary>
"version": [
{
"id": 7,
"name": "全部"
},
{
"id": 8,
"name": "MV"
},
{
"id": 9,
"name": "现场"
},
{
"id": 10,
"name": "翻唱"
},
{
"id": 11,
"name": "舞蹈"
},
{
"id": 12,
"name": "影视"
},
{
"id": 13,
"name": "综艺"
},
{
"id": 14,
"name": "儿歌"
}
]
</details>
- 可选参数
page
: 当前页数, 默认为 1
limit
: 取出歌单数量, 默认为 20
接口地址: /getMv
调用例子: /getMv
示例截图:
获取新碟信息
接口说明: 调用此接口, 可获取新碟信息
参数列表:
- 可选参数
page
: 当前页数, 默认为 1
limit
: 取出歌单数量, 默认为 20
接口地址: /getNewDisks
调用例子: /getNewDisks
示例截图:
获取歌手专辑
接口说明: 调用此接口, 可获取歌手专辑
参数列表:
- 必选参数
singermid
: 歌手id
- 可选参数
page
: 当前页数, 默认为 1
limit
: 取出歌单数量, 默认为 20
接口地址: /getSingerAlbum
调用例子: /getSingerAlbum?singermid=0025NhlN2yWrP4
示例截图:
获取歌曲 VKey
接口说明: 调用此接口, 可获取歌曲 VKey
参数列表:
- 必选参数
songmid
: 歌曲id
接口地址: /getMusicVKey
调用例子: /getMusicVKey?songmid=0025NhlN2yWrP4
示例截图:
获取搜索热词
接口说明: 调用此接口, 可获取搜索热词
接口地址: /getHotkey
调用例子: /getHotkey
示例截图:
获取关键字搜索提示
接口说明: 调用此接口, 可获取获取关键字搜索提示
参数列表:
- 必选参数
key
: 搜索关键字
接口地址: /getSmartbox
调用例子: /getSmartbox?key= 周杰伦
示例截图:
获取搜索结果
接口说明: 调用此接口, 可获取获取搜索结果
参数列表(部分参数待注释):
- 必选参数
key
: 搜索关键字
catZhida
: 0 表示歌曲, 2 表示歌手, 3 表示专辑, 默认值为 1
- 可选参数
page
: 当前页数, 默认为 1
limit
: 取出歌单数量, 默认为 10
接口地址: /getSearchByKey
调用例子: /getSearchByKey?key= 周杰伦
示例截图:
获取首页推荐
接口说明: 调用此接口, 可获取首页推荐
接口地址: /getRecommend
调用例子: /getRecommend
示例截图:
获取排行榜单列表
接口说明: 调用此接口, 可获取排行榜单列表
- 可选参数
page
: 当前页数, 默认为 1
limit
: 取出歌单数量, 默认为 10
接口地址: /getTopLists
调用例子: /getTopLists
示例截图:
获取排行榜单详情
接口说明: 调用此接口, 可获取排行榜单详情
- 可选参数
topId
: 榜单id
page
: 当前页数, 默认为 1
limit
: 取出歌单数量, 默认为 10
接口地址: /getRanks
调用例子: /getRanks
示例截图:
获取评论信息(cmd 代表的意思没太弄明白)
接口说明: 调用此接口, 可获取评论信息
- 可选参数
id
: 专辑或者歌单请求结果的id
- 可选参数
rootcommentid
: 榜单id
cid
:
pagenum
: 当前页数, 默认为 0
pagesize
: 取出评论数量, 默认为 25
cmd
:
reqtype
:
biztype
:
接口地址: /getComments
调用例子: /getComments?id=8220&rootcommentid=album_8220_1003310416_1558068713
示例截图:
获取票务信息
接口说明: 调用此接口, 可获取票务信息
接口地址: /getTicketInfo
调用例子: /getTicketInfo
示例截图:
关于项目
灵感来自
Binaryify/NeteaseCloudMusicApi
Vue2.0 开发企业级移动端音乐 Web App
参考内容
Koa 2
Axios
阮一峰老师 – HTTP Referer 教程
项目不足
- 因为本人没写过
unit test
, 所以本项目尚未添加unit test
, 等有时间再添加; - 登录获取个人信息等接口都没做