提交 1d880bed 编写于 作者: B binaryify

新增`用户绑定信息`,`用户绑定手机`,`新版评论`,`点赞过的视频`,`收藏视频到视频歌单`,`删除视频歌单里的视频`,`最近播放的视频`,`音乐日历`等...

新增`用户绑定信息`,`用户绑定手机`,`新版评论`,`点赞过的视频`,`收藏视频到视频歌单`,`删除视频歌单里的视频`,`最近播放的视频`,`音乐日历`等接口 创建歌单接口增加`type`参数,可创建视频歌单 #955 #946
上级 a7019f5c
# 更新日志
### 3.42.0 | 2020.10.04
- 新增`用户绑定信息`,`用户绑定手机`,`新版评论`,`点赞过的视频`,`收藏视频到视频歌单`,`删除视频歌单里的视频`,`最近播放的视频`,`音乐日历`等接口
- 创建歌单接口增加`type`参数,可创建视频歌单
### 3.41.2 | 2020.09.20
- 更新`获取音乐 url`接口,未登录状态返回试听片段 [#897](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/897)
......
......@@ -186,6 +186,14 @@
168. 精品歌单标签列表
169. 用户等级信息
170. 电台个性推荐
171. 用户绑定信息
172. 用户绑定手机
173. 新版评论
174. 点赞过的视频
175. 收藏视频到视频歌单
176. 删除视频歌单里的视频
177. 最近播放的视频
178. 音乐日历
## 安装
......@@ -527,6 +535,41 @@ v3.30.0后支持手动传入cookie,登录接口返回内容新增 `cookie` 字
**调用例子 :** `/user/level`
### 获取用户绑定信息
说明 : 登录后调用此接口 , 可以获取用户绑定信息
**必选参数 :** `uid` : 用户 id
**接口地址 :** `/user/binding`
**调用例子 :** `/user/binding?uid=32953014`
### 用户绑定手机
说明 : 登录后调用此接口 , 可以更换绑定手机
**必选参数 :**
`phone` : 手机号码
`oldcaptcha`: 原手机号码的验证码
`captcha`:新手机号码的验证码
**可选参数 :**
`countrycode`: 国家地区代码,默认86
**接口地址 :** `/user/replacephone`
**调用例子 :** `/user/replacephone?uid=32953014`
### 更新用户信息
说明 : 登录后调用此接口 , 传入相关信息,可以更新用户信息
......@@ -1192,14 +1235,15 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具
**必选参数 :** `name` : 歌单名
**可选参数 :** `privacy` : 是否设置为隐私歌单,默认否,传'10'则设置成隐私歌单
**接口地址 :** `/playlist/create`
**可选参数 :**
**调用例子 :** `/playlist/create?name=测试歌单`
`privacy` : 是否设置为隐私歌单,默认否,传'10'则设置成隐私歌单
`type` : 歌单类型,默认'NORMAL',传 'VIDEO'则为视频歌单
**接口地址 :** `/playlist/create`
**调用例子 :** `/playlist/create?name=测试歌单`,`/playlist/create?name=test&type=VIDEO`
### 删除歌单
......@@ -1257,6 +1301,38 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具
**调用例子 :** `/playlist/tracks?op=add&pid=24381616&tracks=347231` ( 对应把歌曲添加到 ' 我 ' 的歌单 , 测试的时候请把这里的 pid 换成你自己的, id 和 tracks 不对可能会报 502 错误)
### 收藏视频到视频歌单
说明 : 调用此接口 , 可收藏视频到视频歌单 ( 需要登录 )
**必选参数 :**
`pid` : 歌单 id
`ids` : 视频id,支持多个,用`,`隔开
**接口地址 :** `/playlist/track/add`
**调用例子 :** `/playlist/track/add?pid=5271999357&ids=186041`
### 删除视频歌单里的视频
说明 : 调用此接口 , 可删除视频歌单里的视频 ( 需要登录 )
**必选参数 :**
`pid` : 歌单 id
`ids` : 视频id,支持多个,用`,`隔开
**接口地址 :** `/playlist/track/delete`
**调用例子 :** `/playlist/track/delete?pid=5271999357&ids=186041`
### 最近播放的视频
说明 : 调用此接口 , 可获取最近播放的视频 ( 需要登录 )
**接口地址 :** `/playlist/video/recent`
**调用例子 :** `/playlist/video/recent`
### 获取歌词
说明 : 调用此接口 , 传入音乐 id 可获得对应音乐的歌词 ( 不需要登录 )
......@@ -1483,6 +1559,36 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具
**调用例子 :** `/comment/hot?id=186016&type=0`
### 新版评论接口
说明 : 调用此接口 , 传入资源类型和资源id,以及排序方式,可获取对应资源的评论
**必选参数 :**
`id` : 资源 id, 如歌曲 id,mv id
`tpye`: 数字 , 资源类型 , 对应歌曲 , mv, 专辑 , 歌单 , 电台, 视频对应以下类型
```
0: 歌曲
1: mv
2: 歌单
3: 专辑
4: 电台
5: 视频
6: 动态
```
**可选参数 :**
`pageNo`:分页参数,第N页,默认为1
`pageSize`:分页参数,每页多少条数据,默认20
`sortType` 排序方式,1:按推荐排序,2:按热度排序,3:按时间排序
### 给评论点赞
说明 : 调用此接口 , 传入 type, 资源 id, 和评论 id cid 和 是否点赞参数 t 即可给对
......@@ -1646,6 +1752,14 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具
注意:如给动态点赞,不需要传入 id,需要传入 `threadId`,可通过 `event`,`/user/event` 接口获取,如:
`/resource/like?t=1&type=6&threadId=A_EV_2_6559519868_32953014`
### 获取点赞过的视频
说明 : 调用此接口, 可获取获取点赞过的视频
**接口地址 :** `/playlist/mylike`
**调用例子 :** `/playlist/mylike`
### 获取歌曲详情
说明 : 调用此接口 , 传入音乐 id(支持多个 id, 用 `,` 隔开), 可获得歌曲详情(注意:歌曲封面现在需要通过专辑内容接口获取)
......@@ -2784,6 +2898,14 @@ type='1009' 获取其 id, 如`/search?keywords= 代码时间 &type=1009`
**调用例子 :** `/digitalAlbum/ordering?id=86286082&payment=3&quantity=1`
### 音乐日历
说明 : 登录后调用此接口 传入开始和结束时间,可获取音乐日历
**接口地址 :** `/calendar`
**调用例子 :** `/calendar?startTime=1606752000000&endTime=1609430399999`
### batch批量请求接口
说明 : 登录后调用此接口 ,传入接口和对应原始参数(原始参数非文档里写的参数,需参考源码),可批量请求接口
......
此差异已折叠。
此差异已折叠。
const realData =
'eJx10mtIU2EcBvDtnCwNMfO2klUSmSQ5ZugKW/v/0TIjJVdhDStbXpqXrhY5Kwhtrcwiut9VSqMUMxX6IFqsD92sD1YgWGHRBcowKrpnPa/v+drg4flt572ds2PQ6XQut7MwJ940w2TOyS0pzF+/BV/MJrNO+3TVLOHUzKx5iw3/H5uZ7yxegct3tTl7Cr6QEa0gZ/dZOFsvfe5YHe1D+yFZxpncqEj/cCdwoirdVxHNnZrX3xygU5g7Eh6I9uOx8Ch4y9FQjlKkDz1pYrFXIJLUOovFGcYivqJgXqaXDqu7Rzc0XzmZxG81B/fF8wRVusn2jN5rDnwca8tFhyAJP4L4qiI9vX8cWzEmVKzT/46qxNpIdZOZz2HNcHhSkZ3D4AjYFpfGFkX6+dB+FvcSBe/SWbkLPVnEOJ1DFelXxVVci/Wj4TsBLhrQ/LGoaU4HxsTA28L76Cc8Dfau/U6F6FgkyBDDJar0g8tesmOvOHioWeXXmme6l3MLbIIre6wciU5E2t/k8WVxHfHvuUWXsH4SPCv1NW1Cz0aivgYO34vw1AEvi3MlIw0xHl6JNVPEGW41UJsqPaXYYTuEnotMdHwYfv7CFR/i+aXmrY5wrlSkEwr+0EJ0GvLmdw4/RS9Amj93UAbGZMIF40ezE3PtcG/yBWrT3L6oh66hFyMXK4xsUKT7aufzapxnFTwiNc3Wis5Bdm+OYCvmOuHj/ZeoQPOI00PUrUjXpG+kMFU61tFFDvQaZOn5DH4mzoLw4Hsaj14rzu/K4jF66fSWTnJinW3wBvcveqjZN3iFjKp0qKuF1mi21keST3NtTcbwu1eG3Dussr9eemljLIco0tVH7HwA493wOr+FlIjfy+GvkR4uwfjt4v/6G8K3NX8K38lt6B1ISa+Bv2O8Fy69foZOovci2S4Lr1aku4P9OEWVTt9wgMQ7exgJ8JXyI0W694WFyuBjcH75XyrEXsfhg+ZSvqZIf/Lct8Wp0md2tJN4PifEfjcm8gu02Ptbj459eum8eg8bFWlLXTb/A+uo9bM='
module.exports = (query, request) => {
query.cookie.os = 'pc'
const data = {
algorithmCode: 'shazam_v2',
times: 1,
sessionId: 'C999431ACDC84EDBB984763654E6F8D7',
duration: 3.3066249999999995,
from: 'recognize-song',
rawdata: realData,
}
return request('POST', `https://music.163.com/api/music/audio/match`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy,
realIP: query.realIP,
})
}
module.exports = (query, request) => {
const data = {
startTime: query.startTime || Date.now(),
endTime: query.endTime || Date.now(),
}
return request('POST', `https://music.163.com/api/mcalendar/detail`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy,
realIP: query.realIP,
})
}
// 评论
module.exports = (query, request) => {
query.cookie.os = 'pc'
query.type = {
0: 'R_SO_4_', // 歌曲
1: 'R_MV_5_', // MV
2: 'A_PL_0_', // 歌单
3: 'R_AL_3_', // 专辑
4: 'A_DJ_1_', // 电台,
5: 'R_VI_62_', // 视频
6: 'A_EV_2_', // 动态
}[query.type]
const threadId = query.type + query.id
const data = {
threadId: threadId, //'R_SO_4_863481066',
pageNo: query.pageNo || 1,
showInner: query.showInner || true,
pageSize: query.pageSize || 20,
sortType: query.sortType || 1, //1:按推荐排序,2:按热度排序,3:按时间排序
}
return request(
'POST',
`https://music.163.com/api/v2/resource/comments`,
data,
{
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
realIP: query.realIP,
url: '/api/v2/resource/comments',
},
)
}
......@@ -5,8 +5,9 @@ module.exports = (query, request) => {
const data = {
name: query.name,
privacy: query.privacy, //0 为普通歌单,10 为隐私歌单
type: query.type || 'NORMAL', // NORMAL|VIDEO
}
return request('POST', `https://music.163.com/weapi/playlist/create`, data, {
return request('POST', `https://music.163.com/api/playlist/create`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy,
......
module.exports = (query, request) => {
const data = {
time: query.time || '-1',
limit: query.limit || '12',
}
return request(
'POST',
`https://music.163.com/api/mlog/playlist/mylike/bytime/get`,
data,
{
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy,
realIP: query.realIP,
},
)
}
module.exports = async (query, request) => {
query.cookie.os = 'pc'
query.ids = query.ids || ''
const data = {
id: query.pid,
tracks: JSON.stringify(
query.ids.split(',').map((item) => {
return { type: 3, id: item }
}),
),
}
console.log(data)
return request('POST', `http://music.163.com/api/playlist/track/add`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy,
realIP: query.realIP,
})
}
// 收藏单曲到歌单 从歌单删除歌曲
module.exports = async (query, request) => {
query.cookie.os = 'pc'
query.ids = query.ids || ''
const data = {
id: query.id,
tracks: JSON.stringify(
query.ids.split(',').map((item) => {
return { type: 3, id: item }
}),
),
}
return request(
'POST',
`http://music.163.com/api/playlist/track/delete`,
data,
{
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy,
realIP: query.realIP,
},
)
}
module.exports = (query, request) => {
const data = {
}
const data = {}
return request(
'POST',
`https://music.163.com/api/usersafe/loginprotect/status/get`,
`https://music.163.com/api/playlist/video/recent`,
data,
{
crypto: 'weapi',
......
module.exports = (query, request) => {
const data = {
}
const data = {}
return request(
'POST',
`https://music.163.com/api/v1/user/bindings/${query.uid}`,
......
{
"name": "NeteaseCloudMusicApi",
"version": "3.41.2",
"version": "3.42.0",
"description": "网易云音乐 NodeJS 版 API",
"scripts": {
"start": "node app.js",
......@@ -15,7 +15,7 @@
"网易云音乐nodejs"
],
"main": "main.js",
"types": "main.d.ts",
"types": "./interface.d.ts",
"husky": {
"hooks": {
"pre-commit": "lint-staged"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册