mirror of
https://github.com/GiriNeko/YesPlayMusic.git
synced 2025-12-16 21:28:06 +00:00
fix: add netease_api
This commit is contained in:
parent
fc0367c9b4
commit
0b701d23da
304 changed files with 27205 additions and 1 deletions
19
netease_api/module/activate_init_profile.js
Normal file
19
netease_api/module/activate_init_profile.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// 初始化名字
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
nickname: query.nickname,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/eapi/activate/initProfile`,
|
||||
data,
|
||||
{
|
||||
crypto: 'eapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
url: '/api/activate/initProfile',
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/album.js
Normal file
15
netease_api/module/album.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 专辑内容
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/album/${query.id}`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
17
netease_api/module/album_detail.js
Normal file
17
netease_api/module/album_detail.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 数字专辑详情
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
id: query.id,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/vipmall/albumproduct/detail`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
17
netease_api/module/album_detail_dynamic.js
Normal file
17
netease_api/module/album_detail_dynamic.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 专辑动态信息
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
id: query.id,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/album/detail/dynamic`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
21
netease_api/module/album_list.js
Normal file
21
netease_api/module/album_list.js
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
// 数字专辑-新碟上架
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
area: query.area || 'ALL', //ALL:全部,ZH:华语,EA:欧美,KR:韩国,JP:日本
|
||||
type: query.type,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/vipmall/albumproduct/list`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
20
netease_api/module/album_list_style.js
Normal file
20
netease_api/module/album_list_style.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 数字专辑-语种风格馆
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 10,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
area: query.area || 'Z_H', //Z_H:华语,E_A:欧美,KR:韩国,JP:日本
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/vipmall/appalbum/album/style`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/album_new.js
Normal file
15
netease_api/module/album_new.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 全部新碟
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
area: query.area || 'ALL', //ALL:全部,ZH:华语,EA:欧美,KR:韩国,JP:日本
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/album/new`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
15
netease_api/module/album_newest.js
Normal file
15
netease_api/module/album_newest.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 最新专辑
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/discovery/newAlbum`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
24
netease_api/module/album_songsaleboard.js
Normal file
24
netease_api/module/album_songsaleboard.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
// 数字专辑&数字单曲-榜单
|
||||
module.exports = (query, request) => {
|
||||
let data = {
|
||||
albumType: query.albumType || 0, //0为数字专辑,1为数字单曲
|
||||
}
|
||||
const type = query.type || 'daily' // daily,week,year,total
|
||||
if (type === 'year') {
|
||||
data = {
|
||||
...data,
|
||||
year: query.year,
|
||||
}
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/feealbum/songsaleboard/${type}/type`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
14
netease_api/module/album_sub.js
Normal file
14
netease_api/module/album_sub.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 收藏/取消收藏专辑
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.t = query.t == 1 ? 'sub' : 'unsub'
|
||||
const data = {
|
||||
id: query.id,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/album/${query.t}`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
15
netease_api/module/album_sublist.js
Normal file
15
netease_api/module/album_sublist.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 已收藏专辑列表
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 25,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/album/sublist`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
20
netease_api/module/artist_album.js
Normal file
20
netease_api/module/artist_album.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 歌手专辑列表
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/artist/albums/${query.id}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
18
netease_api/module/artist_desc.js
Normal file
18
netease_api/module/artist_desc.js
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// 歌手介绍
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
id: query.id,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/artist/introduction`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/artist_detail.js
Normal file
15
netease_api/module/artist_detail.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/artist/head/info/get`,
|
||||
{
|
||||
id: query.id,
|
||||
},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
37
netease_api/module/artist_list.js
Normal file
37
netease_api/module/artist_list.js
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
// 歌手分类
|
||||
|
||||
/*
|
||||
type 取值
|
||||
1:男歌手
|
||||
2:女歌手
|
||||
3:乐队
|
||||
|
||||
area 取值
|
||||
-1:全部
|
||||
7华语
|
||||
96欧美
|
||||
8:日本
|
||||
16韩国
|
||||
0:其他
|
||||
|
||||
initial 取值 a-z/A-Z
|
||||
*/
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
initial: isNaN(query.initial)
|
||||
? (query.initial || '').toUpperCase().charCodeAt() || undefined
|
||||
: query.initial,
|
||||
offset: query.offset || 0,
|
||||
limit: query.limit || 30,
|
||||
total: true,
|
||||
type: query.type || '1',
|
||||
area: query.area,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/v1/artist/list`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
16
netease_api/module/artist_mv.js
Normal file
16
netease_api/module/artist_mv.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// 歌手相关MV
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
artistId: query.id,
|
||||
limit: query.limit,
|
||||
offset: query.offset,
|
||||
total: true,
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/artist/mvs`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
19
netease_api/module/artist_new_mv.js
Normal file
19
netease_api/module/artist_new_mv.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'ios'
|
||||
query.cookie.appver = '8.1.20'
|
||||
const data = {
|
||||
limit: query.limit || 20,
|
||||
startTimestamp: query.before || Date.now(),
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/sub/artist/new/works/mv/list`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
19
netease_api/module/artist_new_song.js
Normal file
19
netease_api/module/artist_new_song.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'ios'
|
||||
query.cookie.appver = '8.1.20'
|
||||
const data = {
|
||||
limit: query.limit || 20,
|
||||
startTimestamp: query.before || Date.now(),
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/sub/artist/new/works/song/list`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
17
netease_api/module/artist_songs.js
Normal file
17
netease_api/module/artist_songs.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
id: query.id,
|
||||
private_cloud: 'true',
|
||||
work_type: 1,
|
||||
order: query.order || 'hot', //hot,time
|
||||
offset: query.offset || 0,
|
||||
limit: query.limit || 100,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/v1/artist/songs`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
20
netease_api/module/artist_sub.js
Normal file
20
netease_api/module/artist_sub.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 收藏与取消收藏歌手
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.t = query.t == 1 ? 'sub' : 'unsub'
|
||||
const data = {
|
||||
artistId: query.id,
|
||||
artistIds: '[' + query.id + ']',
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/artist/${query.t}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/artist_sublist.js
Normal file
15
netease_api/module/artist_sublist.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 关注歌手列表
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 25,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/artist/sublist`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
12
netease_api/module/artist_top_song.js
Normal file
12
netease_api/module/artist_top_song.js
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
// 歌手热门 50 首歌曲
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
id: query.id,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/artist/top/song`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
15
netease_api/module/artists.js
Normal file
15
netease_api/module/artists.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 歌手单曲
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/artist/${query.id}`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
19
netease_api/module/audio_match.js
Normal file
19
netease_api/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,
|
||||
})
|
||||
}
|
||||
27
netease_api/module/avatar_upload.js
Normal file
27
netease_api/module/avatar_upload.js
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
const uploadPlugin = require('../plugins/upload')
|
||||
module.exports = async (query, request) => {
|
||||
const uploadInfo = await uploadPlugin(query, request)
|
||||
const res = await request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/user/avatar/upload/v1`,
|
||||
{
|
||||
imgid: uploadInfo.imgId,
|
||||
},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
return {
|
||||
status: 200,
|
||||
body: {
|
||||
code: 200,
|
||||
data: {
|
||||
...uploadInfo,
|
||||
...res.body,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
17
netease_api/module/banner.js
Normal file
17
netease_api/module/banner.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 首页轮播图
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const type =
|
||||
{
|
||||
0: 'pc',
|
||||
1: 'android',
|
||||
2: 'iphone',
|
||||
3: 'ipad',
|
||||
}[query.type || 0] || 'pc'
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/v2/banner/get`,
|
||||
{ clientType: type },
|
||||
{ crypto: 'api', proxy: query.proxy, realIP: query.realIP },
|
||||
)
|
||||
}
|
||||
19
netease_api/module/batch.js
Normal file
19
netease_api/module/batch.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// 批量请求接口
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
e_r: true,
|
||||
}
|
||||
Object.keys(query).forEach((i) => {
|
||||
if (/^\/api\//.test(i)) {
|
||||
data[i] = query[i]
|
||||
}
|
||||
})
|
||||
return request('POST', `https://music.163.com/eapi/batch`, data, {
|
||||
crypto: 'eapi',
|
||||
proxy: query.proxy,
|
||||
url: '/api/batch',
|
||||
cookie: query.cookie,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
12
netease_api/module/calendar.js
Normal file
12
netease_api/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,
|
||||
})
|
||||
}
|
||||
14
netease_api/module/captcha_sent.js
Normal file
14
netease_api/module/captcha_sent.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 发送验证码
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
ctcode: query.ctcode || '86',
|
||||
cellphone: query.phone,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/sms/captcha/sent`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
20
netease_api/module/captcha_verify.js
Normal file
20
netease_api/module/captcha_verify.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 校验验证码
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
ctcode: query.ctcode || '86',
|
||||
cellphone: query.phone,
|
||||
captcha: query.captcha,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/sms/captcha/verify`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
20
netease_api/module/cellphone_existence_check.js
Normal file
20
netease_api/module/cellphone_existence_check.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 检测手机号码是否已注册
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
cellphone: query.phone,
|
||||
countrycode: query.countrycode,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/eapi/cellphone/existence/check`,
|
||||
data,
|
||||
{
|
||||
crypto: 'eapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
url: '/api/cellphone/existence/check',
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
34
netease_api/module/check_music.js
Normal file
34
netease_api/module/check_music.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
// 歌曲可用性
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
ids: '[' + parseInt(query.id) + ']',
|
||||
br: parseInt(query.br || 999000),
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/song/enhance/player/url`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
).then((response) => {
|
||||
let playable = false
|
||||
if (response.body.code == 200) {
|
||||
if (response.body.data[0].code == 200) {
|
||||
playable = true
|
||||
}
|
||||
}
|
||||
if (playable) {
|
||||
response.body = { success: true, message: 'ok' }
|
||||
return response
|
||||
} else {
|
||||
response.status = 404
|
||||
response.body = { success: false, message: '亲爱的,暂无版权' }
|
||||
return Promise.reject(response)
|
||||
}
|
||||
})
|
||||
}
|
||||
147
netease_api/module/cloud.js
Normal file
147
netease_api/module/cloud.js
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
const mm = require('music-metadata')
|
||||
const uploadPlugin = require('../plugins/songUpload')
|
||||
const md5 = require('md5')
|
||||
module.exports = async (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
query.cookie.appver = '2.7.1.198277'
|
||||
const bitrate = 999000
|
||||
if (!query.songFile) {
|
||||
return Promise.reject({
|
||||
status: 500,
|
||||
body: {
|
||||
msg: '请上传音乐文件',
|
||||
code: 500,
|
||||
},
|
||||
})
|
||||
}
|
||||
if (!query.songFile.md5) {
|
||||
// 命令行上传没有md5和size信息,需要填充
|
||||
query.songFile.md5 = md5(query.songFile.data)
|
||||
query.songFile.size = query.songFile.data.byteLength
|
||||
}
|
||||
const res = await request(
|
||||
'POST',
|
||||
`https://interface.music.163.com/api/cloud/upload/check`,
|
||||
{
|
||||
bitrate: String(bitrate),
|
||||
ext: '',
|
||||
length: query.songFile.size,
|
||||
md5: query.songFile.md5,
|
||||
songId: '0',
|
||||
version: 1,
|
||||
},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
let artist = ''
|
||||
let album = ''
|
||||
let songName = ''
|
||||
try {
|
||||
const metadata = await mm.parseBuffer(query.songFile.data, 'audio/mpeg')
|
||||
const info = metadata.common
|
||||
if (info.title) {
|
||||
songName = info.title
|
||||
}
|
||||
if (info.album) {
|
||||
album = info.album
|
||||
}
|
||||
if (info.artist) {
|
||||
artist = info.artist
|
||||
}
|
||||
// if (metadata.native.ID3v1) {
|
||||
// metadata.native.ID3v1.forEach((item) => {
|
||||
// // console.log(item.id, item.value)
|
||||
// if (item.id === 'title') {
|
||||
// songName = item.value
|
||||
// }
|
||||
// if (item.id === 'artist') {
|
||||
// artist = item.value
|
||||
// }
|
||||
// if (item.id === 'album') {
|
||||
// album = item.value
|
||||
// }
|
||||
// })
|
||||
// // console.log({
|
||||
// // songName,
|
||||
// // album,
|
||||
// // songName,
|
||||
// // })
|
||||
// }
|
||||
// console.log({
|
||||
// songName,
|
||||
// album,
|
||||
// songName,
|
||||
// })
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
const tokenRes = await request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/nos/token/alloc`,
|
||||
{
|
||||
bucket: '',
|
||||
ext: 'mp3',
|
||||
filename: query.songFile.name.replace('.mp3', ''),
|
||||
local: false,
|
||||
nos_product: 3,
|
||||
type: 'audio',
|
||||
md5: query.songFile.md5,
|
||||
},
|
||||
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy },
|
||||
)
|
||||
|
||||
if (res.body.needUpload) {
|
||||
const uploadInfo = await uploadPlugin(query, request)
|
||||
// console.log('uploadInfo', uploadInfo.body.result.resourceId)
|
||||
}
|
||||
// console.log(tokenRes.body.result)
|
||||
const res2 = await request(
|
||||
'POST',
|
||||
`https://music.163.com/api/upload/cloud/info/v2`,
|
||||
{
|
||||
md5: query.songFile.md5,
|
||||
songid: res.body.songId,
|
||||
filename: query.songFile.name,
|
||||
song: songName || query.songFile.name.replace('.mp3', ''),
|
||||
album: album || '未知专辑',
|
||||
artist: artist || '未知艺术家',
|
||||
bitrate: String(bitrate),
|
||||
resourceId: tokenRes.body.result.resourceId,
|
||||
},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
// console.log({ res2, privateCloud: res2.body.privateCloud })
|
||||
// console.log(res.body.songId, 'songid')
|
||||
const res3 = await request(
|
||||
'POST',
|
||||
`https://interface.music.163.com/api/cloud/pub/v2`,
|
||||
{
|
||||
songid: res2.body.songId,
|
||||
},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
// console.log({ res3 })
|
||||
return {
|
||||
status: 200,
|
||||
body: {
|
||||
...res.body,
|
||||
...res3.body,
|
||||
// ...uploadInfo,
|
||||
},
|
||||
cookie: res.cookie,
|
||||
}
|
||||
}
|
||||
17
netease_api/module/cloudsearch.js
Normal file
17
netease_api/module/cloudsearch.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 搜索
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
s: query.keywords,
|
||||
type: query.type || 1, // 1: 单曲, 10: 专辑, 100: 歌手, 1000: 歌单, 1002: 用户, 1004: MV, 1006: 歌词, 1009: 电台, 1014: 视频
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/cloudsearch/pc`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
36
netease_api/module/comment.js
Normal file
36
netease_api/module/comment.js
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
const { resourceTypeMap } = require('../util/config.json')
|
||||
// 发送与删除评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
query.t = {
|
||||
1: 'add',
|
||||
0: 'delete',
|
||||
2: 'reply',
|
||||
}[query.t]
|
||||
query.type = resourceTypeMap[query.type]
|
||||
const data = {
|
||||
threadId: query.type + query.id,
|
||||
}
|
||||
|
||||
if (query.type == 'A_EV_2_') {
|
||||
data.threadId = query.threadId
|
||||
}
|
||||
if (query.t == 'add') data.content = query.content
|
||||
else if (query.t == 'delete') data.commentId = query.commentId
|
||||
else if (query.t == 'reply') {
|
||||
data.commentId = query.commentId
|
||||
data.content = query.content
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/resource/comments/${query.t}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
22
netease_api/module/comment_album.js
Normal file
22
netease_api/module/comment_album.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// 专辑评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
rid: query.id,
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
beforeTime: query.before || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/resource/comments/R_AL_3_${query.id}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
22
netease_api/module/comment_dj.js
Normal file
22
netease_api/module/comment_dj.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// 电台评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
rid: query.id,
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
beforeTime: query.before || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/resource/comments/A_DJ_1_${query.id}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
20
netease_api/module/comment_event.js
Normal file
20
netease_api/module/comment_event.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 获取动态评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
beforeTime: query.before || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/resource/comments/${query.threadId}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
21
netease_api/module/comment_floor.js
Normal file
21
netease_api/module/comment_floor.js
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
const { resourceTypeMap } = require('../util/config.json')
|
||||
module.exports = (query, request) => {
|
||||
query.type = resourceTypeMap[query.type]
|
||||
const data = {
|
||||
parentCommentId: query.parentCommentId,
|
||||
threadId: query.type + query.id,
|
||||
time: query.time || -1,
|
||||
limit: query.limit || 20,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/resource/comment/floor/get`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
24
netease_api/module/comment_hot.js
Normal file
24
netease_api/module/comment_hot.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
const { resourceTypeMap } = require('../util/config.json')
|
||||
// 热门评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
query.type = resourceTypeMap[query.type]
|
||||
const data = {
|
||||
rid: query.id,
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
beforeTime: query.before || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/resource/hotcomments/${query.type}${query.id}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
27
netease_api/module/comment_hug_list.js
Normal file
27
netease_api/module/comment_hug_list.js
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
const { resourceTypeMap } = require('../util/config.json')
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'ios'
|
||||
query.cookie.appver = '8.1.20'
|
||||
query.type = resourceTypeMap[query.type || 0]
|
||||
const threadId = query.type + query.sid
|
||||
const data = {
|
||||
targetUserId: query.uid,
|
||||
commentId: query.cid,
|
||||
cursor: query.cursor || '-1',
|
||||
threadId: threadId,
|
||||
pageNo: query.page || 1,
|
||||
idCursor: query.idCursor || -1,
|
||||
pageSize: query.pageSize || 100,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/v2/resource/comments/hug/list`,
|
||||
data,
|
||||
{
|
||||
crypto: 'api',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
26
netease_api/module/comment_like.js
Normal file
26
netease_api/module/comment_like.js
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
const { resourceTypeMap } = require('../util/config.json')
|
||||
// 点赞与取消点赞评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
query.t = query.t == 1 ? 'like' : 'unlike'
|
||||
query.type = resourceTypeMap[query.type]
|
||||
const data = {
|
||||
threadId: query.type + query.id,
|
||||
commentId: query.cid,
|
||||
}
|
||||
if (query.type == 'A_EV_2_') {
|
||||
data.threadId = query.threadId
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/comment/${query.t}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
22
netease_api/module/comment_music.js
Normal file
22
netease_api/module/comment_music.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// 歌曲评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
rid: query.id,
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
beforeTime: query.before || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/v1/resource/comments/R_SO_4_${query.id}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
22
netease_api/module/comment_mv.js
Normal file
22
netease_api/module/comment_mv.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// MV评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
rid: query.id,
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
beforeTime: query.before || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/resource/comments/R_MV_5_${query.id}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
31
netease_api/module/comment_new.js
Normal file
31
netease_api/module/comment_new.js
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
const { resourceTypeMap } = require('../util/config.json')
|
||||
// 评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
query.type = resourceTypeMap[query.type]
|
||||
const threadId = query.type + query.id
|
||||
const pageSize = query.pageSize || 20
|
||||
const pageNo = query.pageNo || 1
|
||||
const data = {
|
||||
threadId: threadId,
|
||||
pageNo,
|
||||
showInner: query.showInner || true,
|
||||
pageSize,
|
||||
cursor:
|
||||
+query.sortType === 3 ? query.cursor || '0' : (pageNo - 1) * pageSize,
|
||||
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',
|
||||
},
|
||||
)
|
||||
}
|
||||
22
netease_api/module/comment_playlist.js
Normal file
22
netease_api/module/comment_playlist.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// 歌单评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
rid: query.id,
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
beforeTime: query.before || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/resource/comments/A_PL_0_${query.id}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
22
netease_api/module/comment_video.js
Normal file
22
netease_api/module/comment_video.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// 视频评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
rid: query.id,
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
beforeTime: query.before || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/v1/resource/comments/R_VI_62_${query.id}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
16
netease_api/module/countries_code_list.js
Normal file
16
netease_api/module/countries_code_list.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// 国家编码列表
|
||||
module.exports = (query, request) => {
|
||||
const data = {}
|
||||
return request(
|
||||
'POST',
|
||||
`https://interface3.music.163.com/eapi/lbs/countries/v1`,
|
||||
data,
|
||||
{
|
||||
crypto: 'eapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
url: '/api/lbs/countries/v1',
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
20
netease_api/module/daily_signin.js
Normal file
20
netease_api/module/daily_signin.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 签到
|
||||
|
||||
/*
|
||||
0为安卓端签到 3点经验, 1为网页签到,2点经验
|
||||
签到成功 {'android': {'point': 3, 'code': 200}, 'web': {'point': 2, 'code': 200}}
|
||||
重复签到 {'android': {'code': -2, 'msg': '重复签到'}, 'web': {'code': -2, 'msg': '重复签到'}}
|
||||
未登录 {'android': {'code': 301}, 'web': {'code': 301}}
|
||||
*/
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
type: query.type || 0,
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/point/dailyTask`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
27
netease_api/module/digitalAlbum_ordering.js
Normal file
27
netease_api/module/digitalAlbum_ordering.js
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
// 购买数字专辑
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
business: 'Album',
|
||||
paymentMethod: query.payment,
|
||||
digitalResources: JSON.stringify([
|
||||
{
|
||||
business: 'Album',
|
||||
resourceID: query.id,
|
||||
quantity: query.quantity,
|
||||
},
|
||||
]),
|
||||
from: 'web',
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/ordering/web/digital`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
20
netease_api/module/digitalAlbum_purchased.js
Normal file
20
netease_api/module/digitalAlbum_purchased.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 我的数字专辑
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/digitalAlbum/purchased`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
17
netease_api/module/dj_banner.js
Normal file
17
netease_api/module/dj_banner.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 电台banner
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {}
|
||||
query.cookie.os = 'pc'
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/banner/get`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/dj_category_excludehot.js
Normal file
15
netease_api/module/dj_category_excludehot.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 电台非热门类型
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/category/excludehot`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/dj_category_recommend.js
Normal file
15
netease_api/module/dj_category_recommend.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 电台推荐类型
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/home/category/recommend`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/dj_catelist.js
Normal file
15
netease_api/module/dj_catelist.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 电台分类列表
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/category/get`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
13
netease_api/module/dj_detail.js
Normal file
13
netease_api/module/dj_detail.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// 电台详情
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
id: query.rid,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/djradio/v2/get`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
14
netease_api/module/dj_hot.js
Normal file
14
netease_api/module/dj_hot.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 热门电台
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/djradio/hot/v1`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
19
netease_api/module/dj_paygift.js
Normal file
19
netease_api/module/dj_paygift.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// 付费电台
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/home/paygift/list?_nmclfl=1`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
17
netease_api/module/dj_personalize_recommend.js
Normal file
17
netease_api/module/dj_personalize_recommend.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 电台个性推荐
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/djradio/personalize/rcmd`,
|
||||
{
|
||||
limit: query.limit || 6,
|
||||
},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
21
netease_api/module/dj_program.js
Normal file
21
netease_api/module/dj_program.js
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
// 电台节目列表
|
||||
const { toBoolean } = require('../util')
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
radioId: query.rid,
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
asc: toBoolean(query.asc),
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/dj/program/byradio`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
13
netease_api/module/dj_program_detail.js
Normal file
13
netease_api/module/dj_program_detail.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// 电台节目详情
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
id: query.id,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/dj/program/detail`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
14
netease_api/module/dj_program_toplist.js
Normal file
14
netease_api/module/dj_program_toplist.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 电台节目榜
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 100,
|
||||
offset: query.offset || 0,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/program/toplist/v1`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
18
netease_api/module/dj_program_toplist_hours.js
Normal file
18
netease_api/module/dj_program_toplist_hours.js
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// 电台24小时节目榜
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 100,
|
||||
// 不支持 offset
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/djprogram/toplist/hours`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/dj_radio_hot.js
Normal file
15
netease_api/module/dj_radio_hot.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 类别热门电台
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
cateId: query.cateId,
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/djradio/hot`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
15
netease_api/module/dj_recommend.js
Normal file
15
netease_api/module/dj_recommend.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// 精选电台
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/recommend/v1`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
41
netease_api/module/dj_recommend_type.js
Normal file
41
netease_api/module/dj_recommend_type.js
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
// 精选电台分类
|
||||
|
||||
/*
|
||||
有声书 10001
|
||||
知识技能 453050
|
||||
商业财经 453051
|
||||
人文历史 11
|
||||
外语世界 13
|
||||
亲子宝贝 14
|
||||
创作|翻唱 2001
|
||||
音乐故事 2
|
||||
3D|电子 10002
|
||||
相声曲艺 8
|
||||
情感调频 3
|
||||
美文读物 6
|
||||
脱口秀 5
|
||||
广播剧 7
|
||||
二次元 3001
|
||||
明星做主播 1
|
||||
娱乐|影视 4
|
||||
科技科学 453052
|
||||
校园|教育 4001
|
||||
旅途|城市 12
|
||||
*/
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
cateId: query.type,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/recommend`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
19
netease_api/module/dj_sub.js
Normal file
19
netease_api/module/dj_sub.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// 订阅与取消电台
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.t = query.t == 1 ? 'sub' : 'unsub'
|
||||
const data = {
|
||||
id: query.rid,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/${query.t}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
20
netease_api/module/dj_sublist.js
Normal file
20
netease_api/module/dj_sublist.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 订阅电台列表
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 30,
|
||||
offset: query.offset || 0,
|
||||
total: true,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/get/subed`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
16
netease_api/module/dj_subscriber.js
Normal file
16
netease_api/module/dj_subscriber.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// 电台详情
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
time: query.time || '-1',
|
||||
id: query.id,
|
||||
limit: query.limit || '20',
|
||||
total: 'true',
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/djradio/subscriber`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
18
netease_api/module/dj_today_perfered.js
Normal file
18
netease_api/module/dj_today_perfered.js
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// 电台今日优选
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
page: query.page || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/djradio/home/today/perfered`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
18
netease_api/module/dj_toplist.js
Normal file
18
netease_api/module/dj_toplist.js
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// 新晋电台榜/热门电台榜
|
||||
const typeMap = {
|
||||
new: 0,
|
||||
hot: 1,
|
||||
}
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 100,
|
||||
offset: query.offset || 0,
|
||||
type: typeMap[query.type || 'new'] || '0', //0为新晋,1为热门
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/djradio/toplist`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
14
netease_api/module/dj_toplist_hours.js
Normal file
14
netease_api/module/dj_toplist_hours.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 电台24小时主播榜
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 100,
|
||||
// 不支持 offset
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/dj/toplist/hours`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
18
netease_api/module/dj_toplist_newcomer.js
Normal file
18
netease_api/module/dj_toplist_newcomer.js
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// 电台新人榜
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 100,
|
||||
offset: query.offset || 0,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/dj/toplist/newcomer`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
18
netease_api/module/dj_toplist_pay.js
Normal file
18
netease_api/module/dj_toplist_pay.js
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// 付费精品
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 100,
|
||||
// 不支持 offset
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/djradio/toplist/pay`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
14
netease_api/module/dj_toplist_popular.js
Normal file
14
netease_api/module/dj_toplist_popular.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 电台最热主播榜
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 100,
|
||||
// 不支持 offset
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/dj/toplist/popular`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
14
netease_api/module/event.js
Normal file
14
netease_api/module/event.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 动态
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
pagesize: query.pagesize || 20,
|
||||
lasttime: query.lasttime || -1,
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/v1/event/get`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
13
netease_api/module/event_del.js
Normal file
13
netease_api/module/event_del.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// 删除动态
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
id: query.evId,
|
||||
}
|
||||
return request('POST', `https://music.163.com/eapi/event/delete`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
16
netease_api/module/event_forward.js
Normal file
16
netease_api/module/event_forward.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// 转发动态
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
forwards: query.forwards,
|
||||
id: query.evId,
|
||||
eventUserId: query.uid,
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/event/forward`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
20
netease_api/module/fm_trash.js
Normal file
20
netease_api/module/fm_trash.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// 垃圾桶
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
songId: query.id,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/radio/trash/add?alg=RT&songId=${
|
||||
query.id
|
||||
}&time=${query.time || 25}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
17
netease_api/module/follow.js
Normal file
17
netease_api/module/follow.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 关注与取消关注用户
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
query.t = query.t == 1 ? 'follow' : 'delfollow'
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/user/${query.t}/${query.id}`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
17
netease_api/module/history_recommend_songs.js
Normal file
17
netease_api/module/history_recommend_songs.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 历史每日推荐歌曲
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'ios'
|
||||
const data = {}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/discovery/recommend/songs/history/recent`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
19
netease_api/module/history_recommend_songs_detail.js
Normal file
19
netease_api/module/history_recommend_songs_detail.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// 历史每日推荐歌曲详情
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'ios'
|
||||
const data = {
|
||||
date: query.date || '',
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/discovery/recommend/songs/history/detail`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
19
netease_api/module/homepage_block_page.js
Normal file
19
netease_api/module/homepage_block_page.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// 首页-发现 block page
|
||||
// 这个接口为移动端接口,首页-发现页,数据结构可以参考 https://github.com/hcanyz/flutter-netease-music-api/blob/master/lib/src/api/uncategorized/bean.dart#L259 HomeBlockPageWrap
|
||||
// query.refresh 是否刷新数据
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'ios'
|
||||
query.cookie.appver = '8.1.20'
|
||||
const data = { refresh: query.refresh || true }
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/homepage/block/page`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
27
netease_api/module/homepage_dragon_ball.js
Normal file
27
netease_api/module/homepage_dragon_ball.js
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
// 首页-发现 dragon ball
|
||||
// 这个接口为移动端接口,首页-发现页(每日推荐、歌单、排行榜 那些入口)
|
||||
// 数据结构可以参考 https://github.com/hcanyz/flutter-netease-music-api/blob/master/lib/src/api/uncategorized/bean.dart#L290 HomeDragonBallWrap
|
||||
// !需要登录或者匿名登录,非登录返回 []
|
||||
const config = require('../util/config.json')
|
||||
module.exports = (query, request) => {
|
||||
if (typeof query.cookie === 'string') {
|
||||
query.cookie = cookieToJson(query.cookie)
|
||||
}
|
||||
if (!('MUSIC_U' in query.cookie))
|
||||
query.cookie.MUSIC_A = config.anonymous_token
|
||||
const data = {}
|
||||
query.cookie.os = 'ios'
|
||||
query.cookie.appver = '8.1.20'
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/eapi/homepage/dragon/ball/static`,
|
||||
data,
|
||||
{
|
||||
crypto: 'eapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
url: '/api/homepage/dragon/ball/static',
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
14
netease_api/module/hot_topic.js
Normal file
14
netease_api/module/hot_topic.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
//热门话题
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 20,
|
||||
offset: query.offset || 0,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/act/hot`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
23
netease_api/module/hug_comment.js
Normal file
23
netease_api/module/hug_comment.js
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
const { resourceTypeMap } = require('../util/config.json')
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'ios'
|
||||
query.cookie.appver = '8.1.20'
|
||||
query.type = resourceTypeMap[query.type || 0]
|
||||
const threadId = query.type + query.sid
|
||||
const data = {
|
||||
targetUserId: query.uid,
|
||||
commentId: query.cid,
|
||||
threadId: threadId,
|
||||
}
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/v2/resource/comments/hug/listener`,
|
||||
data,
|
||||
{
|
||||
crypto: 'api',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
19
netease_api/module/like.js
Normal file
19
netease_api/module/like.js
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// 红心与取消红心歌曲
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
query.cookie.appver = '2.7.1.198277'
|
||||
query.like = query.like == 'false' ? false : true
|
||||
const data = {
|
||||
alg: 'itembased',
|
||||
trackId: query.id,
|
||||
like: query.like,
|
||||
time: '3',
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/radio/like`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
13
netease_api/module/likelist.js
Normal file
13
netease_api/module/likelist.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// 喜欢的歌曲(无序)
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
uid: query.uid,
|
||||
}
|
||||
return request('POST', `https://music.163.com/weapi/song/like/get`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
47
netease_api/module/login.js
Normal file
47
netease_api/module/login.js
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
// 邮箱登录
|
||||
|
||||
const crypto = require('crypto')
|
||||
|
||||
module.exports = async (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
username: query.email,
|
||||
password:
|
||||
query.md5_password ||
|
||||
crypto.createHash('md5').update(query.password).digest('hex'),
|
||||
rememberLogin: 'true',
|
||||
}
|
||||
let result = await request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/login`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
ua: 'pc',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
if (result.body.code === 502) {
|
||||
return {
|
||||
status: 200,
|
||||
body: {
|
||||
msg: '账号或密码错误',
|
||||
code: 502,
|
||||
message: '账号或密码错误',
|
||||
},
|
||||
}
|
||||
}
|
||||
if (result.body.code === 200) {
|
||||
result = {
|
||||
status: 200,
|
||||
body: {
|
||||
...result.body,
|
||||
cookie: result.cookie.join(';'),
|
||||
},
|
||||
cookie: result.cookie,
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
39
netease_api/module/login_cellphone.js
Normal file
39
netease_api/module/login_cellphone.js
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
// 手机登录
|
||||
|
||||
const crypto = require('crypto')
|
||||
|
||||
module.exports = async (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
phone: query.phone,
|
||||
countrycode: query.countrycode || '86',
|
||||
password:
|
||||
query.md5_password ||
|
||||
crypto.createHash('md5').update(query.password).digest('hex'),
|
||||
rememberLogin: 'true',
|
||||
}
|
||||
let result = await request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/login/cellphone`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
ua: 'pc',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
|
||||
if (result.body.code === 200) {
|
||||
result = {
|
||||
status: 200,
|
||||
body: {
|
||||
...result.body,
|
||||
cookie: result.cookie.join(';'),
|
||||
},
|
||||
cookie: result.cookie,
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
34
netease_api/module/login_qr_check.js
Normal file
34
netease_api/module/login_qr_check.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
module.exports = async (query, request) => {
|
||||
const data = {
|
||||
key: query.key,
|
||||
type: 1,
|
||||
}
|
||||
try {
|
||||
let result = await request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/login/qrcode/client/login`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
result = {
|
||||
status: 200,
|
||||
body: {
|
||||
...result.body,
|
||||
cookie: result.cookie.join(';'),
|
||||
},
|
||||
cookie: result.cookie,
|
||||
}
|
||||
return result
|
||||
} catch (error) {
|
||||
return {
|
||||
status: 200,
|
||||
body: {},
|
||||
cookie: result.cookie,
|
||||
}
|
||||
}
|
||||
}
|
||||
18
netease_api/module/login_qr_create.js
Normal file
18
netease_api/module/login_qr_create.js
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
const QRCode = require('qrcode')
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return new Promise(async (resolve) => {
|
||||
const url = `https://music.163.com/login?codekey=${query.key}`
|
||||
return resolve({
|
||||
code: 200,
|
||||
status: 200,
|
||||
body: {
|
||||
code: 200,
|
||||
data: {
|
||||
qrurl: url,
|
||||
qrimg: query.qrimg ? await QRCode.toDataURL(url) : '',
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
}
|
||||
24
netease_api/module/login_qr_key.js
Normal file
24
netease_api/module/login_qr_key.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
module.exports = async (query, request) => {
|
||||
const data = {
|
||||
type: 1,
|
||||
}
|
||||
const result = await request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/login/qrcode/unikey`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
return {
|
||||
status: 200,
|
||||
body: {
|
||||
data: result.body,
|
||||
code: 200,
|
||||
},
|
||||
cookie: result.cookie,
|
||||
}
|
||||
}
|
||||
16
netease_api/module/login_refresh.js
Normal file
16
netease_api/module/login_refresh.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// 登录刷新
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/login/token/refresh`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
ua: 'pc',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
26
netease_api/module/login_status.js
Normal file
26
netease_api/module/login_status.js
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
module.exports = async (query, request) => {
|
||||
const data = {}
|
||||
let result = await request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/w/nuser/account/get`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
if (result.body.code === 200) {
|
||||
result = {
|
||||
status: 200,
|
||||
body: {
|
||||
data: {
|
||||
...result.body,
|
||||
},
|
||||
},
|
||||
cookie: result.cookie,
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
16
netease_api/module/logout.js
Normal file
16
netease_api/module/logout.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// 退出登录
|
||||
|
||||
module.exports = (query, request) => {
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/weapi/logout`,
|
||||
{},
|
||||
{
|
||||
crypto: 'weapi',
|
||||
ua: 'pc',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
17
netease_api/module/lyric.js
Normal file
17
netease_api/module/lyric.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 歌词
|
||||
|
||||
module.exports = (query, request) => {
|
||||
query.cookie.os = 'pc'
|
||||
const data = {
|
||||
id: query.id,
|
||||
lv: -1,
|
||||
kv: -1,
|
||||
tv: -1,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/song/lyric`, data, {
|
||||
crypto: 'api',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
22
netease_api/module/msg_comments.js
Normal file
22
netease_api/module/msg_comments.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// 评论
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
beforeTime: query.before || '-1',
|
||||
limit: query.limit || 30,
|
||||
total: 'true',
|
||||
uid: query.uid,
|
||||
}
|
||||
|
||||
return request(
|
||||
'POST',
|
||||
`https://music.163.com/api/v1/user/comments/${query.uid}`,
|
||||
data,
|
||||
{
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
},
|
||||
)
|
||||
}
|
||||
15
netease_api/module/msg_forwards.js
Normal file
15
netease_api/module/msg_forwards.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// @我
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
offset: query.offset || 0,
|
||||
limit: query.limit || 30,
|
||||
total: 'true',
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/forwards/get`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
14
netease_api/module/msg_notices.js
Normal file
14
netease_api/module/msg_notices.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// 通知
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
limit: query.limit || 30,
|
||||
time: query.lasttime || -1,
|
||||
}
|
||||
return request('POST', `https://music.163.com/api/msg/notices`, data, {
|
||||
crypto: 'weapi',
|
||||
cookie: query.cookie,
|
||||
proxy: query.proxy,
|
||||
realIP: query.realIP,
|
||||
})
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue