Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
鱼九·
NeteaseCloudMusicApi
提交
ea86e5bb
N
NeteaseCloudMusicApi
项目概览
鱼九·
/
NeteaseCloudMusicApi
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,体验更适合开发者的 AI 搜索 >>
提交
ea86e5bb
编写于
5月 29, 2021
作者:
B
binaryify
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增已购单曲,获取mlog播放地址,将mlog id转为视频id,vip成长值,vip成长值获取记录,vip任务,领取vip成长值 等接口 #1248
上级
54943599
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
141 addition
and
157 deletion
+141
-157
CHANGELOG.MD
CHANGELOG.MD
+3
-0
app.js
app.js
+3
-2
interface.d.ts
interface.d.ts
+4
-9
module/mlog_to_video.js
module/mlog_to_video.js
+14
-15
module/mlog_url.js
module/mlog_url.js
+11
-17
module/related_playlist.js
module/related_playlist.js
+1
-2
module/song_purchased.js
module/song_purchased.js
+15
-16
module/vip_growthpoint.js
module/vip_growthpoint.js
+13
-14
module/vip_growthpoint_details.js
module/vip_growthpoint_details.js
+15
-16
module/vip_growthpoint_get.js
module/vip_growthpoint_get.js
+14
-15
module/vip_tasks.js
module/vip_tasks.js
+13
-14
module/yunbei_rcmd_song.js
module/yunbei_rcmd_song.js
+17
-18
module/yunbei_rcmd_song_history.js
module/yunbei_rcmd_song_history.js
+17
-18
package.json
package.json
+1
-1
未找到文件。
CHANGELOG.MD
浏览文件 @
ea86e5bb
# 更新日志
### 4.0.15 | 2021.5.29
-
新增已购单曲,获取mlog播放地址,将mlog id转为视频id,vip成长值,vip成长值获取记录,vip任务,领取vip成长值 等接口
[
#1248
](
https://github.com/Binaryify/NeteaseCloudMusicApi/pull/1248
)
### 4.0.14 | 2021.5.28
-
增加云贝推歌接口,云贝推歌历史记录接口
[
#1246
](
https://github.com/Binaryify/NeteaseCloudMusicApi/pull/1246
)
...
...
app.js
浏览文件 @
ea86e5bb
...
...
@@ -42,8 +42,9 @@ app.use((req, res, next) => {
;(
req
.
headers
.
cookie
||
''
).
split
(
/
\s
*;
\s
*/
).
forEach
((
pair
)
=>
{
let
crack
=
pair
.
indexOf
(
'
=
'
)
if
(
crack
<
1
||
crack
==
pair
.
length
-
1
)
return
req
.
cookies
[
decodeURIComponent
(
pair
.
slice
(
0
,
crack
)).
trim
()]
=
decodeURIComponent
(
pair
.
slice
(
crack
+
1
)).
trim
()
req
.
cookies
[
decodeURIComponent
(
pair
.
slice
(
0
,
crack
)).
trim
()
]
=
decodeURIComponent
(
pair
.
slice
(
crack
+
1
)).
trim
()
})
next
()
})
...
...
interface.d.ts
浏览文件 @
ea86e5bb
...
...
@@ -1429,7 +1429,6 @@ export function cloud_match(
}
&
RequestBaseConfig
,
):
Promise
<
Response
>
export
function
yunbei_rcmd_song
(
params
:
{
id
:
number
|
string
...
...
@@ -1461,20 +1460,16 @@ export function mlog_to_video(
}
&
RequestBaseConfig
,
):
Promise
<
Response
>
export
function
vip_growthpoint
(
params
:
RequestBaseConfig
,
):
Promise
<
Response
>
export
function
vip_growthpoint
(
params
:
RequestBaseConfig
):
Promise
<
Response
>
export
function
vip_growthpoint_details
(
params
:
MultiPageConfig
&
RequestBaseConfig
,
):
Promise
<
Response
>
export
function
vip_tasks
(
params
:
RequestBaseConfig
,
):
Promise
<
Response
>
export
function
vip_tasks
(
params
:
RequestBaseConfig
):
Promise
<
Response
>
export
function
vip_growthpoint_get
(
params
:
{
params
:
{
id
?:
number
|
string
}
&
RequestBaseConfig
,
):
Promise
<
Response
>
\ No newline at end of file
):
Promise
<
Response
>
module/mlog_to_video.js
浏览文件 @
ea86e5bb
// 将mlog id转为video id
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{
mlogId
:
query
.
id
,
}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/mlog/video/convert/id`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
const
data
=
{
mlogId
:
query
.
id
,
}
\ No newline at end of file
return
request
(
'
POST
'
,
`https://music.163.com/weapi/mlog/video/convert/id`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
module/mlog_url.js
浏览文件 @
ea86e5bb
// mlog链接
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{
id
:
query
.
id
,
resolution
:
query
.
res
||
1080
,
type
:
1
,
}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/mlog/detail/v1`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
const
data
=
{
id
:
query
.
id
,
resolution
:
query
.
res
||
1080
,
type
:
1
,
}
\ No newline at end of file
return
request
(
'
POST
'
,
`https://music.163.com/weapi/mlog/detail/v1`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
})
}
module/related_playlist.js
浏览文件 @
ea86e5bb
...
...
@@ -13,8 +13,7 @@ module.exports = (query, request) => {
},
).
then
((
response
)
=>
{
try
{
const
pattern
=
/<div class="cver u-cover u-cover-3">
[\s\S]
*
?
<img src="
([^
"
]
+
)
">
[\s\S]
*
?
<a class="sname f-fs1 s-fc0" href="
([^
"
]
+
)
"
[^
>
]
*>
([^
<
]
+
?)
<
\/
a>
[\s\S]
*
?
<a class="nm nm f-thide s-fc3" href="
([^
"
]
+
)
"
[^
>
]
*>
([^
<
]
+
?)
<
\/
a>/g
const
pattern
=
/<div class="cver u-cover u-cover-3">
[\s\S]
*
?
<img src="
([^
"
]
+
)
">
[\s\S]
*
?
<a class="sname f-fs1 s-fc0" href="
([^
"
]
+
)
"
[^
>
]
*>
([^
<
]
+
?)
<
\/
a>
[\s\S]
*
?
<a class="nm nm f-thide s-fc3" href="
([^
"
]
+
)
"
[^
>
]
*>
([^
<
]
+
?)
<
\/
a>/g
let
result
,
playlists
=
[]
while
((
result
=
pattern
.
exec
(
response
.
body
))
!=
null
)
{
...
...
module/song_purchased.js
浏览文件 @
ea86e5bb
// 已购单曲
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{
limit
:
query
.
limit
||
20
,
offset
:
query
.
offset
||
0
,
}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/single/mybought/song/list`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
const
data
=
{
limit
:
query
.
limit
||
20
,
offset
:
query
.
offset
||
0
,
}
\ No newline at end of file
return
request
(
'
POST
'
,
`https://music.163.com/weapi/single/mybought/song/list`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
module/vip_growthpoint.js
浏览文件 @
ea86e5bb
// 会员成长值
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/vipnewcenter/app/level/growhpoint/basic`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
\ No newline at end of file
const
data
=
{}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/vipnewcenter/app/level/growhpoint/basic`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
module/vip_growthpoint_details.js
浏览文件 @
ea86e5bb
// 会员成长值领取记录
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{
limit
:
query
.
limit
||
20
,
offset
:
query
.
offset
||
0
,
}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/vipnewcenter/app/level/growth/details`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
const
data
=
{
limit
:
query
.
limit
||
20
,
offset
:
query
.
offset
||
0
,
}
\ No newline at end of file
return
request
(
'
POST
'
,
`https://music.163.com/weapi/vipnewcenter/app/level/growth/details`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
module/vip_growthpoint_get.js
浏览文件 @
ea86e5bb
// 领取会员成长值
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{
taskIds
:
query
.
id
,
}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/vipnewcenter/app/level/task/reward/get`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
const
data
=
{
taskIds
:
query
.
id
,
}
\ No newline at end of file
return
request
(
'
POST
'
,
`https://music.163.com/weapi/vipnewcenter/app/level/task/reward/get`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
module/vip_tasks.js
浏览文件 @
ea86e5bb
// 会员任务
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/vipnewcenter/app/level/task/list`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
\ No newline at end of file
const
data
=
{}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/vipnewcenter/app/level/task/list`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
module/yunbei_rcmd_song.js
浏览文件 @
ea86e5bb
// 云贝推歌
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{
songId
:
query
.
id
,
reason
:
query
.
reason
||
'
好歌献给你
'
,
scene
:
''
,
fromUserId
:
-
1
,
}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/yunbei/rcmd/song/submit`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
const
data
=
{
songId
:
query
.
id
,
reason
:
query
.
reason
||
'
好歌献给你
'
,
scene
:
''
,
fromUserId
:
-
1
,
}
\ No newline at end of file
return
request
(
'
POST
'
,
`https://music.163.com/weapi/yunbei/rcmd/song/submit`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
module/yunbei_rcmd_song_history.js
浏览文件 @
ea86e5bb
// 云贝推歌历史记录
module
.
exports
=
(
query
,
request
)
=>
{
const
data
=
{
page
:
JSON
.
stringify
({
size
:
query
.
size
||
20
,
cursor
:
query
.
cursor
||
''
,
})
}
return
request
(
'
POST
'
,
`https://music.163.com/weapi/yunbei/rcmd/song/history/list`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
const
data
=
{
page
:
JSON
.
stringify
({
size
:
query
.
size
||
20
,
cursor
:
query
.
cursor
||
''
,
}),
}
\ No newline at end of file
return
request
(
'
POST
'
,
`https://music.163.com/weapi/yunbei/rcmd/song/history/list`
,
data
,
{
crypto
:
'
weapi
'
,
cookie
:
query
.
cookie
,
proxy
:
query
.
proxy
,
realIP
:
query
.
realIP
,
},
)
}
package.json
浏览文件 @
ea86e5bb
{
"name"
:
"NeteaseCloudMusicApi"
,
"version"
:
"4.0.1
4
"
,
"version"
:
"4.0.1
5
"
,
"description"
:
"网易云音乐 NodeJS 版 API"
,
"scripts"
:
{
"start"
:
"node app.js"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录