该项目会以 React 全家桶 (会使用 16.8 最新 API 及 hooks) 以及 mobx 数据流方案为基础打造的一款高质量的移动端音乐类 WebApp 。javascript
涉及的技术栈主要有:前端
此篇为第一篇,主要是 网易云 EggJs API 的实现。后面的数据都会源于网易云官方的数据。 网易云音乐 EggJs 版 API,github 地址,接口正在持续更新中,目前已经支持网易云音乐中的大部分接口,包含登陆注册。java
跨站请求伪造 (CSRF), 伪造请求头 , 调用官方 API。react
本项目不提供线上 demo,请不要轻易信任使用他人提供的公开服务,以避免发生安全问题,泄露本身的帐号和密码 webpack
部分接口如登陆接口不能调用太频繁 , 不然可能会触发 503 错误或者 ip 高频错误 ,若需频繁调用 , 须要准备 IP 代理池. ios
本项目仅供学习使用,请尊重版权,请勿利用此项目从事商业行为 git
这里简要提一下 EggJs 的中间件。Egg 是基于 Koa 实现的,因此 Egg 的中间件形式和 Koa 的中间件形式是同样的,都是基于洋葱圈模型。github
/** * 处理cookie */ module.exports = () => { return async function (ctx, next) { const { response } = ctx; await next(); response.append('Set-Cookie', response.body && response.body.cookie); }; }; 复制代码
module.exports = () => { return async function (ctx, next) { try { await next(); } catch (error) { ctx.body = error.body; ctx.status = error.status; } }; }; 复制代码
特别声明,接口示范使用如下格式 web
Method /xxx/:xxxx/xxx @body: { "***": "**********", "**"?: "*********" // ?表明可选 } @param: { "***": "********" } @query: { "***": "***********", "***"?: "**********" } 复制代码
参数统一声明 limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 当前页码 -1)*30, 其中 30 为 limit 的值 , 默认为 0 axios
必选参数 :
phone: 手机号码
password: 密码
复制代码
接口地址 :
/login/cellphone
复制代码
可选参数 :
rememberLogin: 30天免登陆,默认false 复制代码
调用例子 :
POST /login/cellphone @body: { phone: "**********", password: "*****", rememberLogin?: true } 复制代码
必选参数 :
email: 手机号码
password: 密码
复制代码
接口地址 :
/login/email
复制代码
可选参数 :
rememberLogin: 30天免登陆,默认false 复制代码
调用例子 :
POST /login/email @body: { email: "**********", password: "*****", rememberLogin: true } 复制代码
必选参数 :
nickname: 昵称
复制代码
接口地址 :
/login/init/profile
复制代码
调用例子 :
POST /login/init/profile @body { nickname: "**********" } 复制代码
必选参数 :
cellphone: 手机号码
复制代码
接口地址 :
/login/sms/captcha/send
复制代码
可选参数 :
ctcode: 国家区号,默认86即中国
复制代码
调用例子 :
POST /login/sms/captcha/send // body { ctcode?: "86", cellphone: "*******" } 复制代码
必选参数 :
cellphone: 手机号码
captcha: 验证码
复制代码
接口地址 :
/login/sms/captcha/verify
复制代码
可选参数 :
ctcode: 国家区号,默认86即中国
复制代码
调用例子 :
POST /login/sms/captcha/verify // body { ctcode?: "86", cellphone: "*******", captcha: "****" } 复制代码
必选参数 :
cellphone: 手机号码
复制代码
接口地址 :
/login/cellphone/check/exist
复制代码
可选参数 :
countrycode: 国家码,用于国外手机号登录,例如美国传入:1
复制代码
调用例子 :
POST /login/cellphone/check/exist // body { countrycode?: "86", cellphone: "*******" } 复制代码
接口地址 :
/login/refresh
调用例子 :
GET / login / refresh;
复制代码
接口地址 :
/login/status
复制代码
调用例子 :
GET / login / status;
复制代码
接口地址 :
/logout 复制代码
调用例子 :
GET / logout;
复制代码
说明 : 登录后调用此接口,可获取用户建立的电台
必选参数 :
无
复制代码
接口地址 :
/user/audios
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / audios;
复制代码
说明 : 登录后调用此接口,可删除云盘歌曲
必选参数 :
ids: 歌曲id数组
复制代码
接口地址 :
/user/cloud/song/del
复制代码
可选参数 :
无
复制代码
调用例子 :
DELETE /user/cloud/song/del @body { ids: ["****","****"] } 复制代码
说明: 登录后调用此接口,传入云盘歌曲 ids,可获取云盘数据详情
必选参数 :
ids: 多个歌曲id用","分隔 复制代码
接口地址 :
/user/cloud/songs/info
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /user/cloud/songs/info @query { ids: "***,***" } 复制代码
说明: 登录后调用此接口 , 可获取云盘数据 , 获取的数据没有对应 url, 须要再调用一 次 /song/url 获取 url。
必选参数 :
无
复制代码
接口地址 :
/user/cloud
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 当前页码 -1)*30, 其中 30 为 limit 的值 , 默认为 0 复制代码
调用例子 :
GET /user/cloud // query { limit?: 100, offset?: 1 } 复制代码
说明 : 登录后调用此接口,能够获取用户详情
必选参数 :
无
复制代码
接口地址 :
/user/info
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / info;
复制代码
说明 : 登录后调用此接口,能够获取用户电台
必选参数 :
cellphone: 手机号码
复制代码
接口地址 :
无
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / djs;
复制代码
说明 : 登录后调用此接口,能够获取用户动态
必选参数 :
无
复制代码
接口地址 :
/user/event
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 lasttime : 返回数据的 lasttime ,默认-1,传入上一次返回结果的 lasttime,将会返回下一页的数据 复制代码
调用例子 :
GET /user/event @query { limit?: 30, lasttime: -1 } 复制代码
说明 : 登录后调用此接口,能够获取用户粉丝列表
必选参数 :
无
复制代码
接口地址 :
/user/followeds
复制代码
可选参数 :
可选参数 : limit : 返回数量 , 默认为 30 lasttime : 返回数据的 lasttime ,默认-1,传入上一次返回结果的 lasttime,将会返回下一页的数据 复制代码
调用例子 :
GET /user/followeds @query { limit?: 30, lasttime: -1 } 复制代码
说明 : 登录后调用此接口,能够获取用户关注列表
必选参数 :
无
复制代码
接口地址 :
/user/follows
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 当前页码 -1)*30, 其中 30 为 limit 的值 , 默认为 0 复制代码
调用例子 :
GET /user/follows @query { limit?: 30, offset?: 1 } 复制代码
说明 : 登录后调用此接口,能够获取用户歌单
必选参数 :
无
复制代码
接口地址 :
/user/playlist
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 当前页码 -1)*30, 其中 30 为 limit 的值 , 默认为 0 复制代码
调用例子 :
GET /user/playlist @query { limit?: 30, offset?: 1 } 复制代码
说明:登录后调用此接口,可获取用户播放记录
必选参数 :
无
复制代码
接口地址 :
/user/playrecord
复制代码
可选参数 :
type: type=1 时只返回周数据, type=0 时返回全部数据 复制代码
调用例子 :
GET /user/playrecord @query { type?: 0 } 复制代码
说明:登录后调用此接口,可获取用户收藏计数
必选参数 :
无
复制代码
接口地址 :
/user/subcount
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / subcount;
复制代码
说明 : 登录后调用此接口,传入相关信息,能够更新用户信息
必选参数 :
gender: 性别 0:保密 1:男性 2:女性
birthday: 出生日期,时间戳 unix timestamp
nickname: 用户昵称
province: 省份id // 能够调用/custom/citylist接口获取
city: 城市id // 能够调用/custom/citylist接口获取
signature:用户签名
复制代码
接口地址 :
/user/info
复制代码
可选参数 :
无
复制代码
调用例子 :
PUT /user/info // body { gender: 0 birthday: 134567788 nickname: "***" province: 400022 city: 2344554 signature:"****" } 复制代码
说明 : 登录后调用此接口,能够获取用户操做记录
必选参数 :
无
复制代码
接口地址 :
/user/logs
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / logs;
复制代码
说明 : 登录后调用此接口,能够获取用户 FM
必选参数 :
无
复制代码
接口地址 :
/user/fm
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / fm;
复制代码
说明 : 调用此接口 , 可获取推荐电台
必选参数 :
无
复制代码
接口地址 :
/user/rec/djprogram
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / rec / djprogram;
复制代码
说明 : 调用此接口 , 可获取推荐 MV
必选参数 :
无
复制代码
接口地址 :
/user/rec/mv
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / rec / mv;
复制代码
说明 : 调用此接口 , 可获取推荐新歌
必选参数 :
无
复制代码
接口地址 :
/user/rec/newsong
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / rec / newsong;
复制代码
说明 : 调用此接口 , 可获取独家放送
必选参数 :
无
复制代码
接口地址 :
/user/privatecontent
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / user / privatecontent;
复制代码
说明 : 调用此接口 , 可获取独独家推荐歌单
必选参数 :
无
复制代码
接口地址 :
/user/rec/playlist
复制代码
可选参数 :
limit:返回数量 , 默认为 30 复制代码
调用例子 :
GET /user/rec/playlist @query { limit?: 30 } 复制代码
说明 : 调用此接口 , 可获取专辑动态信息
必选参数 :
albumId: 专辑ID
复制代码
接口地址 :
/album/:albumId/detail/dynamic
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /album/:albumId/detail/dynamic @param { albumId: 12244 } 复制代码
说明 : 调用此接口 , 可获取最新专辑
必选参数 :
无
复制代码
接口地址 :
/album/latest
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / album / latest;
复制代码
说明 : 调用此接口 , 可收藏|取消收藏 专辑
必选参数 :
albumId:专辑ID actionType: 操做类型,收藏:"sub" ,取消收藏:"unsub" 复制代码
接口地址 :
/album/:albumId/sub/:actionType
复制代码
可选参数 :
limit:返回数量 , 默认为 30 复制代码
调用例子 :
POST /album/:albumId/sub/:actionType @param { albumId: "****", actionType: "sub" } 复制代码
说明 : 调用此接口 , 可获取收藏专辑列表
必选参数 :
无
复制代码
接口地址 :
/album/sublist
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 当前页码 -1)*30, 其中 30 为 limit 的值 , 复制代码
调用例子 :
GET /album/sublist @query { offset?: 0, limit?: 30 } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
albumId: 专辑ID
复制代码
接口地址 :
/album/:albumId/info
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /album/:albumId/info @param { albumId: "****" } 复制代码
说明 : 调用此接口 , 可获取歌手列表
必选参数 :
无
复制代码
接口地址 :
/artist/list
复制代码
可选参数 :
调用例子 :
GET /artist/list @param { limit?: 30, offset?: 1 categoryCode: 1001, initial: 'a' } 复制代码
说明 : 调用此接口 , 可获取歌手简介
必选参数 :
artistId: 歌手ID
复制代码
接口地址 :
/artist/:artistId/brief
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /artist/:artistId/brief @param { artistId: "****" } 复制代码
说明 : 调用此接口 , 可获取歌手信息
必选参数 :
artistId: 歌手ID
复制代码
接口地址 :
/artist/:artistId/info
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /artist/:artistId/info @param { artistId: "****" } 复制代码
说明 : 调用此接口 , 可获取歌手专辑
必选参数 :
artistId: 歌手ID
复制代码
接口地址 :
/artist/:artistId/albums
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /artist/:artistId/albums @param { artistId: "****" } @query { limit?: 30, offset: 1 } 复制代码
说明 : 调用此接口 , 可获取歌手 MV
必选参数 :
artistId: 歌手ID
复制代码
接口地址 :
/artist/:artistId/mv
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /artist/:artistId/mv @param { artistId: "****" } @query { limit?: 30, offset: 1 } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
artistId: 歌手ID
复制代码
接口地址 :
/artist/:artistId/top/song
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /artist/:artistId/top/song @param { artistId: "****" } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
artistId: 歌手ID actionType: 操做类型,收藏:"sub",取消收藏:"unsub" 复制代码
接口地址 :
/artist/:artistId/sub/:actionType
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /artist/:artistId/sub/:actionType @param { artistId: "****", actionType: "sub" } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
无
复制代码
接口地址 :
/artist/sublist
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /artist/sublist @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取资源评论
必选参数 :
type: 资源类型,可选: 专辑:"album", 电台:"dj" 歌曲:"music", MV:"mv", 歌单:"playlist", 视频:"video", 动态:"event" resourceId: 资源ID 复制代码
接口地址 :
/comment/resource/:resourceId/comments
复制代码
可选参数 :
limit: 取出评论数量 , 默认为 20 offset: 偏移数量 , 用于分页 , 如 :( 评论页数 -1)*20, 其中 20 为 limit 的值 beforeTime: 分页参数,取上一页最后一项的time,获取下一页数据(获取超过5000条评论的时候须要用到) 复制代码
调用例子 :
GET /comment/resource/:resourceId/hot/comments @param { resourceId: "***" } @query { limit?: 30, offset?: 1, type: "music", beforeTime: 0 } 复制代码
说明 : 调用此接口 , 可获取资源热门评论
必选参数 :
type: 资源类型,可选: 专辑:"album", 电台:"dj" 歌曲:"music", MV:"mv", 歌单:"playlist", 视频:"video", 动态:"event" resourceId: 资源ID 复制代码
接口地址 :
/comment/resource/:resourceId/hot/comments
复制代码
可选参数 :
limit: 取出评论数量 , 默认为 20 offset: 偏移数量 , 用于分页 , 如 :( 评论页数 -1)*20, 其中 20 为 limit 的值 beforeTime: 分页参数,取上一页最后一项的time,获取下一页数据(获取超过5000条评论的时候须要用到) 复制代码
调用例子 :
GET /comment/resource/:resourceId/hot/comments @param { resourceId: "***" } @query { limit?: 30, offset?: 1, type: "music", beforeTime: 0 } 复制代码
说明 : 调用此接口 , 可获取资源云村热评
必选参数 :
无
复制代码
接口地址 :
/comment/hotwall/list
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / comment / hotwall / list;
复制代码
说明 : 调用此接口 , 可点赞 | 取消点赞 评论
必选参数 :
resourceId: 资源ID actionType: 操做类型,点赞:"like",取消点赞:"unlike" commentId: 评论ID type: 资源类型,可选: 专辑:"album", 电台:"dj" 歌曲:"music", MV:"mv", 歌单:"playlist", 视频:"video", 动态:"event" 复制代码
接口地址 :
/comment/resource/:resourceId/like/:actionType
复制代码
可选参数 :
无
复制代码
调用例子 :
POST /comment/resource/:resourceId/like/:actionType @param { resourceId: "***", actionType: "like" } @body { commentId: "***", type: "music" } 复制代码
说明 : 调用此接口 , 可发表资源评论
必选参数 :
resourceId: 资源ID content: 评论内容 type: 资源类型,可选: 专辑:"album", 电台:"dj" 歌曲:"music", MV:"mv", 歌单:"playlist", 视频:"video", 动态:"event" 复制代码
接口地址 :
/comment/resource/:resourceId/comment/send
复制代码
可选参数 :
无
复制代码
调用例子 :
POST /comment/resource/:resourceId/comment/send @body { resourceId: "***", content: "***", type: "music" } 复制代码
说明 : 调用此接口 , 可删除资源评论
必选参数 :
resourceId: 资源ID commentId: 评论ID type: 资源类型,可选: 专辑:"album", 电台:"dj" 歌曲:"music", MV:"mv", 歌单:"playlist", 视频:"video", 动态:"event" 复制代码
接口地址 :
/comment/resource/:resourceId/comment
复制代码
可选参数 :
无
复制代码
调用例子 :
DELETE /comment/resource/:resourceId/comment @param { resourceId: "***" } @body { commentId: "***", type: "music" } 复制代码
说明 : 调用此接口 , 可回复资源评论
必选参数 :
resourceId: 资源ID commentId: 评论ID content: 评论内容 type: 资源类型,可选: 专辑:"album", 电台:"dj" 歌曲:"music", MV:"mv", 歌单:"playlist", 视频:"video", 动态:"event" 复制代码
接口地址 :
/comment/resource/:resourceId/comment/:commentId/reply
复制代码
可选参数 :
无
复制代码
调用例子 :
POST /comment/resource/:resourceId/comment/:commentId/reply @param { resourceId: "***", commentId: "***" } @body { content: "****", type: "music" } 复制代码
说明 : 调用此接口 , 可获取 MV 列表
必选参数 :
无
复制代码
接口地址 :
/mv/list
复制代码
可选参数 :
调用例子 :
GET /mv/list @query { area?: 0, type?: 0, order?: 0, offset?: 1, limit?: 30, } 复制代码
说明 : 调用此接口 , 可获取 MV 详
必选参数 :
mvId: MV ID
复制代码
接口地址 :
/mv/:mvId/detail
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /mv/:mvId/detail @param { mvId: "***" } 复制代码
说明 : 调用此接口 , 可获取网易出品 MV
必选参数 :
无
复制代码
接口地址 :
/mv/exclusive/rcmd
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /mv/exclusive/rcmd @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取最新 MV
必选参数 :
无
复制代码
接口地址 :
/mv/latest
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /mv/latest @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可收藏 | 取消收藏 MV
必选参数 :
mvId: MV ID actionType: 操做类型,收藏:"sub",取消收藏:"unsub" 复制代码
接口地址 :
/mv/:mvId/sub/:actionType
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /mv/:mvId/sub/:actionType @param { mvId: "***", actionType: "sub" } 复制代码
说明 : 调用此接口 , 获取 MV 收藏列表
必选参数 :
无
复制代码
接口地址 :
/mv/sublist
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /mv/sublist @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
mvId: MV ID
resolution: 分辨率,默认1080
复制代码
接口地址 :
/mv/url
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /mv/url @query { mvId: "***", resolution?: 1080 } 复制代码
说明 : 调用此接口 , 可获取电台 banner
必选参数 :
无
复制代码
接口地址 :
/dj/banner
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / dj / banner;
复制代码
说明 : 调用此接口 , 可获取电台非热门分类
必选参数 :
无
复制代码
接口地址 :
/dj/category/excludehot
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / dj / category / excludehot;
复制代码
说明 : 调用此接口 , 可获取电台推荐分类
必选参数 :
无
复制代码
接口地址 :
/dj/category/rec
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / dj / category / rec;
复制代码
说明 : 调用此接口 , 可获取电台分类列表
必选参数 :
无
复制代码
接口地址 :
/dj/category/list
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / dj / category / list;
复制代码
说明 : 调用此接口 , 可获取热门电台
必选参数 :
无
复制代码
接口地址 :
/dj/hot
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/hot @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取付费电台
必选参数 :
无
复制代码
接口地址 :
/dj/paygift
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/paygift @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取电台 24 小时节目榜
必选参数 :
无
复制代码
接口地址 :
/dj/program/toplist/hours
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 复制代码
调用例子 :
GET /dj/program/toplist/hours @query { limit?: 30 } 复制代码
说明 : 调用此接口 , 可获取电台节目榜单
必选参数 :
无
复制代码
接口地址 :
/dj/program/toplist
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/program/toplist @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取电台节目列表
必选参数 :
djId: 电台ID
复制代码
接口地址 :
/dj/:djId/program/list
复制代码
可选参数 :
asc: 排序方式,默认为 false (新 => 老 ) 设置 true 可改成 老 => 新 limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/:djId/program/list @param { djId: "***" } @query { asc?: false, limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取分类热门电台
必选参数 :
categoryId: 分类ID
复制代码
接口地址 :
/dj/category/:categoryId/djs
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/category/:categoryId/djs @param { categoryId: "***" } @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取精选分类电台列表
必选参数 :
typeId: 类型ID,数字 有声书: 10001, 知识技能: 453050, 商业财经: 453051, 人文历史: 11, 外语世界: 13, 亲子宝贝: 14, 创做|翻唱: 2001, 音乐故事: 2, 3D|电子: 10002, 相声曲艺: 8, 情感调频: 3, 美文读物: 6, 脱口秀: 5, 广播剧: 7, 二次元: 3001, 明星作主播: 1, 娱乐|影视: 4, 科技科学: 453052, 校园|教育: 4001, 旅途|城市: 12, 复制代码
接口地址 :
/dj/type/:typeId/rec/djs 复制代码
可选参数 :
无
复制代码
调用例子 :
GET /dj/type/:typeId/rec/djs @param { typeId: 1 } 复制代码
说明 : 调用此接口 , 可获取推荐电台
必选参数 :
无
复制代码
接口地址 :
/dj/rec/djs
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET / dj / rec / djs;
复制代码
说明 : 调用此接口 , 订阅 | 取消订阅 电台
必选参数 :
djId: 电台ID actionType: 操做类型,订阅:"sub" 取消订阅:"unsub" 复制代码
接口地址 :
/dj/:djId/sub/:actionType
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
POST /dj/:djId/sub/:actionType @param { djId: "***", actionType: "sub" } 复制代码
说明 : 调用此接口 , 可获取订阅电台列表
必选参数 :
无
复制代码
接口地址 :
/dj/sublist
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/sublist @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取今日优选电台
必选参数 :
无
复制代码
接口地址 :
/dj/totay/perfered
复制代码
可选参数 :
offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/totay/perfered @query { offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取 24 小时榜电台
必选参数 :
无
复制代码
接口地址 :
/dj/toplist/hours
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 复制代码
调用例子 :
GET /dj/toplist/hours @query { limit?: 30 复制代码
说明 : 调用此接口 , 可获取电台新人榜
必选参数 :
无
复制代码
接口地址 :
/dj/toplist/newcomer
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/toplist/newcomer @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可付费精品
必选参数 :
无
复制代码
接口地址 :
/dj/toplist/pay
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 复制代码
调用例子 :
GET /dj/toplist/pay @query { limit?: 30 } 复制代码
说明 : 调用此接口 , 可获取流行热榜
必选参数 :
无
复制代码
接口地址 :
/dj/toplist/popular
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 复制代码
调用例子 :
GET /dj/toplist/popular @query { limit?: 30 } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
无
复制代码
接口地址 :
/dj/toplist
复制代码
可选参数 :
type: 榜单类型, 0 为新晋电台榜,1 为热门电台榜,默认为0 limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /dj/toplist @query { type: 0, limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取电台节目详情
必选参数 :
djId: 电台ID
复制代码
接口地址 :
/dj/:djId/program/detail
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /dj/:djId/program/detail @param { djId: "***" } 复制代码
说明 : 调用此接口 , 可获取电台详情
必选参数 :
djId: 电台ID
复制代码
接口地址 :
/dj/:djId/detail
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /dj/:djId/detail @param { djId: "***" } 复制代码
说明 : 调用此接口 , 可获取专辑排行榜
必选参数 :
无
复制代码
接口地址 :
/top/album
复制代码
可选参数 :
area: 'ALL' | 'ZH' | 'EA' | 'KR' | 'JP' limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /top/album @query { area?: 'ZH', limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 获取热门歌手
必选参数 :
无
复制代码
接口地址 :
/top/artist
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /top/artist @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 获取新歌列表
必选参数 :
接口地址 :
/top/list
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /top/list @query { type: 0 } 复制代码
说明 : 调用此接口 , 获取 MV 排行榜
必选参数 :
无
复制代码
接口地址 :
/top/mv
复制代码
可选参数 :
调用例子 :
GET /top/mv @query { area: '华语', limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 获取高质量歌单排行榜
必选参数 :
无
复制代码
接口地址 :
/top/quality/playlist
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 lasttime: 分页参数,取上一页最后一个歌单的 updateTime 获取下一页数据,默认为0 category: 分类 可选类型: 所有,华语,欧美,韩语,日语,粤语,小语种,运动,ACG,影视原声,流行,摇滚,后摇,古风,民谣,轻音乐,电子,器乐,说唱,古典,爵士 复制代码
调用例子 :
GET /top/quality/playlist @query { category: '华语' limit?: 30, lasttime: 0, } 复制代码
说明 : 调用此接口 , 获取歌单排行榜
必选参数 :
无
复制代码
接口地址 :
/top/playlist
复制代码
可选参数 :
order: 可选值为 'new' 和 'hot', 分别对应最新和最热 , 默认为 'hot' category: ,分类," 华语 "、" 古风 " 、" 欧美 "、" 流行 ", 默认为 "所有",可从歌单分类接口获取(/playlist/category/list) limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /top/playlist @query { order?: 'new', category?: '古风' limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 可获取新歌榜单
必选参数 :
无
复制代码
接口地址 :
top/songs
复制代码
可选参数 :
area:'所有' | '华语' | '欧美' | '日本' | '韩国 复制代码
调用例子 :
GET /top/songs @query { area: '华语' } 复制代码
说明 : 调用此接口 , 获取歌手榜
必选参数 :
无
复制代码
接口地址 :
/toplist/artist
复制代码
可选参数 :
type: 数字,可选1-4 1: '华语', 2: '欧美', 3: '日本', 4: '韩国', 复制代码
调用例子 :
GET /toplist/artist @query { type: 2 } 复制代码
说明 : 调用此接口 , 获取全部榜单内容摘要
必选参数 :
无
复制代码
接口地址 :
/toplist/detail
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / toplist / detail;
复制代码
说明 : 调用此接口 , 可获取榜单介绍
必选参数 :
无
复制代码
接口地址 :
/toplist/introduction
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / toplist / introduction;
复制代码
说明 : 调用此接口 , 获取视频信息
必选参数 :
videoId:视频ID
复制代码
接口地址 :
/video/:videoId/detail
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /video/:videoId/detail @query { videoId: "***" } 复制代码
说明 : 调用此接口 , 获取视频分组列表
必选参数 :
无
复制代码
接口地址 :
/video/group/list
复制代码
可选参数 :
无
复制代码
调用例子 :
GET /video/group/list;
复制代码
说明 : 调用此接口 , 获取视频分组下的视频
必选参数 :
groupId: 分组ID
复制代码
接口地址 :
/video/group/videos
复制代码
可选参数 :
resolution:分辨率,默认1080 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /video/group/videos @query { groupId: "***", resolution?: 1080, offset?: 1 } 复制代码
说明 : 调用此接口 , 收藏|取消收藏 视频
必选参数 :
videoId:视频ID actionType:操做类型,收藏:"sub",取消收藏: "unsub" 复制代码
接口地址 :
/video/:videoId/sub/:actionType
复制代码
可选参数 :
无
复制代码
调用例子 :
POST /video/:videoId/sub/:actionType @query { videoId: "***", actionType: "sub" } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
videoIds: 视频ID,多个以逗号分隔
复制代码
接口地址 :
/video/urls
复制代码
可选参数 :
resolution:分辨率,默认1080
复制代码
调用例子 :
GET /video/urls @query { videoIds: "***,***", resolution?: 1080 } 复制代码
说明 : 调用此接口 , 获取歌单分类列表
必选参数 :
无
复制代码
接口地址 :
/playlist/category/list
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / playlist / category / list;
复制代码
说明 : 调用此接口 , 建立歌单
必选参数 :
name: 歌单名字,
privacy:0 为普通歌单,10 为隐私歌单
复制代码
接口地址 :
/playlist/create
复制代码
可选参数 :
无
复制代码
调用例子 :
POST /playlist/create @query { name: "***", privacy: 0 } 复制代码
说明 : 调用此接口 , 删除歌单
必选参数 :
pid:歌单ID
复制代码
接口地址 :
/playlist/delete
复制代码
可选参数 :
无
复制代码
调用例子 :
DELETE /playlist/delete @body { pid: "***" } 复制代码
说明 : 调用此接口 , 更新歌单描述
必选参数 :
pid: 歌单ID
description: 描述
复制代码
接口地址 :
/playlist/des/update
复制代码
可选参数 :
无
复制代码
调用例子 :
PUT /playlist/des/update @query { pid: "***", description: "***" } 复制代码
说明 : 调用此接口 , 获取歌单详情
必选参数 :
pid: 歌单ID
复制代码
接口地址 :
/playlist/detail
复制代码
可选参数 :
subNum: 歌单最近的 subNum 个收藏者
复制代码
调用例子 :
GET /playlist/detail @query { pid: "****", subNum?: 10 } 复制代码
说明 : 调用此接口 , 获取热门歌单
必选参数 :
无
复制代码
接口地址 :
/playlist/hot
复制代码
可选参数 :
无
复制代码
调用例子 :
GET / playlist / hot;
复制代码
说明 : 调用此接口 , 更新歌单名
必选参数 :
pid: 歌单ID
name: 歌单名
复制代码
接口地址 :
/playlist/name/update
复制代码
可选参数 :
无
复制代码
调用例子 :
PUT /playlist/name/update @query { pid: "***", name: "***" } 复制代码
说明 : 调用此接口 , 订阅 | 取消订阅 歌单
必选参数 :
pid: 歌单ID actionType: 订阅:'subscribe' 取消订阅: 'unsubscribe' 复制代码
接口地址 :
/playlist/:pid/sub/:actionType
复制代码
可选参数 :
无
复制代码
调用例子 :
POST /playlist/:pid/sub/:actionType @param { pid: "***", actionType: "subscribe" } 复制代码
说明 : 调用此接口 , 获取歌单订阅者
必选参数 :
pid: 歌单ID
复制代码
接口地址 :
/playlist/:pid/subscribers
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
GET /playlist/:pid/subscribers @param { pid: "***" } @query { limit?: 30, offset?: 1 } 复制代码
说明 : 调用此接口 , 更新歌单标签
必选参数 :
pid: 歌单ID
tags: 歌单标签
复制代码
接口地址 :
/playlist/:pid/tags/update
复制代码
可选参数 :
limit : 返回数量 , 默认为 30 offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值,默认为 0 复制代码
调用例子 :
PUT /playlist/:pid/tags/update @query { pid: "***" } @body { tags: "***" } 复制代码
说明 : 调用此接口 , 添加歌单歌曲
必选参数 :
pid: 歌单ID
songIds:歌曲ID数组
复制代码
接口地址 :
/playlist/:pid/songs/add
复制代码
可选参数 :
无
复制代码
调用例子 :
POST /playlist/:pid/songs/add { pid: "***" } @body { songIds: ["***", "****"] } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
pid: 歌单ID
songIds:歌曲ID数组
复制代码
接口地址 :
/playlist/:pid/songs/del
复制代码
可选参数 :
无
复制代码
调用例子 :
DELETE /playlist/:pid/songs/del @param { pid: "***" } @body { songIds: ["***", "****"] } 复制代码
说明 : 调用此接口 , 可获取专辑信息
必选参数 :
pid: 歌单ID
description:描述
tags:标签
复制代码
接口地址 :
/playlist/:pid/update
复制代码
可选参数 :
无
复制代码
调用例子 :
PUT /playlist/:pid/update { pid: "***" } @body { description: "***", tags: "***" } 复制代码
目前的实现的接口主要是这些,接口暂时未通过严格的测试,若有问题,请给我提 issue。贡献出来,是方便你们一块儿学习,禁止商用。下期预告,webpack 环境配置。关注个人微信公众号,共同成长。
@author: WaterMan