mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-05-23 22:37:41 +08:00
add eslint
This commit is contained in:
parent
629533e674
commit
b98d611989
37
.eslintrc.js
Normal file
37
.eslintrc.js
Normal 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
88
app.js
@ -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
|
||||
|
@ -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'
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
)
|
||||
}
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
||||
|
@ -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
|
||||
});
|
||||
};
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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)) {
|
||||
|
@ -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'
|
||||
|
@ -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)
|
||||
}
|
||||
})
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
);
|
||||
};
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
);
|
||||
};
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
);
|
||||
};
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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
|
||||
});
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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)
|
||||
}
|
||||
})
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
});
|
||||
|
@ -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
|
||||
});
|
||||
|
@ -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
|
||||
});
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
});
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
});
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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
|
||||
});
|
||||
|
@ -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'
|
||||
}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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'
|
||||
}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
);
|
||||
};
|
||||
|
@ -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'
|
||||
}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
);
|
||||
};
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
);
|
||||
};
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
);
|
||||
};
|
||||
|
@ -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}
|
||||
)
|
||||
}
|
@ -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 }
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -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}
|
||||
)
|
||||
}
|
@ -2,14 +2,14 @@
|
||||
|
||||
module.exports = (query, request) => {
|
||||
const data = {
|
||||
type: query.type || "song", // song,playlist,mv,djprogram,djradio
|
||||
msg: query.msg || "",
|
||||
id: query.id || ""
|
||||
type: query.type || 'song', // song,playlist,mv,djprogram,djradio
|
||||
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
Loading…
x
Reference in New Issue
Block a user