13 KiB
NeteaseCloudMusicApi
网易云音乐 NodeJS 版 API
灵感来自
工作原理
跨站请求伪造 (CSRF), 伪造请求头,调用官方 API
版本新特性
2.4.5 | 2017.4.20
增加歌手专辑,歌手单曲等接口,修复/album 接口描述错误,更新文档
2.4.0 | 2017.4.20
增加歌单(网友精选碟),新碟上架,热门歌手等接口,更新文档
2.3.4 | 2017.4.20
增加歌曲详情接口,更新文档
2.3.0 | 2017.4.15
增加排行榜接口,更新文档
2.2.0 |2017.4.14
增加私人 FM, 喜欢歌曲,垃圾桶,每日签到等接口,更新文档
2.1.3 | 2017.4.6
改善文档
2.1.0 | 2017.4.6
增加获取评论接口以及对应单元测试,增加更新日志
2.0.0 | 2017.4.1
版本升级到 2.0.增加使用文档,完成项目重构,增加更完善的单元测试,升级 api 到 v2+,支持登录并获取用户信息和创建的歌单,可通过获取音乐 url 接口获取用户歌单里的的音乐,获取每日推荐歌单和每日推荐音乐
功能特性
- 登录
- 获取用户歌单
- 获取歌曲详情
- 获取音乐 url
- 搜索
- 获取歌词
- 获取评论
- 获取专辑内容
- 获取每日推荐歌单
- 获取每日推荐歌曲
- 喜欢歌曲
- 私人FM
- 把私人 FM 的歌曲移动至垃圾桶
- 签到
- 各排行榜
- 歌曲详情
- 歌单(网友精选碟)
- 新碟上架
- 热门歌手
- mv(可获得 mv 地址,不过暂时还没解决 mv 的防盗链问题)
- 获取歌手专辑
- 获取歌手单曲
安装
$ git clone git@github.com:Binaryify/NeteaseCloudMusicApi.git
$ npm install
运行
$ node app.js
服务器启动默认端口为3000,若不想使用3000端口,可使用以下命令:
Mac/Linux
$ PORT=4000 node app.js
windows 下使用 git-bash 或者 cmder 等终端执行以下命令:
$ set PORT=4000 && node app.js
接口文档
调用前须知
部分接口如登录接口不能调用太频繁,否则可能会触发503错误或者 ip 高频错误,若需频繁调用,需要准备 IP 代理池
登录
说明:登录有两个接口
1. 手机登录
必选参数:
phone
: 手机号码
password
: 密码
接口地址:
/login/cellphone
调用例子:
/login/cellphone?phone=xxx&password=yyy
2. 邮箱登录
必选参数:
email
: 163网易邮箱
password
: 密码
接口地址:
/login
调用例子:
/login?email=xxx@163.com&password=yyy
完成登录后,会在浏览器保存一个 Cookies 用作登录凭证,大部分 API 都需要用到这个 Cookies
注意
调用登录接口的速度比调用其他接口慢,因为登录过程调用了加密算法
获取用户歌单
说明:登陆后调用此接口,传入用户 id, 可以获取用户歌单
必选参数:
uid
: 用户 id
接口地址:
/user/playlist
调用例子:
/user/playlist?uid=32953014
获取歌单详情
说明:歌单能看到歌单名字,但看不到具体歌单内容,调用此接口,传入歌单 id,可以获取对应歌单内的所有的音乐
必选参数:
id
: 歌单 id
接口地址:
/playlist/detail
调用例子:
/playlist/detail?id=24381616
获取音乐 url
说明:使用歌单详情接口后,能得到的音乐的 id, 但不能得到的音乐 url, 调用此接口,传入的音乐 id,可以获取对应的音乐的 url(不需要登录)
必选参数:
id
: 音乐 id
接口地址:
/music/url
调用例子:
/music/url?id=347230
搜索
说明:调用此接口,传入搜索关键词可以搜索该音乐/专辑/歌手/歌单/用户,关键词可以多个,以空格隔开,如"周杰伦 搁浅"(不需要登录)
必选参数:
keywords
: 关键词
可选参数:
limit
: 返回数量,默认为30
type
: 搜索类型;默认为1,取值意义:
1: 单曲
10: 专辑
100: 歌手
1000: 歌单
1002: 用户
offset
: 偏移数量,用于分页,如: 如:(评论页数-1)*30, 其中 30 为 limit 的值,默认为0
接口地址:
/search
调用例子:
/search?keywords=海阔天空
获取歌词
说明:调用此接口,传入音乐 id 可获得对应音乐的歌词(不需要登录)
必选参数:
id
: 音乐 id
接口地址:
/lyric
调用例子:
/lyric?id=347230
获取评论
说明:调用此接口,传入歌音乐 id和 limit 参数, 可获得该音乐的所有评论(不需要登录)
必选参数:
id
: 音乐 id
可选参数:
limit
: 取出评论数量,默认为20
offset
: 偏移数量,用于分页,如:(评论页数-1)*20, 其中 20 为 limit 的值
接口地址:
/comment
调用例子:
/comment?id=186016&limit=1
获取歌曲详情
说明:调用此接口,传入音乐 id, 可获得歌曲详情
必选参数:
ids
: 音乐 id,可多个,如 ids=347230
或者 ids=347230,347231
接口地址:
/music/songDetail
调用例子:
/music/songDetail?ids=347230
获取专辑内容
说明:调用此接口,传入id,可获得专辑内容
必选参数:
id
: id
接口地址:
/album
调用例子:
/album?id=32311
获取歌手单曲
说明:调用此接口,传入歌手 id,可获得歌手单曲
必选参数:
id
: 歌手 id,可由搜索接口获得
接口地址:
/artists
调用例子:
/artists?id=6452
获取歌手专辑
说明:调用此接口,传入歌手 id,可获得歌手专辑内容
必选参数:
id
: 歌手 id
接口地址:
/artist_album
调用例子:
/artist_album?id=6452&limit=30
获取每日推荐歌单
说明:调用此接口,可获得每日推荐歌单(需要登录)
接口地址:
/recommend/resource
调用例子:
/recommend/resource
获取每日推荐歌曲
说明:调用此接口,可获得每日推荐歌曲(需要登录)
接口地址:
/recommend/songs
调用例子:
/recommend/songs
私人 FM
说明:私人 FM( 需要登录)
接口地址:
/personal_fm
调用例子:
/personal_fm
返回数据如下图:
签到
说明:调用此接口,传入签到类型(可不传,默认安卓端签到),可签到(需要登录),其中安卓端签到可获得3点经验, web/PC 端签到可获得2点经验
可选参数:
type
: 签到类型,默认 0, 其中 0 为安卓端签到,1为 web/PC 签到
接口地址:
/daily_signin
调用例子:
/daily_signin
返回数据如下图:
喜欢音乐
说明:调用此接口,传入音乐 id, 可喜欢该音乐
必选参数:
id
: 歌曲 id
可选参数:
like
: 布尔值,默认为 true 即喜欢,若传 false, 则取消喜欢
接口地址:
/like
调用例子:
/like?id=347230
返回数据如下图:
喜欢成功则返回数据的 code 为200,其余为失败
垃圾桶
说明:调用此接口,传入音乐 id, 可把该音乐从私人 FM中移除至垃圾桶
必选参数:
id
: 歌曲 id
接口地址:
/fm_trash
调用例子:
/fm_trash?id=347230
返回数据如下图:
歌单(网友精选碟)
说明:调用此接口,可获取网友精选碟歌单
可选参数:
limit
: 取出数量,默认为50
offset
: 偏移数量,用于分页,如:(评论页数-1)*20, 其中 20 为 limit 的值,默认为0
order
: 可选值为 'new' 和 'hot',分别对应最新和最热,默认为 'hot'
接口地址:
/top_playlist
调用例子:
/top_playlist?limit=10&order=new
返回数据如下图:
新碟上架
说明:调用此接口,可获取新碟上架列表,如需具体音乐信息需要调用获取专辑列表接口 /album
,然后传入 id, 如 /album?id=32311&limit=30
可选参数:
limit
: 取出数量,默认为50
offset
: 偏移数量,用于分页,如:(评论页数-1)*50, 其中 50 为 limit 的值,默认为0
接口地址:
/new_albums
调用例子:
/new_albums?offset=0&limit=30
返回数据如下图:
热门歌手
说明:调用此接口,可获取热门歌手数据
可选参数:
limit
: 取出数量,默认为50
offset
: 偏移数量,用于分页,如:(评论页数-1)*50, 其中 50 为 limit 的值,默认为0
接口地址:
/top_artists
调用例子:
/top_artists?offset=0&limit=30
返回数据如下图:
mv
说明:调用此接口,传入 mvid ,可获取对应 MV 数据
可选参数:
mvid
: mv 的 id
接口地址:
/mv
调用例子:
/mv?mvid=5436712
返回数据如下图:
排行榜
说明:调用此接口,传入数字 idx, 可获取不同排行榜
必选参数:
idx
: 对象 key, 对应以下排行榜
"0": 云音乐新歌榜,
"1": 云音乐热歌榜,
"2": 网易原创歌曲榜,
"3": 云音乐飙升榜,
"4": 云音乐电音榜,
"5": UK排行榜周榜,
"6": 美国Billboard周榜
"7": KTV嗨榜,
"8": iTunes榜,
"9": Hit FM Top榜,
"10": 日本Oricon周榜
"11": 韩国Melon排行榜周榜,
"12": 韩国Mnet排行榜周榜,
"13": 韩国Melon原声周榜,
"14": 中国TOP排行榜(港台榜),
"15": 中国TOP排行榜(内地榜)
"16": 香港电台中文歌曲龙虎榜,
"17": 华语金曲榜,
"18": 中国嘻哈榜,
"19": 法国 NRJ EuroHot 30周榜,
"20": 台湾Hito排行榜,
"21": Beatport全球电子舞曲榜
接口地址:
/top_list
调用例子:
/top_list?idx=6
返回数据如下图:
离线访问此文档
此文档同时也是 Progressive Web Apps(PWA), 加入了serviceWorker,可离线访问
关于此文档
此文档由 docsify 生成
docsify 是一个动态生成文档网站的工具。不同于 GitBook、Hexo 的地方是它不会生成将 .md 转成 .html 文件,所有转换工作都是在运行时进行。