27 KiB
NeteaseCloudMusicApi
网易云音乐 NodeJS 版 API
灵感来自
工作原理
跨站请求伪造 (CSRF), 伪造请求头,调用官方 API
版本新特性
2.6.5 | 2017.7.16
优化 CORS 设置
2.6.4 | 2017.7.16
添加缓存机制和随机 UA 机制 感谢@u3u issue:77 优化请求代码 感谢 @huhuime issue:83
2.5.0 | 2017.4.29
增加 mv/专辑/歌单评论接口,增加云盘相关接口,增加获取用户动态/信息接口,增加关注/粉丝列表接口,增加收藏歌单接口,增加相似 mv/歌曲/用户接口,增加 banner 接口,增加刷新登录接口,增加电台相关接口,补充评论接口,更新文档
功能特性
- 登录
- 刷新登录
- 获取用户信息,歌单,收藏,mv, dj 数量
- 获取用户歌单
- 获取用户电台
- 获取用户关注列表
- 获取用户粉丝列表
- 获取用户动态
- 获取用户播放记录
- 获取精品歌单
- 获取歌单详情
- 搜索
- 搜索建议
- 获取歌词
- 歌曲评论
- 收藏单曲到歌单
- 专辑评论
- 歌单评论
- mv 评论
- 电台节目评论
- banner
- 获取歌曲详情
- 获取专辑内容
- 获取歌手单曲
- 获取歌手 mv
- 获取歌手专辑
- 获取歌手描述
- 获取相似歌手
- 获取相似歌单
- 相似 mv
- 获取相似音乐
- 获取最近5个听了这首歌的用户
- 获取每日推荐歌单
- 获取每日推荐歌曲
- 私人 FM
- 签到
- 喜欢音乐
- 垃圾桶
- 歌单(网友精选碟)
- 新碟上架
- 热门歌手
- 最新 mv
- 推荐 mv
- 推荐歌单
- 推荐新音乐
- 推荐电台
- 推荐节目
- 独家放送
- 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 代理池.
-
本项目仅供学习使用,文档可能会有缓存,如果文档版本和 github 上的版本不一致,请清除缓存再查看
-
2.5.0 版本对部分原有 api 做了微调,不过只是调整了下地址,参数和返回结果不受影响
-
由于网易限制,此项目在国外服务器上使用会受到限制,如需解决,可使用大陆服务器或者使用代理,感谢 @hiyangguo提出的解决方法,在 'util.js' 的 'headers'处增加
X-Real-IP':'211.161.244.70' //任意国内IP
即可解决
登录
说明:登录有两个接口
1. 手机登录
必选参数:
phone
: 手机号码
password
: 密码
接口地址:
/login/cellphone
调用例子:
/login/cellphone?phone=xxx&password=yyy
2. 邮箱登录
注意:此接口被网易和谐了,待修复,暂时使用手机登录(2017.05.20)
必选参数:
email
: 163网易邮箱
password
: 密码
接口地址:
/login
调用例子:
/login?email=xxx@163.com&password=yyy
完成登录后,会在浏览器保存一个 Cookies 用作登录凭证,大部分 API 都需要用到这个 Cookies
注意
调用登录接口的速度比调用其他接口慢,因为登录过程调用了加密算法
刷新登录
说明:调用此接口,可刷新登录状态
调用例子:
/login/refresh
获取用户详情
说明:登陆后调用此接口,传入用户 id, 可以获取用户详情
必选参数:
uid
: 用户 id
接口地址:
/user/detail
调用例子:
/user/detail?uid=32953014
获取用户信息,歌单,收藏,mv, dj 数量
说明:登陆后调用此接口,传入用户 id, 可以获取用户信息
必选参数:
uid
: 用户 id
接口地址:
/user/subcount
调用例子:
/user/subcount?uid=32953014
获取用户歌单
说明:登陆后调用此接口,传入用户 id, 可以获取用户歌单
必选参数:
uid
: 用户 id
接口地址:
/user/playlist
调用例子:
/user/playlist?uid=32953014
获取用户电台
说明:登陆后调用此接口,传入用户 id, 可以获取用户电台
必选参数:
uid
: 用户 id
接口地址:
/user/dj
调用例子:
/user/dj?uid=32953014
获取用户关注列表
说明:登陆后调用此接口,传入用户 id, 可以获取用户关注列表
必选参数:
uid
: 用户 id
可选参数:
limit
: 返回数量,默认为30
offset
: 偏移数量,用于分页,如: 如:(页数-1)*30, 其中 30 为 limit 的值,默认为0
接口地址:
/user/follows
调用例子:
/user/follows?uid=32953014
获取用户粉丝列表
说明:登陆后调用此接口,传入用户 id, 可以获取用户粉丝列表
必选参数:
uid
: 用户 id
可选参数:
limit
: 返回数量,默认为30
offset
: 偏移数量,用于分页,如: 如:(页数-1)*30, 其中 30 为 limit 的值,默认为0
接口地址:
/user/followeds
调用例子:
/user/followeds?uid=32953014
获取用户动态
说明:登陆后调用此接口,传入用户 id, 可以获取用户动态
必选参数:
uid
: 用户 id
接口地址:
/user/event
调用例子:
/user/event?uid=32953014
获取用户播放记录
说明:登陆后调用此接口,传入用户 id,可获取用户播放记录
必选参数:
uid
: 用户 id
可选参数:
type
: type=1时只返回weekData, type=0时返回allData
接口地址:
/user/record
调用例子:
/user/record?uid=32953014&type=1
获取动态消息
说明:调用此接口,可获取各种动态,对应网页版网易云,朋友界面里的各种动态消息,如分享的视频,音乐,照片等!
必选参数: 未知
接口地址:
/event
调用例子:
/event
获取精品歌单
说明:调用此接口,可获取精品歌单
可选参数:
cat
: tag, 比如 "华语"、"古风" 、"欧美"、"流行",默认为"全部"
limit
: 取出评论数量,默认为20
接口地址:
/top/playlist/highquality
调用例子:
/top/playlist/highquality?limit=30
获取歌单详情
说明:歌单能看到歌单名字,但看不到具体歌单内容,调用此接口,传入歌单 id,可以获取对应歌单内的所有的音乐
必选参数:
id
: 歌单 id
接口地址:
/playlist/detail
调用例子:
/playlist/detail?id=24381616
获取音乐 url
说明:使用歌单详情接口后,能得到的音乐的 id, 但不能得到的音乐 url, 调用此接口,传入的音乐 id(可多个,用逗号隔开),可以获取对应的音乐的 url(不需要登录)
必选参数:
id
: 音乐 id
接口地址:
/music/url
调用例子:
/music/url?id=347230
/music/url?id=347230,347231
搜索
说明:调用此接口,传入搜索关键词可以搜索该音乐/专辑/歌手/歌单/用户,关键词可以多个,以空格隔开,如"周杰伦 搁浅"(不需要登录),搜索获取的 mp3url 不能直接用,可通过 /music/url
接口传入歌曲 id 获取具体的播放链接
必选参数:
keywords
: 关键词
可选参数:
limit
: 返回数量,默认为30
offset
: 偏移数量,用于分页,如: 如:(页数-1)*30, 其中 30 为 limit 的值,默认为0
type
: 搜索类型;默认为1即单曲,取值意义:
1: 单曲
10: 专辑
100: 歌手
1000: 歌单
1002: 用户
1004: MV
1006: 歌词
1009: 电台
接口地址:
/search
调用例子:
/search?keywords=海阔天空
搜索建议
说明:调用此接口,传入搜索关键词可获得搜索建议,搜索结果同时包含单曲,歌手,歌单,mv 信息
必选参数:
keywords
: 关键词
可选参数:
limit
: 返回数量,默认为30
offset
: 偏移数量,用于分页,如: 如:(页数-1)*30, 其中 30 为 limit 的值,默认为0
type
: 搜索类型;默认为1即单曲,取值意义:
1: 单曲
10: 专辑
100: 歌手
1000: 歌单
1002: 用户
1004: MV
1006: 歌词
1009: 电台
接口地址:
/search/suggest
调用例子:
/search/suggest?keywords=海阔天空
搜索多重匹配
说明:调用此接口,传入搜索关键词可获得搜索结果
必选参数:
keywords
: 关键词
接口地址:
/search/multimatch
调用例子:
/search/multimatch?keywords=海阔天空
收藏单曲到歌单
说明:调用此接口,传入音乐 id和 limit 参数, 可获得该专辑的所有评论(需要登录)
必选参数:
op
: 从歌单增加单曲为add,删除为 del
pid
: 歌单id
tracks
: 歌曲id
接口地址:
/playlist/tracks
调用例子:
/playlist/tracks?op=add&pid=24381616&tracks=347230
(对应把'海阔天空'添加到'我'的歌单,测试的时候请把这里的 pid换成你自己的)
获取歌词
说明:调用此接口,传入音乐 id 可获得对应音乐的歌词(不需要登录)
必选参数:
id
: 音乐 id
接口地址:
/lyric
调用例子:
/lyric?id=347230
歌曲评论
说明:调用此接口,传入音乐 id和 limit 参数, 可获得该音乐的所有评论(不需要登录)
必选参数:
id
: 音乐 id
可选参数:
limit
: 取出评论数量,默认为20
offset
: 偏移数量,用于分页,如:(评论页数-1)*20, 其中 20 为 limit 的值
接口地址:
/comment/music
调用例子:
/comment/music?id=186016&limit=1
对应晴天评论
专辑评论
说明:调用此接口,传入音乐 id和 limit 参数, 可获得该专辑的所有评论(不需要登录)
必选参数:
id
: 专辑 id
可选参数:
limit
: 取出评论数量,默认为20
offset
: 偏移数量,用于分页,如:(评论页数-1)*20, 其中 20 为 limit 的值
接口地址:
/comment/album
调用例子:
/comment/album?id=32311
歌单评论
说明:调用此接口,传入音乐 id和 limit 参数, 可获得该歌单的所有评论(不需要登录)
必选参数:
id
: 歌单 id
可选参数:
limit
: 取出评论数量,默认为20
offset
: 偏移数量,用于分页,如:(评论页数-1)*20, 其中 20 为 limit 的值
接口地址:
/comment/playlist
调用例子:
/comment/playlist?id=705123491
mv 评论
说明:调用此接口,传入音乐 id和 limit 参数, 可获得该 mv 的所有评论(不需要登录)
必选参数:
id
: mv id
可选参数:
limit
: 取出评论数量,默认为20
offset
: 偏移数量,用于分页,如:(评论页数-1)*20, 其中 20 为 limit 的值
接口地址:
/comment/mv
调用例子:
/comment/mv?id=5436712
电台节目评论
说明:调用此接口,传入音乐 id和 limit 参数, 可获得该 电台节目 的所有评论(不需要登录)
必选参数:
id
: 电台节目的 id
可选参数:
limit
: 取出评论数量,默认为20
offset
: 偏移数量,用于分页,如:(评论页数-1)*20, 其中 20 为 limit 的值
接口地址:
/comment/dj
调用例子:
/comment/dj?id=794062371
给评论点赞
说明:调用此接口,传入 type, 资源 id, 和评论id cid和 是否点赞参数 t 即可给对应评论点赞(需要登录)
必选参数:
id
: 资源 id, 如歌曲 id,mv id
cid
: 评论 id
t
:是否点赞,1为点赞,0为取消点赞
tpye
: 数字,资源类型,对应歌曲, mv, 专辑,歌单,电台
对应以下类型
0: 歌曲
1: mv
2: 歌单
3: 专辑
4: 电台
接口地址:
comment/like
调用例子:
/comment/like?id=186016&cid=4956438&t=1&type=0
对应给晴天最热门的那条评论点赞
banner
说明:调用此接口,可获取 banner(轮播图)数据
注:因参数未知,只能获取比较旧的数据,如果有知道参数的小伙伴,可提交 PR
接口地址:
/banner
调用例子:
/banner
获取歌曲详情
说明:调用此接口,传入音乐 id, 可获得歌曲详情
必选参数:
ids
: 音乐 id,如 ids=347230
接口地址:
/song/detail
调用例子:
/song/detail?ids=347230
获取专辑内容
说明:调用此接口,传入专辑 id,可获得专辑内容
必选参数:
id
: 专辑 id
接口地址:
/album
调用例子:
/album?id=32311
获取歌手单曲
说明:调用此接口,传入歌手 id,可获得歌手单曲
必选参数:
id
: 歌手 id,可由搜索接口获得
接口地址:
/artists
调用例子:
/artists?id=6452
获取歌手 mv
说明:调用此接口,传入歌手 id,可获得歌手 mv 信息,具体 mv 播放地址可调用/mv
传入此接口获得的mvid 来拿到,如:
/artist/mv?id=6452
,/mv?mvid=5461064
必选参数:
id
: 歌手 id,可由搜索接口获得
接口地址:
/artist/mv
调用例子:
/artist/mv?id=6452
获取歌手专辑
说明:调用此接口,传入歌手 id,可获得歌手专辑内容
必选参数:
id
: 歌手 id
可选参数:
limit
: 取出数量,默认为50
offset
: 偏移数量,用于分页,如:(页数-1)*50, 其中 50 为 limit 的值,默认为0
接口地址:
/artist/album
调用例子:
/artist/album?id=6452&limit=30
(周杰伦)
获取歌手描述
说明:调用此接口,传入歌手 id,可获得歌手描述
必选参数:
id
: 歌手 id
接口地址:
/artist/desc
调用例子:
/artist/desc?id=6452
(周杰伦)
获取相似歌手
说明:调用此接口,传入歌手 id,可获得相似歌手
必选参数:
id
: 歌手 id
接口地址:
/simi/artist
调用例子:
/simi/artist?id=6452
(对应和周杰伦相似歌手)
获取相似歌单
说明:调用此接口,传入歌曲 id,可获得相似歌单
必选参数:
id
: 歌曲 id
接口地址:
/simi/playlist
调用例子:
/simi/playlist?id=347230
(对应'光辉岁月'相似歌单)
相似 mv
说明:调用此接口,传入 mvid
可获取相似 mv
必选参数:
mvid
: mv id
接口地址:
/simi/mv
调用例子:
/simi/mv?mvid=5436712
获取相似音乐
说明:调用此接口,传入歌曲 id,可获得相似歌曲
必选参数:
id
: 歌曲 id
接口地址:
/simi/song
调用例子:
/simi/song?id=347230
(对应'光辉岁月'相似歌曲)
获取最近5个听了这首歌的用户
说明:调用此接口,传入歌曲 id,最近5个听了这首歌的用户
必选参数:
id
: 歌曲 id
接口地址:
/simi/user
调用例子:
/simi/user?id=347230
(对应'光辉岁月'相似歌曲)
获取每日推荐歌单
说明:调用此接口,可获得每日推荐歌单(需要登录)
接口地址:
/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
返回数据如下图:
歌单(网友精选碟)
说明:调用此接口,可获取网友精选碟歌单
可选参数:
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
接口地址:
/top/album
调用例子:
/top/album?offset=0&limit=30
返回数据如下图:
热门歌手
说明:调用此接口,可获取热门歌手数据
可选参数:
limit
: 取出数量,默认为50
offset
: 偏移数量,用于分页,如:(页数-1)*50, 其中 50 为 limit 的值,默认为0
接口地址:
/top/artists
调用例子:
/top/artists?offset=0&limit=30
返回数据如下图:
最新 mv
说明:调用此接口,可获取最新 mv
可选参数:
limit
: 取出数量,默认为 30
接口地址:
/mv/first
调用例子:
/mv/first?limit=10
推荐 mv
说明:调用此接口,可获取推荐 mv
接口地址:
/personalized/mv
调用例子:
/personalized/mv
推荐歌单
说明:调用此接口,可获取推荐歌单
接口地址:
/personalized
调用例子:
/personalized
推荐新音乐
说明:调用此接口,可获取推荐新音乐
接口地址:
/personalized/newsong
调用例子:
/personalized/newsong
推荐电台
说明:调用此接口,可获取推荐电台
接口地址:
/personalized/djprogram
调用例子:
/personalized/djprogram
推荐节目
说明:调用此接口,可获取推荐电台
接口地址:
/program/recommend
调用例子:
/program/recommend
独家放送
说明:调用此接口,可获取独家放送
接口地址:
/personalized/privatecontent
调用例子:
/personalized/privatecontent
mv 排行
说明:调用此接口,可获取 mv 排行
可选参数:
limit
: 取出数量,默认为 30
offset
: 偏移数量,用于分页,如:(页数-1)*30, 其中 30 为 limit 的值,默认为0
接口地址:
top/mv
调用例子:
top/mv?limit=10
获取 mv 数据
说明:调用此接口,传入 mvid (在搜索音乐的时候传 type=1004获得) ,可获取对应 MV 数据,数据包含 mv 名字,歌手,发布时间, mv 视频地址等数据,其中 mv 视频网易做了防盗链处理,不能直接播放,需要播放的话需要调用'播放 mv' 接口
必选参数:
mvid
: mv 的 id
接口地址:
/mv
调用例子:
/mv?mvid=5436712
返回数据如下图:
播放 mv
说明:调用此接口,传入 mv 地址,可播放 mv,也可将接口嵌入 video 标签使用,由于使用了 'pipe',进度条无法通过拖动进度条控制进度,如有解决方案可提出 PR 或者自行改造
可选参数:
url
: mv 的 地址
接口地址:
/mv/url
调用例子:
/mv/url?url=http://v4.music.126.net/20170422034915/c98eab2f5e2c85fc8de2ab3f0f8ed1c6/web/cloudmusic/MjQ3NDQ3MjUw/89a6a279dc2acfcd068b45ce72b1f560/533e4183a709699d566180ed0cd9abe9.mp4
如下图:
排行榜
说明:调用此接口,传入数字 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
返回数据如下图:
云盘
说明:登陆后调用此接口,可获取云盘数据,获取的数据没有对应 url,需要再调用一次 /music/url
获取 url
接口地址:
/user/cloud
调用例子:
/user/cloud
电台-推荐
说明:登陆后调用此接口,可获得推荐电台
接口地址:
/dj/recommend
调用例子:
/dj/recommend
电台-分类
说明:登陆后调用此接口,可获得电台类型
接口地址:
/dj/catelist
调用例子:
/dj/catelist
电台-分类推荐
说明:登陆后调用此接口,可获得推荐电台
必选参数:
type
: 电台类型,数字,可通过/dj/catelist
获取,对应关系为 id 对应 此接口的 type, name 对应类型意义
接口地址:
/dj/recommend/type
调用例子:
/dj/recommend/type?type=1
电台-订阅
说明:登陆后调用此接口,传入rid
,可订阅 dj,dj 的 rid
可通过搜索指定 type='1009'获取其 id,如/search?keywords=代码时间&type=1009
必选参数:
rid
: 电台 的 id
接口地址:
/dj/sub
调用例子:
/dj/sub?rid=336355127&t=1
(对应关注'代码时间')
/dj/sub?rid=336355127&t=0
(对应取消关注'代码时间')
电台-详情
说明:登陆后调用此接口,传入rid
,可获得对应电台的详情介绍
必选参数:
rid
: 电台 的 id
接口地址:
/dj/detail?rid=336355127
调用例子:
/dj/detail?rid=336355127
(对应'代码时间'的详情介绍)
电台-节目
说明:登陆后调用此接口,传入rid
,可查看对应电台的电台节目以及对应的 id, 需要注意的是这个接口返回的 mp3Url 已经无效,都为 null, 但是通过调用 /music/url
这个接口,传入节目 id 仍然能获取到节目音频,如 /music/url?id=478446370
获取代码时间的一个节目的音频
必选参数:
rid
: 电台 的 id
接口地址:
/dj/sub
调用例子:
/dj/program?rid=336355127
(对应'代码时间'的节目列表)
离线访问此文档
此文档同时也是 Progressive Web Apps(PWA), 加入了serviceWorker,可离线访问
关于此文档
此文档由 docsify 生成
docsify 是一个动态生成文档网站的工具。不同于 GitBook、Hexo 的地方是它不会生成将 .md 转成 .html 文件,所有转换工作都是在运行时进行。