add eslint

This commit is contained in:
binaryify 2019-08-16 10:57:31 +08:00
parent 629533e674
commit b98d611989
143 changed files with 1166 additions and 1125 deletions

37
.eslintrc.js Normal file
View File

@ -0,0 +1,37 @@
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
ecmaVersion: 2018,
sourceType: 'module'
},
env: {
browser: true
},
rules: {
indent: ['error', 2, { SwitchCase: 1 }],
'key-spacing': [
2,
{
beforeColon: false,
afterColon: true
}
],
'no-octal': 2,
'no-redeclare': 2,
'comma-spacing': 2,
'no-new-object': 2,
'arrow-spacing': 2,
quotes: [
2,
'single',
{
avoidEscape: true,
allowTemplateLiterals: true
}
]
}
}

88
app.js
View File

@ -3,44 +3,44 @@ const path = require('path')
const express = require('express')
const bodyParser = require('body-parser')
const request = require('./util/request')
const package = require('./package.json')
const packageJSON = require('./package.json')
const exec = require('child_process').exec
const cache = require('apicache').middleware
// version check
exec('npm info NeteaseCloudMusicApi version', (err, stdout, stderr) => {
if(!err){
let version = stdout.trim()
if(package.version < version){
console.log(`最新版本: ${version}, 当前版本: ${package.version}, 请及时更新`)
}
if(!err){
let version = stdout.trim()
if(packageJSON.version < version){
console.log(`最新版本: ${version}, 当前版本: ${packageJSON.version}, 请及时更新`)
}
}
})
const app = express()
// CORS
app.use((req, res, next) => {
if(req.path !== '/' && !req.path.includes('.')){
res.header({
'Access-Control-Allow-Credentials': true,
'Access-Control-Allow-Origin': req.headers.origin || '*',
'Access-Control-Allow-Headers': 'X-Requested-With',
'Access-Control-Allow-Methods': 'PUT,POST,GET,DELETE,OPTIONS',
'Content-Type': 'application/json; charset=utf-8'
})
}
next()
if(req.path !== '/' && !req.path.includes('.')){
res.header({
'Access-Control-Allow-Credentials': true,
'Access-Control-Allow-Origin': req.headers.origin || '*',
'Access-Control-Allow-Headers': 'X-Requested-With',
'Access-Control-Allow-Methods': 'PUT,POST,GET,DELETE,OPTIONS',
'Content-Type': 'application/json; charset=utf-8'
})
}
next()
})
// cookie parser
app.use((req, res, next) => {
req.cookies = {}, (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()
})
next()
req.cookies = {}, (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()
})
next()
})
// body parser
@ -55,37 +55,37 @@ app.use(express.static(path.join(__dirname, 'public')))
// router
const special = {
'daily_signin.js': '/daily_signin',
'fm_trash.js': '/fm_trash',
'personal_fm.js': '/personal_fm'
'daily_signin.js': '/daily_signin',
'fm_trash.js': '/fm_trash',
'personal_fm.js': '/personal_fm'
}
fs.readdirSync(path.join(__dirname, 'module')).reverse().forEach(file => {
if(!(/\.js$/i.test(file))) return
let route = (file in special) ? special[file] : '/' + file.replace(/\.js$/i, '').replace(/_/g, '/')
let question = require(path.join(__dirname, 'module', file))
if(!(/\.js$/i.test(file))) return
let route = (file in special) ? special[file] : '/' + file.replace(/\.js$/i, '').replace(/_/g, '/')
let question = require(path.join(__dirname, 'module', file))
app.use(route, (req, res) => {
let query = Object.assign({}, req.query, req.body, {cookie: req.cookies})
question(query, request)
.then(answer => {
console.log('[OK]', decodeURIComponent(req.originalUrl))
res.append('Set-Cookie', answer.cookie)
res.status(answer.status).send(answer.body)
})
.catch(answer => {
console.log('[ERR]', decodeURIComponent(req.originalUrl))
if(answer.body.code =='301') answer.body.msg = '需要登录'
res.append('Set-Cookie', answer.cookie)
res.status(answer.status).send(answer.body)
})
})
app.use(route, (req, res) => {
let query = Object.assign({}, req.query, req.body, {cookie: req.cookies})
question(query, request)
.then(answer => {
console.log('[OK]', decodeURIComponent(req.originalUrl))
res.append('Set-Cookie', answer.cookie)
res.status(answer.status).send(answer.body)
})
.catch(answer => {
console.log('[ERR]', decodeURIComponent(req.originalUrl))
if(answer.body.code =='301') answer.body.msg = '需要登录'
res.append('Set-Cookie', answer.cookie)
res.status(answer.status).send(answer.body)
})
})
})
const port = process.env.PORT || 3000
app.server = app.listen(port, () => {
console.log(`server running @ http://localhost:${port}`)
console.log(`server running @ http://localhost:${port}`)
})
module.exports = app

View File

@ -5,11 +5,11 @@ module.exports = (query, request) => {
nickname: query.nickname
};
return request(
"POST",
'POST',
`http://music.163.com/eapi/activate/initProfile`,
data,
{
crypto: "eapi",
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: '/api/activate/initProfile'

View File

@ -1,8 +1,8 @@
// 专辑内容
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/v1/album/${query.id}`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/v1/album/${query.id}`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -2,11 +2,11 @@
module.exports = (query, request) => {
const data = {
id: query.id
};
}
return request(
"POST",
'POST',
`https://music.163.com/api/album/detail/dynamic`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
);
};
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
)
}

View File

@ -1,8 +1,8 @@
// 最新专辑
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/api/discovery/newAlbum`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/api/discovery/newAlbum`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,13 +1,13 @@
// 已收藏专辑列表
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
});
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
});
};

View File

@ -1,13 +1,13 @@
// 已收藏专辑列表
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}
)
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}
)
}

View File

@ -1,13 +1,13 @@
// 歌手专辑列表
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}
)
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}
)
}

View File

@ -1,11 +1,11 @@
// 歌手介绍
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}
)
const data = {
id: query.id
}
return request(
'POST', `https://music.163.com/weapi/artist/introduction`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -23,15 +23,15 @@
*/
module.exports = (query, request) => {
const data = {
categoryCode: query.cat || '1001',
initial: (query.initial || '').toUpperCase().charCodeAt() || '',
offset: query.offset || 0,
limit: query.limit || 30,
total: true
}
return request(
'POST', `https://music.163.com/weapi/artist/list`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
categoryCode: query.cat || '1001',
initial: (query.initial || '').toUpperCase().charCodeAt() || '',
offset: query.offset || 0,
limit: query.limit || 30,
total: true
}
return request(
'POST', `https://music.163.com/weapi/artist/list`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,14 +1,14 @@
// 歌手相关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}
)
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}
)
}

View File

@ -1,13 +1,13 @@
// 收藏与取消收藏歌手
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}
)
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}
)
}

View File

@ -1,13 +1,13 @@
// 关注歌手列表
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}
)
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}
)
}

View File

@ -1,8 +1,8 @@
// 歌手单曲
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/v1/artist/${query.id}`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/v1/artist/${query.id}`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,14 +1,14 @@
// 首页轮播图
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: 'linuxapi', proxy: query.proxy}
)
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: 'linuxapi', proxy: query.proxy}
)
}

View File

@ -1,6 +1,6 @@
module.exports = (query, request) => {
const data = {
"e_r": true
'e_r': true
};
Object.keys(query).forEach(i => {
if (/^\/api\//.test(i)) {

View File

@ -5,11 +5,11 @@ module.exports = (query, request) => {
cellphone: query.phone
};
return request(
"POST",
'POST',
`http://music.163.com/eapi/cellphone/existence/check`,
data,
{
crypto: "eapi",
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: '/api/cellphone/existence/check'

View File

@ -1,29 +1,29 @@
// 歌曲可用性
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}
)
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}
)
.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)
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)
}
})
}

View File

@ -1,30 +1,30 @@
// 发送与删除评论
module.exports = (query, request) => {
query.cookie.os = 'pc'
query.t = (query.t == 1 ? 'add' : 'delete')
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 data = {
threadId: query.type + query.id
}
query.cookie.os = 'pc'
query.t = (query.t == 1 ? 'add' : 'delete')
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 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
return request(
'POST', `https://music.163.com/weapi/resource/comments/${query.t}`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
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
return request(
'POST', `https://music.163.com/weapi/resource/comments/${query.t}`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,15 +1,15 @@
// 专辑评论
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}
)
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}
)
}

View File

@ -1,15 +1,15 @@
// 电台评论
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}
)
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}
)
}

View File

@ -5,9 +5,9 @@ module.exports = (query, request) => {
beforeTime: query.before|| 0
};
return request(
"POST",
'POST',
`https://music.163.com/weapi/v1/resource/comments/${query.threadId}`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -1,23 +1,23 @@
// 热门评论
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_' // 视频
}[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}
)
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_' // 视频
}[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}
)
}

View File

@ -1,26 +1,26 @@
// 点赞与取消点赞评论
module.exports = (query, request) => {
query.cookie.os = 'pc'
query.t = (query.t == 1 ? 'like' : 'unlike')
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 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}
)
query.cookie.os = 'pc'
query.t = (query.t == 1 ? 'like' : 'unlike')
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 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}
)
}

View File

@ -1,7 +1,7 @@
// 歌曲评论
module.exports = (query, request) => {
query.cookie.os = "pc";
query.cookie.os = 'pc';
const data = {
rid: query.id,
limit: query.limit || 20,
@ -9,9 +9,9 @@ module.exports = (query, request) => {
beforeTime: query.before|| 0
};
return request(
"POST",
'POST',
`https://music.163.com/api/v1/resource/comments/R_SO_4_${query.id}`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -1,15 +1,15 @@
// 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}
)
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}
)
}

View File

@ -1,15 +1,15 @@
// 歌单评论
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}
)
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}
)
}

View File

@ -1,15 +1,15 @@
// 视频评论
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}
)
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}
)
}

View File

@ -8,11 +8,11 @@
*/
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}
)
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}
)
}

View File

@ -1,13 +1,13 @@
// 我的数字专辑
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}
)
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}
)
}

View File

@ -3,9 +3,9 @@
module.exports = (query, request) => {
const data = {};
return request(
"POST",
'POST',
`http://music.163.com/weapi/djradio/banner/get`,
{},
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -1,8 +1,8 @@
// 电台分类列表
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/djradio/category/get`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/djradio/category/get`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,11 +1,11 @@
// 电台详情
module.exports = (query, request) => {
const data = {
id: query.rid
}
return request(
'POST', `https://music.163.com/weapi/djradio/get`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
id: query.rid
}
return request(
'POST', `https://music.163.com/weapi/djradio/get`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,17 +1,17 @@
// 热门电台
module.exports = (query, request) => {
const data = {
cat: query.type,
cateId: query.type,
type: query.type,
categoryId: query.type,
category: query.type,
limit: query.limit,
offset: query.offset
}
return request(
'POST', `https://music.163.com/weapi/djradio/hot/v1`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
cat: query.type,
cateId: query.type,
type: query.type,
categoryId: query.type,
category: query.type,
limit: query.limit,
offset: query.offset
}
return request(
'POST', `https://music.163.com/weapi/djradio/hot/v1`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,12 +1,12 @@
// 付费电台
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}
)
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}
)
}

View File

@ -1,11 +1,11 @@
// 电台节目详情
module.exports = (query, request) => {
const data = {
id: query.id
}
return request(
'POST', `https://music.163.com/weapi/dj/program/detail`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
id: query.id
}
return request(
'POST', `https://music.163.com/weapi/dj/program/detail`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,8 +1,8 @@
// 精选电台
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/djradio/recommend/v1`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/djradio/recommend/v1`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -24,11 +24,11 @@
*/
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}
)
const data = {
cateId: query.type
}
return request(
'POST', `https://music.163.com/weapi/djradio/recommend`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,12 +1,12 @@
// 订阅与取消电台
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}
)
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}
)
}

View File

@ -1,13 +1,13 @@
// 订阅电台列表
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}
)
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}
)
}

View File

@ -1,12 +1,12 @@
// 动态
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}
)
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}
)
}

View File

@ -1,11 +1,11 @@
// 删除动态
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}
)
const data = {
id: query.evId,
}
return request(
'POST', `https://music.163.com/eapi/event/delete`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,14 +1,14 @@
// 转发动态
module.exports = (query, request) => {
query.cookie.os = "pc";
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",
return request('POST', `https://music.163.com/weapi/event/forward`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
});

View File

@ -1,11 +1,11 @@
// 垃圾桶
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}
)
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}
)
}

View File

@ -1,10 +1,10 @@
// 关注与取消关注用户
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}
)
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}
)
}

View File

@ -1,11 +1,11 @@
// 喜欢的歌曲(无序)
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}
)
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}
)
}

View File

@ -3,14 +3,14 @@
const crypto = require('crypto')
module.exports = (query, request) => {
query.cookie.os = 'pc'
const data = {
username: query.email,
password: crypto.createHash('md5').update(query.password).digest('hex'),
rememberLogin: 'true'
}
return request(
'POST', `https://music.163.com/weapi/login`, data,
{crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
query.cookie.os = 'pc'
const data = {
username: query.email,
password: crypto.createHash('md5').update(query.password).digest('hex'),
rememberLogin: 'true'
}
return request(
'POST', `https://music.163.com/weapi/login`, data,
{crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -3,15 +3,15 @@
const crypto = require('crypto')
module.exports = (query, request) => {
query.cookie.os = 'pc'
const data = {
phone: query.phone,
countrycode: query.countrycode,
password: crypto.createHash('md5').update(query.password).digest('hex'),
rememberLogin: 'true'
}
return request(
'POST', `https://music.163.com/weapi/login/cellphone`, data,
{crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
query.cookie.os = 'pc'
const data = {
phone: query.phone,
countrycode: query.countrycode,
password: crypto.createHash('md5').update(query.password).digest('hex'),
rememberLogin: 'true'
}
return request(
'POST', `https://music.163.com/weapi/login/cellphone`, data,
{crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,8 +1,8 @@
// 登录刷新
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}
)
return request(
'POST', `https://music.163.com/weapi/login/token/refresh`, {},
{crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,21 +1,21 @@
// 登录状态
module.exports = (query, request) => {
return request(
'GET', `https://music.163.com`, {},
{cookie: query.cookie, proxy: query.proxy}
)
return request(
'GET', `https://music.163.com`, {},
{cookie: query.cookie, proxy: query.proxy}
)
.then(response => {
try{
let profile = eval(`(${/GUser\s*=\s*([^;]+);/.exec(response.body)[1]})`)
let bindings = eval(`(${/GBinds\s*=\s*([^;]+);/.exec(response.body)[1]})`)
response.body = {code: 200, profile: profile, bindings: bindings}
return response
}
catch(err){
response.status = 301
response.body = {code: 301}
return Promise.reject(response)
}
try{
let profile = eval(`(${/GUser\s*=\s*([^;]+);/.exec(response.body)[1]})`)
let bindings = eval(`(${/GBinds\s*=\s*([^;]+);/.exec(response.body)[1]})`)
response.body = {code: 200, profile: profile, bindings: bindings}
return response
}
catch(err){
response.status = 301
response.body = {code: 301}
return Promise.reject(response)
}
})
}

View File

@ -1,8 +1,8 @@
// 退出登录
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/logout`, {},
{crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/logout`, {},
{crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,11 +1,11 @@
// 歌词
module.exports = (query, request) => {
const data={
id:query.id
}
return request(
'POST', `https://music.163.com/weapi/song/lyric?lv=-1&kv=-1&tv=-1`, data,
{crypto: 'linuxapi', cookie: query.cookie, proxy: query.proxy}
)
const data={
id: query.id
}
return request(
'POST', `https://music.163.com/weapi/song/lyric?lv=-1&kv=-1&tv=-1`, data,
{crypto: 'linuxapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -2,18 +2,18 @@
module.exports = (query, request) => {
const data = {
beforeTime: query.before || "-1",
beforeTime: query.before || '-1',
limit: query.limit || 30,
total: "true",
total: 'true',
uid: query.uid
};
return request(
"POST",
'POST',
`https://music.163.com/api/v1/user/comments/${query.uid}`,
data,
{
crypto: "weapi",
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
}

View File

@ -4,10 +4,10 @@ module.exports = (query, request) => {
const data = {
offset: query.offset || 0,
limit: query.limit || 30,
total: "true"
total: 'true'
};
return request("POST", `https://music.163.com/api/forwards/get`, data, {
crypto: "weapi",
return request('POST', `https://music.163.com/api/forwards/get`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
});

View File

@ -4,10 +4,10 @@ module.exports = (query, request) => {
const data = {
offset: query.offset || 0,
limit: query.limit || 30,
total: "true",
total: 'true',
};
return request("POST", `https://music.163.com/api/msg/notices`, data, {
crypto: "weapi",
return request('POST', `https://music.163.com/api/msg/notices`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
});

View File

@ -4,10 +4,10 @@ module.exports = (query, request) => {
const data = {
offset: query.offset || 0,
limit: query.limit || 30,
total: "true",
total: 'true',
};
return request("POST", `https://music.163.com/api/msg/private/users`, data, {
crypto: "weapi",
return request('POST', `https://music.163.com/api/msg/private/users`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
});

View File

@ -5,14 +5,14 @@ module.exports = (query, request) => {
userId: query.uid,
offset: query.offset || 0,
limit: query.limit || 30,
total: "true"
total: 'true'
};
return request(
"POST",
'POST',
`https://music.163.com/api/msg/private/history`,
data,
{
crypto: "weapi",
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
}

View File

@ -3,16 +3,16 @@
module.exports = (query, request) => {
const data = {
tags: JSON.stringify({
地区: query.area || "全部",
类型: query.type || "全部",
排序: query.order || "上升最快"
地区: query.area || '全部',
类型: query.type || '全部',
排序: query.order || '上升最快'
}),
offset: query.offset || 0,
total: "true",
total: 'true',
limit: query.limit || 30
};
return request("POST", `https://interface.music.163.com/api/mv/all`, data, {
crypto: "weapi",
return request('POST', `https://interface.music.163.com/api/mv/all`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
});

View File

@ -1,11 +1,11 @@
// MV详情
module.exports = (query, request) => {
const data = {
id: query.mvid
}
return request(
'POST', `https://music.163.com/weapi/mv/detail`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
id: query.mvid
}
return request(
'POST', `https://music.163.com/weapi/mv/detail`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -6,11 +6,11 @@ module.exports = (query, request) => {
limit: query.limit || 30
};
return request(
"POST",
'POST',
`https://interface.music.163.com/api/mv/exclusive/rcmd`,
data,
{
crypto: "weapi",
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
}

View File

@ -3,12 +3,12 @@
module.exports = (query, request) => {
const data = {
// 'offset': query.offset || 0,
area: query.area || "",
area: query.area || '',
limit: query.limit || 30,
total: true
};
return request("POST", `https://interface.music.163.com/weapi/mv/first`, data, {
crypto: "weapi",
return request('POST', `https://interface.music.163.com/weapi/mv/first`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
});

View File

@ -1,13 +1,13 @@
// 收藏与取消收藏MV
module.exports = (query, request) => {
query.t = (query.t == 1 ? 'sub' : 'unsub')
const data = {
mvId: query.mvid,
mvIds: '["' + query.mvid + '"]'
}
return request(
'POST', `https://music.163.com/weapi/mv/${query.t}`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
query.t = (query.t == 1 ? 'sub' : 'unsub')
const data = {
mvId: query.mvid,
mvIds: '["' + query.mvid + '"]'
}
return request(
'POST', `https://music.163.com/weapi/mv/${query.t}`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,13 +1,13 @@
// // 已收藏MV列表
module.exports = (query, request) => {
const data = {
limit: query.limit || 25,
offset: query.offset || 0,
total: true
}
return request(
'POST', `https://music.163.com/weapi/cloudvideo/allvideo/sublist`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
limit: query.limit || 25,
offset: query.offset || 0,
total: true
}
return request(
'POST', `https://music.163.com/weapi/cloudvideo/allvideo/sublist`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,12 +1,12 @@
// MV链接
module.exports = (query, request) => {
const data = {
id: query.id,
r: query.res || 1080
}
return request(
'POST', `https://music.163.com/weapi/song/enhance/play/mv/url`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
id: query.id,
r: query.res || 1080
}
return request(
'POST', `https://music.163.com/weapi/song/enhance/play/mv/url`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,8 +1,8 @@
// 私人FM
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/v1/radio/get`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/v1/radio/get`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,14 +1,14 @@
// 推荐歌单
module.exports = (query, request) => {
const data = {
limit: query.limit || 30,
offset: query.limit || 0,
total: true,
n: 1000
}
return request(
'POST', `https://music.163.com/weapi/personalized/playlist`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
limit: query.limit || 30,
offset: query.limit || 0,
total: true,
n: 1000
}
return request(
'POST', `https://music.163.com/weapi/personalized/playlist`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,8 +1,8 @@
// 推荐电台
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/personalized/djprogram`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/personalized/djprogram`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,8 +1,8 @@
// 推荐MV
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/personalized/mv`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/personalized/mv`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,11 +1,11 @@
// 推荐新歌
module.exports = (query, request) => {
const data = {
type: "recommend"
}
return request(
'POST', `https://music.163.com/weapi/personalized/newsong`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
type: 'recommend'
}
return request(
'POST', `https://music.163.com/weapi/personalized/newsong`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,8 +1,8 @@
// 独家放送
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/personalized/privatecontent`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/personalized/privatecontent`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,8 +1,8 @@
// 全部歌单分类
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/playlist/catalogue`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/playlist/catalogue`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,13 +1,13 @@
// 创建歌单
module.exports = (query, request) => {
query.cookie.os = "pc";
query.cookie.os = 'pc';
const data = {
name: query.name,
privacy: query.privacy //0 为普通歌单10 为隐私歌单
};
return request("POST", `https://music.163.com/weapi/playlist/create`, data, {
crypto: "weapi",
return request('POST', `https://music.163.com/weapi/playlist/create`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
});

View File

@ -6,12 +6,12 @@ module.exports = (query, request) => {
desc: query.desc
}
return request(
'POST', `http://interface3.music.163.com/eapi/playlist/desc/update`, data,
{
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: '/api/playlist/desc/update'
}
'POST', `http://interface3.music.163.com/eapi/playlist/desc/update`, data,
{
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: '/api/playlist/desc/update'
}
)
}

View File

@ -1,13 +1,13 @@
// 歌单详情
module.exports = (query, request) => {
const data = {
id: query.id,
n: 100000,
s: query.s || 8
}
return request(
'POST', `https://music.163.com/weapi/v3/playlist/detail`, data,
{crypto: 'linuxapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
id: query.id,
n: 100000,
s: query.s || 8
}
return request(
'POST', `https://music.163.com/weapi/v3/playlist/detail`, data,
{crypto: 'linuxapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,8 +1,8 @@
// 热门歌单分类
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/playlist/hottags`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/playlist/hottags`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -6,12 +6,12 @@ module.exports = (query, request) => {
name: query.name
}
return request(
'POST', `http://interface3.music.163.com/eapi/playlist/update/name`, data,
{
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: '/api/playlist/update/name'
}
'POST', `http://interface3.music.163.com/eapi/playlist/update/name`, data,
{
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: '/api/playlist/update/name'
}
)
}

View File

@ -1,12 +1,12 @@
// 收藏与取消收藏歌单
module.exports = (query, request) => {
query.t = (query.t == 1 ? 'subscribe' : 'unsubscribe')
const data = {
id: query.id
}
return request(
'POST', `https://music.163.com/weapi/playlist/${query.t}`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
query.t = (query.t == 1 ? 'subscribe' : 'unsubscribe')
const data = {
id: query.id
}
return request(
'POST', `https://music.163.com/weapi/playlist/${query.t}`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -5,9 +5,9 @@ module.exports = (query, request) => {
offset: query.offset || 0
};
return request(
"POST",
'POST',
`https://music.163.com/weapi/playlist/subscribers`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -6,12 +6,12 @@ module.exports = (query, request) => {
tags: query.tags
}
return request(
'POST', `http://interface3.music.163.com/eapi/playlist/tags/update`, data,
{
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: '/api/playlist/tags/update'
}
'POST', `http://interface3.music.163.com/eapi/playlist/tags/update`, data,
{
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: '/api/playlist/tags/update'
}
)
}

View File

@ -1,13 +1,13 @@
// 收藏单曲到歌单 从歌单删除歌曲
module.exports = (query, request) => {
const data = {
op: query.op, // del,add
pid: query.pid, // 歌单id
trackIds: '[' + query.tracks + ']' // 歌曲id
}
return request(
'POST', `https://music.163.com/weapi/playlist/manipulate/tracks`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
op: query.op, // del,add
pid: query.pid, // 歌单id
trackIds: '[' + query.tracks + ']' // 歌曲id
}
return request(
'POST', `https://music.163.com/weapi/playlist/manipulate/tracks`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,16 +1,16 @@
// 编辑歌单
module.exports = (query, request) => {
query.cookie.os = 'pc'
query.desc = query.desc || ''
query.tags = query.tags || ''
const data = {
"/api/playlist/desc/update": `{"id":${query.id},"desc":"${query.desc}"}`,
"/api/playlist/tags/update": `{"id":${query.id},"tags":"${query.tags}"}`,
"/api/playlist/update/name": `{"id":${query.id},"name":"${query.name}"}`
}
return request(
'POST', `https://music.163.com/weapi/batch`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
query.cookie.os = 'pc'
query.desc = query.desc || ''
query.tags = query.tags || ''
const data = {
'/api/playlist/desc/update': `{"id":${query.id},"desc":"${query.desc}"}`,
'/api/playlist/tags/update': `{"id":${query.id},"tags":"${query.tags}"}`,
'/api/playlist/update/name': `{"id":${query.id},"name":"${query.name}"}`
}
return request(
'POST', `https://music.163.com/weapi/batch`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -3,15 +3,15 @@
module.exports = (query, request) => {
const data = {
songId: query.id,
type: "fromPlayOne",
type: 'fromPlayOne',
playlistId: query.pid,
startMusicId: query.sid || query.id,
count: query.count || 1
};
return request(
"POST",
'POST',
`http://music.163.com/weapi/playmode/intelligence/list`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -1,13 +1,13 @@
// 推荐节目
module.exports = (query, request) => {
const data = {
cateId: query.type,
limit: query.limit || 10,
offset: query.offset || 0
}
return request(
'POST', `https://music.163.com/weapi/program/recommend/v1`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
cateId: query.type,
limit: query.limit || 10,
offset: query.offset || 0
}
return request(
'POST', `https://music.163.com/weapi/program/recommend/v1`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -5,12 +5,12 @@ module.exports = (query, request) => {
captcha: query.captcha,
phone: query.phone,
oldcaptcha: query.oldcaptcha,
ctcode: query.ctcode || "86"
ctcode: query.ctcode || '86'
};
return request(
"POST",
'POST',
`https://music.163.com/api/user/replaceCellphone`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -1,8 +1,8 @@
// 每日推荐歌单
module.exports = (query, request) => {
return request(
'POST', `https://music.163.com/weapi/v1/discovery/recommend/resource`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/v1/discovery/recommend/resource`, {},
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,13 +1,13 @@
// 每日推荐歌曲
module.exports = (query, request) => {
const data = {
limit: 20,
offset: 0,
total: true
}
return request(
'POST', `https://music.163.com/weapi/v1/discovery/recommend/songs`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
limit: 20,
offset: 0,
total: true
}
return request(
'POST', `https://music.163.com/weapi/v1/discovery/recommend/songs`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,12 +1,12 @@
// 相关视频
module.exports = (query, request) => {
const data = {
id: query.id,
type: (/^\d+$/.test(query.id)) ? 0 : 1
}
return request(
'POST', `https://music.163.com/weapi/cloudvideo/v1/allvideo/rcmd`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
id: query.id,
type: (/^\d+$/.test(query.id)) ? 0 : 1
}
return request(
'POST', `https://music.163.com/weapi/cloudvideo/v1/allvideo/rcmd`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,32 +1,32 @@
// 相关歌单
module.exports = (query, request) => {
return request(
'GET', `https://music.163.com/playlist?id=${query.id}`, {},
{ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
return request(
'GET', `https://music.163.com/playlist?id=${query.id}`, {},
{ua: 'pc', cookie: query.cookie, proxy: query.proxy}
)
.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;
let result, playlists = []
while((result = pattern.exec(response.body)) != null){
playlists.push({
creator: {
userId: result[4].slice('/user/home?id='.length),
nickname: result[5]
},
coverImgUrl: result[1].slice(0,-('?param=50y50'.length)),
name: result[3],
id: result[2].slice('/playlist?id='.length)
})
}
response.body = {code: 200, playlists: playlists}
return response
}
catch(err){
response.status = 500
response.body = {code: 500, msg: err.stack}
return Promise.reject(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;
let result, playlists = []
while((result = pattern.exec(response.body)) != null){
playlists.push({
creator: {
userId: result[4].slice('/user/home?id='.length),
nickname: result[5]
},
coverImgUrl: result[1].slice(0, -('?param=50y50'.length)),
name: result[3],
id: result[2].slice('/playlist?id='.length)
})
}
response.body = {code: 200, playlists: playlists}
return response
}
catch(err){
response.status = 500
response.body = {code: 500, msg: err.stack}
return Promise.reject(response)
}
})
}

View File

@ -1,22 +1,22 @@
// 点赞与取消点赞资源
module.exports = (query, request) => {
query.cookie.os = 'pc'
query.t = (query.t == 1 ? 'like' : 'unlike')
query.type = {
1: 'R_MV_5_', // MV
4: 'A_DJ_1_', // 电台
5: 'R_VI_62_', // 视频
6: 'A_EV_2_'
}[query.type]
const data = {
threadId: query.type + query.id
}
if(query.type=='A_EV_2_'){
data.threadId=query.threadId
}
return request(
'POST', `https://music.163.com/weapi/resource/${query.t}`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
query.cookie.os = 'pc'
query.t = (query.t == 1 ? 'like' : 'unlike')
query.type = {
1: 'R_MV_5_', // MV
4: 'A_DJ_1_', // 电台
5: 'R_VI_62_', // 视频
6: 'A_EV_2_'
}[query.type]
const data = {
threadId: query.type + query.id
}
if(query.type=='A_EV_2_'){
data.threadId=query.threadId
}
return request(
'POST', `https://music.163.com/weapi/resource/${query.t}`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,23 +1,23 @@
// 听歌打卡
module.exports = (query, request) => {
const data = {
logs: JSON.stringify([{
action: 'play',
json: {
download: 0,
end: 'playend',
id: query.id,
sourceId: query.sourceid,
time: query.time,
type: 'song',
wifi: 0,
}
}])
}
const data = {
logs: JSON.stringify([{
action: 'play',
json: {
download: 0,
end: 'playend',
id: query.id,
sourceId: query.sourceid,
time: query.time,
type: 'song',
wifi: 0,
}
}])
}
return request(
'POST', `https://music.163.com/weapi/feedback/weblog`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
return request(
'POST', `https://music.163.com/weapi/feedback/weblog`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,14 +1,14 @@
// 搜索
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
}
return request(
'POST', `https://music.163.com/weapi/search/get`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
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
}
return request(
'POST', `https://music.163.com/weapi/search/get`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,11 +1,11 @@
// 热门搜索
module.exports = (query, request) => {
const data = {
type: 1111
}
return request(
'POST', `https://music.163.com/weapi/search/hot`, data,
{crypto: 'weapi', ua: 'mobile', cookie: query.cookie, proxy: query.proxy}
)
const data = {
type: 1111
}
return request(
'POST', `https://music.163.com/weapi/search/hot`, data,
{crypto: 'weapi', ua: 'mobile', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -3,9 +3,9 @@ module.exports = (query, request) => {
const data = {
};
return request(
"POST",
'POST',
`https://music.163.com/weapi/hotsearchlist/get`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -1,12 +1,12 @@
// 多类型搜索
module.exports = (query, request) => {
const data = {
type: query.type || 1,
s: query.keywords || ''
}
return request(
'POST', `https://music.163.com/weapi/search/suggest/multimatch`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
const data = {
type: query.type || 1,
s: query.keywords || ''
}
return request(
'POST', `https://music.163.com/weapi/search/suggest/multimatch`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,12 +1,12 @@
// 搜索建议
module.exports = (query, request) => {
const data = {
s: query.keywords || ''
}
let type = query.type == 'mobile' ? 'keyword' : 'web'
return request(
'POST', `https://music.163.com/weapi/search/suggest/` + type, data,
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
)
const data = {
s: query.keywords || ''
}
let type = query.type == 'mobile' ? 'keyword' : 'web'
return request(
'POST', `https://music.163.com/weapi/search/suggest/` + type, data,
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
)
}

View File

@ -1,15 +1,15 @@
// 私信歌单
module.exports = (query, request) => {
query.cookie.os = 'pc'
const data = {
id: query.playlist,
type: 'playlist',
msg: query.msg,
userIds: '[' + query.user_ids + ']'
}
return request(
'POST', `https://music.163.com/weapi/msg/private/send`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
query.cookie.os = 'pc'
const data = {
id: query.playlist,
type: 'playlist',
msg: query.msg,
userIds: '[' + query.user_ids + ']'
}
return request(
'POST', `https://music.163.com/weapi/msg/private/send`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,15 +1,15 @@
// 私信
module.exports = (query, request) => {
query.cookie.os = 'pc'
const data = {
id: query.playlist,
type: 'text',
msg: query.msg,
userIds: '[' + query.user_ids + ']'
}
return request(
'POST', `https://music.163.com/weapi/msg/private/send`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
query.cookie.os = 'pc'
const data = {
id: query.playlist,
type: 'text',
msg: query.msg,
userIds: '[' + query.user_ids + ']'
}
return request(
'POST', `https://music.163.com/weapi/msg/private/send`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -1,9 +1,9 @@
module.exports = (query, request) => {
const data = {
const data = {
}
return request(
'POST', `https://music.163.com/api/user/setting`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}
return request(
'POST', `https://music.163.com/api/user/setting`, data,
{crypto: 'weapi', cookie: query.cookie, proxy: query.proxy}
)
}

View File

@ -2,14 +2,14 @@
module.exports = (query, request) => {
const data = {
type: query.type || "song", // song,playlist,mv,djprogramdjradio
msg: query.msg || "",
id: query.id || ""
type: query.type || 'song', // song,playlist,mv,djprogramdjradio
msg: query.msg || '',
id: query.id || ''
};
return request(
"POST",
'POST',
`http://music.163.com/weapi/share/friends/resource`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

Some files were not shown because too many files have changed in this diff Show More