Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
m0_66418769
NeteaseCloudMusicApi
提交
e410bef0
N
NeteaseCloudMusicApi
项目概览
m0_66418769
/
NeteaseCloudMusicApi
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
NeteaseCloudMusicApi
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e410bef0
编写于
9月 26, 2018
作者:
B
binaryify
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v2.20.3
上级
9924f233
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
94 addition
and
55 deletion
+94
-55
CHANGELOG.MD
CHANGELOG.MD
+14
-0
README.MD
README.MD
+4
-1
docs/README.md
docs/README.md
+11
-2
package.json
package.json
+1
-1
util/util.js
util/util.js
+64
-51
未找到文件。
CHANGELOG.MD
浏览文件 @
e410bef0
# 更新日志
### 2.20.3 | 2018.09.26
-
增加退出登陆接口
-
修正 /check/music 的检查逻辑
-
优化 Cookies 设置
-
重构单元测试
[
by @nondanee
](
https://github.com/nondanee
)
-
增加 301 需要登陆提示信息
-
更新文档
### 2.20.2 | 2018.09.22
增加热门评论和视频评论接口,更新文档
### 2.20.1 | 2018.09.17
...
...
README.MD
浏览文件 @
e410bef0
...
...
@@ -70,7 +70,7 @@
48.
独家放送
49.
mv 排行
50.
获取 mv 数据
51.
播放 mv
51.
播放 mv
/视频
52.
排行榜
53.
歌手榜
54.
云盘
...
...
@@ -96,6 +96,9 @@
74.
登录状态
75.
获取视频数据
76.
发送/删除评论
77.
热门评论
78.
视频评论
79.
退出登录
## 环境要求
...
...
docs/README.md
浏览文件 @
e410bef0
...
...
@@ -94,6 +94,7 @@
76.
发送/删除评论
77.
热门评论
78.
视频评论
79.
退出登录
## 安装
...
...
@@ -233,6 +234,12 @@ Cookies
**调用例子 :**
`/login/refresh`
### 退出登录
说明 : 调用此接口 , 可退出登录
**调用例子 :**
`/logout`
### 登录状态
说明 : 调用此接口,可获取登录状态
...
...
@@ -781,7 +788,8 @@ mp3url 不能直接用 , 可通过 `/music/url` 接口传入歌曲 id 获取具
**调用例子 :**
`/comment/video?id=89ADDE33C0AAE8EC14B99F6750DB954D`
### 热门评论
说明 : 调用此接口 , 传入 type, 资源 id 可获得对应资源热门评论 ( 不需要登录 )
说明 : 调用此接口 , 传入 type, 资源 id 可获得对应资源热门评论 ( 不需要登录 )
**必选参数 :**
...
...
@@ -797,6 +805,7 @@ mp3url 不能直接用 , 可通过 `/music/url` 接口传入歌曲 id 获取具
4: 电台
5: 视频
```
**接口地址 :**
`/comment/hot`
**调用例子 :**
`/comment/hot?id=186016&type=0`
...
...
@@ -859,7 +868,7 @@ mp3url 不能直接用 , 可通过 `/music/url` 接口传入歌曲 id 获取具
2.
删除评论
**必选参数**
`action`
:0 删除
`action`
:0 删除
`tpye`
: 数字,资源类型,对应歌曲,mv,专辑,歌单,电台,视频对应以下类型
...
...
package.json
浏览文件 @
e410bef0
{
"name"
:
"NeteaseCloudMusicApi"
,
"version"
:
"2.20.
2
"
,
"version"
:
"2.20.
3
"
,
"description"
:
"网易云音乐 NodeJS 版 API"
,
"scripts"
:
{
"start"
:
"node app.js"
,
...
...
util/util.js
浏览文件 @
e410bef0
const
Encrypt
=
require
(
"
./crypto.js
"
);
const
request
=
require
(
"
request
"
);
const
queryString
=
require
(
"
querystring
"
);
const
Encrypt
=
require
(
'
./crypto.js
'
)
const
request
=
require
(
'
request
'
)
const
queryString
=
require
(
'
querystring
'
)
request
.
debug
=
true
;
request
.
debug
=
true
function
randomUserAgent
()
{
const
userAgentList
=
[
"
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
"
,
"
Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1
"
,
"
Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1
"
,
"
Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36
"
,
"
Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36
"
,
"
Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36
"
,
"
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89;GameHelper
"
,
"
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4
"
,
"
Mozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/602.1.38 (KHTML, like Gecko) Version/10.0 Mobile/14A300 Safari/602.1
"
,
"
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
"
,
"
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:46.0) Gecko/20100101 Firefox/46.0
"
,
"
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0
"
,
"
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)
"
,
"
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)
"
,
"
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
"
,
"
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)
"
,
"
Mozilla/5.0 (Windows NT 6.3; Win64, x64; Trident/7.0; rv:11.0) like Gecko
"
,
"
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/13.10586
"
,
"
Mozilla/5.0 (iPad; CPU OS 10_0 like Mac OS X) AppleWebKit/602.1.38 (KHTML, like Gecko) Version/10.0 Mobile/14A300 Safari/602.1
"
]
;
const
num
=
Math
.
floor
(
Math
.
random
()
*
userAgentList
.
length
)
;
return
userAgentList
[
num
]
;
'
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
'
,
'
Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1
'
,
'
Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1
'
,
'
Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36
'
,
'
Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36
'
,
'
Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36
'
,
'
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89;GameHelper
'
,
'
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4
'
,
'
Mozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/602.1.38 (KHTML, like Gecko) Version/10.0 Mobile/14A300 Safari/602.1
'
,
'
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
'
,
'
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:46.0) Gecko/20100101 Firefox/46.0
'
,
'
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0
'
,
'
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)
'
,
'
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)
'
,
'
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
'
,
'
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)
'
,
'
Mozilla/5.0 (Windows NT 6.3; Win64, x64; Trident/7.0; rv:11.0) like Gecko
'
,
'
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/13.10586
'
,
'
Mozilla/5.0 (iPad; CPU OS 10_0 like Mac OS X) AppleWebKit/602.1.38 (KHTML, like Gecko) Version/10.0 Mobile/14A300 Safari/602.1
'
]
const
num
=
Math
.
floor
(
Math
.
random
()
*
userAgentList
.
length
)
return
userAgentList
[
num
]
}
function
createWebAPIRequest
(
...
...
@@ -39,52 +39,65 @@ function createWebAPIRequest(
callback
,
errorCallback
)
{
const
csrfToken
=
cookie
.
match
(
/_csrf=
([^
(;|$)
]
+
)
/
);
if
(
csrfToken
)
data
.
csrf_token
=
csrfToken
[
1
];
else
data
.
csrf_token
=
""
;
const
csrfToken
=
cookie
.
match
(
/_csrf=
([^
(;|$)
]
+
)
/
)
if
(
csrfToken
)
data
.
csrf_token
=
csrfToken
[
1
]
else
data
.
csrf_token
=
''
const
proxy
=
cookie
.
split
(
"
__proxy__
"
)[
1
];
cookie
=
cookie
.
split
(
"
__proxy__
"
)[
0
];
const
proxy
=
cookie
.
split
(
'
__proxy__
'
)[
1
]
cookie
=
cookie
.
split
(
'
__proxy__
'
)[
0
]
const
encryptedData
=
Encrypt
(
data
)
;
const
encryptedData
=
Encrypt
(
data
)
const
options
=
{
url
:
`http://
${
host
}${
path
}
`
,
method
:
method
,
headers
:
{
"
Accept
"
:
"
*/*
"
,
"
Accept-Language
"
:
"
zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4
"
,
"
Connection
"
:
"
keep-alive
"
,
"
Content-Type
"
:
"
application/x-www-form-urlencoded
"
,
"
Referer
"
:
"
http://music.163.com
"
,
"
Host
"
:
"
music.163.com
"
,
"
Cookie
"
:
cookie
,
"
User-Agent
"
:
randomUserAgent
()
Accept
:
'
*/*
'
,
'
Accept-Language
'
:
'
zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4
'
,
Connection
:
'
keep-alive
'
,
'
Content-Type
'
:
'
application/x-www-form-urlencoded
'
,
Referer
:
'
http://music.163.com
'
,
Host
:
'
music.163.com
'
,
Cookie
:
cookie
,
'
User-Agent
'
:
randomUserAgent
()
},
body
:
queryString
.
stringify
({
params
:
encryptedData
.
params
,
encSecKey
:
encryptedData
.
encSecKey
}),
proxy
:
proxy
}
;
}
console
.
log
(
`[request]
${
options
.
method
}
${
options
.
url
}
proxy:
${
options
.
proxy
}
`
)
;
)
request
(
options
,
function
(
error
,
res
,
body
)
{
if
(
error
)
{
console
.
error
(
error
)
;
errorCallback
(
error
)
;
console
.
error
(
error
)
errorCallback
(
error
)
}
else
{
let
cookie
=
res
.
headers
[
"
set-cookie
"
]
||
[];
cookie
=
cookie
.
map
(
x
=>
x
.
replace
(
/
\s
*Domain=
[^
(;|$)
]
+;*/
,
""
));
callback
(
body
,
cookie
);
let
cookie
=
res
.
headers
[
'
set-cookie
'
]
||
[]
cookie
=
cookie
.
map
(
x
=>
x
.
replace
(
/
\s
*Domain=
[^
(;|$)
]
+;*/
,
''
))
try
{
const
response
=
JSON
.
parse
(
body
)
if
(
response
.
code
==
'
301
'
)
{
callback
(
JSON
.
stringify
({
...
response
,
msg
:
'
需要登陆
'
}),
cookie
)
}
else
{
callback
(
body
,
cookie
)
}
}
catch
(
err
)
{
callback
(
body
,
cookie
)
}
}
})
;
})
}
module
.
exports
=
{
request
,
createWebAPIRequest
}
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录