开源软件名称:withlin/ncma
开源软件地址:https://github.com/withlin/ncma
开源编程语言:
Go
100.0%
开源软件介绍:ncma(NeteaseCloudMusicApi)
网易云音乐 Golang 版 API
灵感来自
disoul/electron-cloud-music
darknessomi/musicbox
sqaiyan/netmusic-node
Binaryify/NeteaseCloudMusicApi
工作原理
跨站请求伪造 (CSRF), 伪造请求头 , 调用官方 API
功能特性
- 登录
- 刷新登录
- 获取用户信息 , 歌单,收藏,mv, dj 数量
- 获取用户歌单
- 获取用户电台
- 获取用户关注列表
- 获取用户粉丝列表
- 获取用户动态
- 获取用户播放记录
- 获取精品歌单
- 获取歌单详情
- 搜索
- 搜索建议
- 获取歌词
- 歌曲评论
- 收藏单曲到歌单
- 专辑评论
- 歌单评论
- mv 评论
- 电台节目评论
- banner
- 获取歌曲详情
- 获取专辑内容
- 获取歌手单曲
- 获取歌手 mv
- 获取歌手专辑
- 获取歌手描述
- 获取相似歌手
- 获取相似歌单
- 相似 mv
- 获取相似音乐
- 获取最近 5 个听了这首歌的用户
- 获取每日推荐歌单
- 获取每日推荐歌曲
- 私人 FM
- 签到
- 喜欢音乐
- 垃圾桶
- 歌单 ( 网友精选碟 )
- 新碟上架
- 热门歌手
- 最新 mv
- 推荐 mv
- 推荐歌单
- 推荐新音乐
- 推荐电台
- 推荐节目
- 独家放送
- mv 排行
- 获取 mv 数据
- 播放 mv/视频
- 排行榜
- 歌手榜
- 云盘
- 电台 - 推荐
- 电台 - 分类
- 电台 - 分类推荐
- 电台 - 订阅
- 电台 - 详情
- 电台 - 节目
- 给评论点赞
- 获取动态
- 获取热搜
- 发送私信
- 发送私信歌单
- 新建歌单
- 收藏/取消收藏歌单
- 歌单分类
- 收藏的歌手列表
- 订阅的电台列表
- 相关歌单推荐
- 付费精选接口
- 音乐是否可用检查接口
- 登录状态
- 获取视频数据
- 发送/删除评论
- 热门评论
- 视频评论
- 退出登录
- 所有榜单
- 所有榜单内容摘要
- 收藏视频
- 收藏 MV
- 视频详情
- 相关视频
- 关注用户
- 新歌速递
- 喜欢音乐列表(无序)
- 收藏的 MV 列表
安装
$ git clone https://github.com/WithLin/ncma.git
$ dep init
运行
接口文档
调用前须知
!> 为使用方便,降低门槛,登录接口直接使用了 get 明文请求,请按实际需求对源码修改
!> 由于接口做了缓存处理 ( 缓存 2 分钟,不缓存数据极容易引起网易服务器高频ip错误 , 可在 app.js 设置 , 可能会导致登陆后获取不
到 cookie), 相同的 url 会在两分钟内只向网易服务器发一次请求 , 如果遇到不需要缓
存结果的接口 , 可在请求 url 后面加一个时间戳参数使 url 不同 , 例子 :
/simi/playlist?id=347230×tamp=1503019930000
!> 如果是跨域请求 , 请在所有请求带上 xhrFields: { withCredentials: true } 否则
可能会因为没带上 cookie 导致 301, 具体例子可看 public/test.html , 例子使用 jQuery, axios 版本也类似
!> 301 错误基本都是没登录就调用了需要登录的接口,如果登陆了还是提示 301, 基本都是缓存把数据缓存起来了,解决方法是等待 2 分钟或者重启服务重新登录后再调用接口
!> 部分接口如登录接口不能调用太频繁 , 否则可能会触发 503 错误或者 ip 高频错误 ,若需频繁调用 , 需要准备 IP 代理池 (更新:已加入缓存机制,但仍需注意).
!> 本项目仅供学习使用 , 文档可能会有缓存 , 如果文档版本和 github 上的版本不一致,请清除缓存再查看
!> 由于网易限制,此项目在国外服务器上使用会受到限制,如需解决 , 可使用大陆服务器或者使用代理 , 感谢 @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)~~
更新 : 此接口已经可以正常使用(2018.07.03)
必选参数 : email : 163 网易邮箱 password : 密码
接口地址 : /login
调用例子 : /[email protected]&password=yyy
返回数据如下图 :
完成登录后 , 会在浏览器保存一个 Cookies 用作登录凭证 , 大部分 API 都需要用到这个
Cookies
注意
调用登录接口的速度比调用其他接口慢 , 因为登录过程调用了加密算法
刷新登录
说明 : 调用此接口 , 可刷新登录状态
调用例子 : /login/refresh
退出登录
说明 : 调用此接口 , 可退出登录
调用例子 : /logout
登录状态
说明 : 调用此接口,可获取登录状态
接口地址 : /login/status
返回数据如下图:
获取用户详情
说明 : 登陆后调用此接口 , 传入用户 id, 可以获取用户详情
必选参数 : uid : 用户 id
接口地址 : /user/detail
调用例子 : /user/detail?uid=32953014
获取用户信息 , 歌单,收藏,mv, dj 数量
说明 : 登陆后调用此接口 , 可以获取用户信息
接口地址 : /user/subcount
调用例子 : /user/subcount
更新用户信息
说明 : 登陆后调用此接口 , 传入相关信息,可以更新用户信息
必选参数 :
gender: 性别 0:保密 1:男性 2:女性
birthday: 出生日期,时间戳 unix timestamp
nickname: 用户昵称
province: 省份id
city: 城市id
signature:用户签名
接口地址 : /user/subcount
调用例子 : /user/update/?gender=0&signature=测试签名&city=440300&nickname=binary&birthday=1525918298004&province=440000
获取用户歌单
说明 : 登陆后调用此接口 , 传入用户 id, 可以获取用户歌单
必选参数 : uid : 用户 id
接口地址 : /user/playlist
调用例子 : /user/playlist?uid=32953014
返回数据如下图 :
更新歌单
说明 : 登陆后调用此接口,可以更新用户歌单
参数:
id:歌单id
name:歌单名字=
desc:歌单描述
tags:歌单tag
接口地址 : /playlist/update
调用例子 : /playlist/update/?id=24381616&name=新歌单&desc=描述&tags=学习
发送私信
说明 : 登陆后调用此接口 , 传入用户 id 和要发送的信息, 可以发送私信,返回内容为历史私信,包含带歌单的私信信息(注:不能发送私信给自己)
必选参数 :
user_ids : 用户 id,多个需用逗号隔开
msg : 要发送的信息
接口地址 : /send/text
调用例子 : /send/text?user_ids=32953014&msg=test ,/send/text?user_ids=32953014,475625142&msg=test
返回数据如下图:
发送私信(带歌单)
说明 : 登陆后调用此接口 , 传入用户 id 和要发送的信息和歌单 id, 可以发送带歌单的私信(注:不能发送重复的歌单)
必选参数 :
user_ids : 用户 id,多个需用逗号隔开
msg : 要发送的信息
接口地址 : /send/playlist
调用例子 : /send/playlist?msg=test&user_ids=475625142&playlist=705123491 ,/send/playlist?msg=test2&user_ids=475625142,32953014&playlist=705123493
返回数据如下图:
获取用户电台
说明 : 登陆后调用此接口 , 传入用户 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, 和操作 t,可关注/取消关注用户
必选参数 :
id : 用户 id
t : 1 为关注,其他为取消关注
接口地址 : /follow
调用例子 : /follow?id=32953014&t=1
获取用户播放记录
说明 : 登陆后调用此接口 , 传入用户 id, 可获取用户播放记录
必选参数 : uid : 用户 id
可选参数 : type : type=1 时只返回 weekData, type=0 时返回 allData
接口地址 : /user/record
调用例子 : /user/record?uid=32953014&type=1
获取动态消息
说明 : 调用此接口 , 可获取各种动态 , 对应网页版网易云,朋友界面里的各种动态消息
,如分享的视频,音乐,照片等!
必选参数 : 未知
接口地址 : /event
调用例子 : /event
歌手分类列表
说明 : 调用此接口,可获取歌手分类列表
必选参数 : cat : 即 category Code,歌手类型,默认 1001,返回华语男歌手数据
可选参数 :
limit : 返回数量 , 默认为 30
offset : 偏移数量,用于分页 , 如
: 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0
initial : 按首字母索引查找参数,如 /artist/list?cat=1001&initial=b 返回内容将以 name 字段开头为 b 或者拼音开头为 b 为顺序排列
category Code 取值:
入驻歌手 5001
华语男歌手 1001
华语女歌手 1002
华语组合/乐队 1003
欧美男歌手 2001
欧美女歌手 2002
欧美组合/乐队 2003
日本男歌手 6001
日本女歌手 6002
日本组合/乐队 6003
韩国男歌手 7001
韩国女歌手 7002
韩国组合/乐队 7003
其他男歌手 4001
其他女歌手 4002
其他组合/乐队 4003
接口地址 : /artist/list
调用例子 : /artist/list?cat=1001
返回数据如下图:
收藏/取消收藏歌手
说明 : 调用此接口,可收藏歌手
必选参数 :
artistId : 歌手 id
t :操作,1 为收藏,其他为取消收藏
接口地址 : /artist/sub
调用例子 : /artist/sub?id=6452&t=1
收藏的歌手列表
说明 : 调用此接口,可获取收藏的歌手列表
接口地址 : /artist/sublist
调用例子 : /artist/sublist
收藏视频
说明 : 调用此接口,可收藏视频
必选参数 :
id : 视频 id
t : 1 为收藏,其他为取消收藏
接口地址 : /video/sub
调用例子 : /video/sub
收藏 MV
说明 : 调用此接口,可收藏 MV
必选参数 :
id : MV id
t : 1 为收藏,其他为取消收藏
接口地址 : /mv/sub
调用例子 : /mv/sub
收藏的 MV 列表
说明 : 调用此接口,可获取收藏的 MV 列表
接口地址 : /mv/sublist
调用例子 : /mv/sublist
歌单分类
说明 : 调用此接口,可获取歌单分类,包含 category 信息
接口地址 : /playlist/catlist
调用例子 : /playlist/catlist
热门歌单分类
说明 : 调用此接口,可获取歌单分类,包含 category 信息
接口地址 : /playlist/hot
调用例子 : /playlist/hot
歌单 ( 网友精选碟 )
说明 : 调用此接口 , 可获取网友精选碟歌单
可选参数 : order : 可选值为 'new' 和 'hot', 分别对应最新和最热 , 默认为
'hot'
cat :cat : tag, 比如 " 华语 "、" 古风 " 、" 欧美 "、" 流行 ", 默认为
"全部",可从歌单分类接口获取(/playlist/catlist)
接口地址 : /top/playlist
调用例子 : /top/playlist?limit=10&order=new
返回数据如下图 :
获取精品歌单
说明 : 调用此接口 , 可获取精品歌单
可选参数 : cat : tag, 比如 " 华语 "、" 古风 " 、" 欧美 "、" 流行 ", 默认为
"全部",可从歌单分类接口获取(/playlist/catlist)
limit : 取出歌单数量 , 默认为 20
before : 分页参数,取上一页最后一个歌单的 updateTime 获取下一页数据
接口地址 : /top/playlist/highquality
调用例子 : http://localhost:3000/top/playlist/highquality?before=1503639064232&limit=3
相关歌单推荐
说明 : 调用此接口,传入歌单 id 可获取相关歌单(对应页面 https://music.163.com/#/playlist?id=1)
必选参数 : id : 歌单 id
接口地址 : /related/playlist
调用例子 : /related/playlist?id=1
获取歌单详情
说明 : 歌单能看到歌单名字 , 但看不到具体歌单内容 , 调用此接口 , 传入歌单 id, 可
以获取对应歌单内的所有的音乐
必选参数 : id : 歌单 id
可选参数 : s : 歌单最近的 s 个收藏者
接口地址 : /playlist/detail
调用例子 : /playlist/detail?id=24381616
返回数据如下图 :
获取音乐 url
说明 : 使用歌单详情接口后 , 能得到的音乐的 id, 但不能得到的音乐 url, 调用此接口
, 传入的音乐 id( 可多个 , 用逗号隔开 ), 可以获取对应的音乐的 url( 不需要登录 )
注 : 部分用户反馈获取的 url 会 403,hwaphon找到的
解决方案是当获取到音乐的 id 后,将
https://music.163.com/song/media/outer/url?id=id.mp3 以 src 赋予 Audio 即可播放
必选参数 : id : 音乐 id
可选参数 : br : 码率,默认设置了 999000 即最大码率,如果要 320k 则可设置为 320000,其他类推
接口地址 : /song/url
调用例子 : /song/url?id=33894312 /song/url?id=405998841,33894312
返回数据如下图 :
音乐是否可用
说明: 调用此接口,传入歌曲 id, 可获取音乐是否可用,返回 { success: true, message: 'ok' } 或者 { success: false, message: '亲爱的,暂无版权' }
必选参数 : id : 歌曲 id
可选参数 : br : 码率,默认设置了 999000 即最大码率,如果要 320k 则可设置为 320000,其他类推
接口地址 : /check/music
调用例子 : /check/music?id=33894312
搜索
说明 : 调用此接口 , 传入搜索关键词可以搜索该音乐 / 专辑 / 歌手 / 歌单 / 用户 ,
关键词可以多个 , 以空格隔开 , 如 " 周杰伦 搁浅 "( 不需要登录 ), 搜索获取的
mp3url 不能直接用 , 可通过 /song/url 接口传入歌曲 id 获取具体的播放链接
必选参数 : keywords : 关键词
可选参数 : limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如
: 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0
type : 搜索类型;默认为 1 即单曲 , 取值意义 : 1: 单曲, 10: 专辑, 100: 歌手, 1000:
歌单, 1002: 用户, 1004: MV, 1006: 歌词, 1009: 电台, 1014: 视频
接口地址 : /search
调用例子 : /search?keywords= 海阔天空
返回数据如下图 :
热搜
说明 : 调用此接口,可获取热门搜索列表
接口地址 : /search/hot
调用例子 : /search/hot
搜索建议
说明 : 调用此接口 , 传入搜索关键词可获得搜索建议 , 搜索结果同时包含单曲 , 歌手 ,
歌单 ,mv 信息
必选参数 : keywords : 关键词
接口地址 : /search/suggest
调用例子 : /search/suggest?keywords= 海阔天空
搜索多重匹配
说明 : 调用此接口 , 传入搜索关键词可获得搜索结果
必选参数 : keywords : 关键词
接口地址 : /search/multimatch
调用例子 : /search/multimatch?keywords= 海阔天空
新建歌单
说明 : 调用此接口 , 传入歌单名字可新建歌单
必选参数 : name : 歌单名
接口地址 : /playlist/create
调用例子 : /playlist/create?name=测试歌单
返回数据如下图:
收藏/取消收藏歌单
说明 : 调用此接口 , 传入类型和歌单 id 可收藏歌单或者取消收藏歌单
必选参数 :
t : 类型,1:收藏,2:取消收藏
id : 歌单 id
接口地址 : /playlist/subscribe
调用例子 : /playlist/subscribe?t=1&id=106697785 /playlist/subscribe?t=2&id=106697785
返回数据如下图:
对歌单添加或删除歌曲
说明 : 调用此接口 , 可以添加歌曲到歌单或者从歌单删除某首歌曲 ( 需要登录 )
必选参数 :
op : 从歌单增加单曲为 add, 删除为 del
pid : 歌单 id
tracks : 歌曲 id,可多个,用逗号隔开
接口地址 : /playlist/tracks
调用例子 : /playlist/tr |
请发表评论