mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-05-23 22:37:41 +08:00
This commit is contained in:
parent
a7019f5ca3
commit
1d880bede7
@ -1,4 +1,9 @@
|
||||
# 更新日志
|
||||
### 3.42.0 | 2020.10.04
|
||||
- 新增`用户绑定信息`,`用户绑定手机`,`新版评论`,`点赞过的视频`,`收藏视频到视频歌单`,`删除视频歌单里的视频`,`最近播放的视频`,`音乐日历`等接口
|
||||
|
||||
- 创建歌单接口增加`type`参数,可创建视频歌单
|
||||
|
||||
### 3.41.2 | 2020.09.20
|
||||
- 更新`获取音乐 url`接口,未登录状态返回试听片段 [#897](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/897)
|
||||
|
||||
|
132
docs/README.md
132
docs/README.md
@ -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'则设置成隐私歌单
|
||||
**可选参数 :**
|
||||
|
||||
`privacy` : 是否设置为隐私歌单,默认否,传'10'则设置成隐私歌单
|
||||
|
||||
`type` : 歌单类型,默认'NORMAL',传 'VIDEO'则为视频歌单
|
||||
|
||||
**接口地址 :** `/playlist/create`
|
||||
|
||||
**调用例子 :** `/playlist/create?name=测试歌单`
|
||||
|
||||
|
||||
|
||||
**调用例子 :** `/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批量请求接口
|
||||
说明 : 登录后调用此接口 ,传入接口和对应原始参数(原始参数非文档里写的参数,需参考源码),可批量请求接口
|
||||
|
||||
|
1250
interface.d.ts
vendored
Normal file
1250
interface.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19
module/audio_match.js
Normal file
19
module/audio_match.js
Normal file
@ -0,0 +1,19 @@
|
||||
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,
|
||||
})
|
||||
}
|
12
module/calendar.js
Normal file
12
module/calendar.js
Normal file
@ -0,0 +1,12 @@
|
||||
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,
|
||||
})
|
||||
}
|
34
module/comment_new.js
Normal file
34
module/comment_new.js
Normal file
@ -0,0 +1,34 @@
|
||||
// 评论
|
||||
|
||||
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,
|
||||
|
17
module/playlist_mylike.js
Normal file
17
module/playlist_mylike.js
Normal file
@ -0,0 +1,17 @@
|
||||
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,
|
||||
},
|
||||
)
|
||||
}
|
20
module/playlist_track_add.js
Normal file
20
module/playlist_track_add.js
Normal file
@ -0,0 +1,20 @@
|
||||
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,
|
||||
})
|
||||
}
|
26
module/playlist_track_delete.js
Normal file
26
module/playlist_track_delete.js
Normal file
@ -0,0 +1,26 @@
|
||||
// 收藏单曲到歌单 从歌单删除歌曲
|
||||
|
||||
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,
|
||||
},
|
||||
)
|
||||
}
|
@ -1,10 +1,8 @@
|
||||
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',
|
@ -1,7 +1,5 @@
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
|
||||
}
|
||||
const data = {}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/v1/user/bindings/${query.uid}`,
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user