33

QQ音乐API koa2实现 - 全接口实现

 3 years ago
source link: https://zhuanlan.zhihu.com/p/68071329
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

QQ音乐API koa2实现 - 全接口实现

https://github.com/Rain120

QQ音乐API koa2 版本, 通过Web网页版请求QQ音乐接口数据, 有问题请提 issue, 或者你有其他想法欢迎PR.

Github

掘金

因为本项目采用的是`koa2`, 所以请确保你的`node`版本是7.6.0+

node -v
[email protected]: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

SortID

sortId: 1, sortName: 默认
sortId: 2, sortName: 最新
sortId: 3, sortName: 最热
sortId: 4, sortName: 评分
sortId: 5, sortName: none

歌单分类(categoryId & categoryName)

1.1
  "categoryId": 10000000,
  "categoryName": 全部,
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": "拉丁语",
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": "世界音乐",
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",
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": "思念",
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": "校园",

示例截图:

获取歌单列表

接口说明: 调用此接口, 可获取歌单列表

参数列表:

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以及其Tag信息

参数列表:

area_id: 区域id, 默认值为全部(15)

"area": [
  {
    "id": 15,
    "name": "全部"
  },
  {
    "id": 16,
    "name": "内地"
  },
  {
    "id": 17,
    "name": "港台"
  },
  {
    "id": 18,
    "name": "欧美"
  },
  {
    "id": 19,
    "name": "韩国"
  },
  {
    "id": 20,
    "name": "日本"
  }
]

version_id: 版本id, 默认值为全部(7)

Version

"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": "儿歌"
  }
]

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

pagenum: 当前页数, 默认为0

pagesize: 取出评论数量, 默认为 25

reqtype:

biztype:

接口地址: /getComments

调用例子: /getComments?id=8220&rootcommentid=album_8220_1003310416_1558068713

示例截图:



获取票务信息

接口说明: 调用此接口, 可获取票务信息

接口地址: /getTicketInfo

调用例子: /getTicketInfo

示例截图:

灵感来自

Binaryify/NeteaseCloudMusicApi​github.com

参考内容

axios/axios​github.com

1. 因为本人没写过unit test, 所以本项目尚未添加unit test, 等有时间再添加;

2. 登录获取个人信息等接口都没做


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK