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
}
]
}
}

6
app.js
View File

@ -3,7 +3,7 @@ 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
@ -11,8 +11,8 @@ const cache = require('apicache').middleware
exec('npm info NeteaseCloudMusicApi version', (err, stdout, stderr) => {
if(!err){
let version = stdout.trim()
if(package.version < version){
console.log(`最新版本: ${version}, 当前版本: ${package.version}, 请及时更新`)
if(packageJSON.version < version){
console.log(`最新版本: ${version}, 当前版本: ${packageJSON.version}, 请及时更新`)
}
}
})

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

@ -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

@ -5,8 +5,8 @@ module.exports = (query, request) => {
const data = {
id: query.id
};
return request("POST", `https://music.163.com/api/album/${query.t}`, data, {
crypto: "weapi",
return request('POST', `https://music.163.com/api/album/${query.t}`, data, {
crypto: 'weapi',
cookie: query.cookie,
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

@ -9,7 +9,7 @@ module.exports = (query, request) => {
2: 'A_PL_0_', // 歌单
3: 'R_AL_3_', // 专辑
4: 'A_DJ_1_', // 电台,
5: 'R_VI_62_',// 视频
5: 'R_VI_62_', // 视频
6: 'A_EV_2_' // 动态
}[query.type]
const data = {

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

@ -9,7 +9,7 @@ module.exports = (query, request) => {
2: 'A_PL_0_', // 歌单
3: 'R_AL_3_', // 专辑
4: 'A_DJ_1_', // 电台,
5: 'R_VI_62_',// 视频
5: 'R_VI_62_', // 视频
6: 'A_EV_2_' // 动态
}[query.type]
const data = {

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

@ -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

@ -2,8 +2,8 @@
module.exports = (query, request) => {
const data={
"pagesize": query.pagesize || 20,
"lasttime": query.lasttime || -1
'pagesize': query.pagesize || 20,
'lasttime': query.lasttime || -1
}
return request(
'POST', `https://music.163.com/weapi/v1/event/get`, data,

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

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

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

@ -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

@ -2,7 +2,7 @@
module.exports = (query, request) => {
const data = {
type: "recommend"
type: 'recommend'
}
return request(
'POST', `https://music.163.com/weapi/personalized/newsong`, data,

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

@ -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

@ -5,9 +5,9 @@ module.exports = (query, request) => {
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}"}`
'/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,

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

@ -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

@ -15,7 +15,7 @@ module.exports = (query, request) => {
userId: result[4].slice('/user/home?id='.length),
nickname: result[5]
},
coverImgUrl: result[1].slice(0,-('?param=50y50'.length)),
coverImgUrl: result[1].slice(0, -('?param=50y50'.length)),
name: result[3],
id: result[2].slice('/playlist?id='.length)
})

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

@ -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 }
);
};

View File

@ -3,7 +3,7 @@
const crypto = require('crypto')
module.exports = (query, request) => {
if(!('MUSIC_U' in query.cookie)) query.cookie._ntes_nuid = crypto.randomBytes(16).toString("hex")
if(!('MUSIC_U' in query.cookie)) query.cookie._ntes_nuid = crypto.randomBytes(16).toString('hex')
query.cookie.os = 'pc'
const data = {
ids: '[' + query.id + ']',

View File

@ -1,30 +1,30 @@
// 排行榜
const topList = {
0: "3779629", //云音乐新歌榜
1: "3778678", //云音乐热歌榜
2: "2884035", ///云音乐原创榜
3: "19723756", //云音乐飙升榜
4: "10520166", //云音乐电音榜
5: "180106", //UK排行榜周榜
6: "60198", //美国Billboard周榜
7: "21845217", //KTV嗨榜
8: "11641012", //iTunes榜
9: "120001", //Hit FM Top榜
10: "60131", //日本Oricon周榜
11: "3733003", //韩国Melon排行榜周榜
12: "60255", //韩国Mnet排行榜周榜
13: "46772709", //韩国Melon原声周榜
14: "112504", //中国TOP排行榜(港台榜)
15: "64016", //中国TOP排行榜(内地榜)
16: "10169002", //香港电台中文歌曲龙虎榜
17: "4395559", //华语金曲榜
18: "1899724", //中国嘻哈榜
19: "27135204", //法国 NRJ EuroHot 30周榜
20: "112463", //台湾Hito排行榜
21: "3812895", //Beatport全球电子舞曲榜
22: "71385702", //云音乐ACG音乐榜
23: "991319590" //云音乐嘻哈榜
0: '3779629', //云音乐新歌榜
1: '3778678', //云音乐热歌榜
2: '2884035', ///云音乐原创榜
3: '19723756', //云音乐飙升榜
4: '10520166', //云音乐电音榜
5: '180106', //UK排行榜周榜
6: '60198', //美国Billboard周榜
7: '21845217', //KTV嗨榜
8: '11641012', //iTunes榜
9: '120001', //Hit FM Top榜
10: '60131', //日本Oricon周榜
11: '3733003', //韩国Melon排行榜周榜
12: '60255', //韩国Mnet排行榜周榜
13: '46772709', //韩国Melon原声周榜
14: '112504', //中国TOP排行榜(港台榜)
15: '64016', //中国TOP排行榜(内地榜)
16: '10169002', //香港电台中文歌曲龙虎榜
17: '4395559', //华语金曲榜
18: '1899724', //中国嘻哈榜
19: '27135204', //法国 NRJ EuroHot 30周榜
20: '112463', //台湾Hito排行榜
21: '3812895', //Beatport全球电子舞曲榜
22: '71385702', //云音乐ACG音乐榜
23: '991319590' //云音乐嘻哈榜
}
module.exports = (query, request) => {

View File

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

View File

@ -4,8 +4,8 @@ module.exports = (query, request) => {
const data = {
songIds: [query.id]
};
return request("POST", `http://music.163.com/weapi/cloud/del`, data, {
crypto: "weapi",
return request('POST', `http://music.163.com/weapi/cloud/del`, data, {
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
});

View File

@ -1,14 +1,14 @@
// 云盘数据详情
module.exports = (query, request) => {
const id = query.id.replace(/\s/g, "").split(",");
const id = query.id.replace(/\s/g, '').split(',');
const data = {
songIds: id
};
return request(
"POST",
'POST',
`https://music.163.com/weapi/v1/cloud/get/byids`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -8,9 +8,9 @@ module.exports = (query, request) => {
total: false
};
return request(
"POST",
'POST',
`https://music.163.com/weapi/event/get/${query.uid}`,
data,
{ crypto: "weapi", cookie: query.cookie, proxy: query.proxy }
{ crypto: 'weapi', cookie: query.cookie, proxy: query.proxy }
);
};

View File

@ -7,14 +7,14 @@ module.exports = (query, request) => {
limit: query.limit || 30
};
return request(
"POST",
'POST',
`https://music.163.com/eapi/user/getfolloweds/${query.uid}`,
data,
{
crypto: "eapi",
crypto: 'eapi',
cookie: query.cookie,
proxy: query.proxy,
url: "/api/user/getfolloweds"
url: '/api/user/getfolloweds'
}
);
};

View File

@ -2,7 +2,7 @@
module.exports = (query, request) => {
const data = {
avatarImgId: "0",
avatarImgId: '0',
birthday: query.birthday,
city: query.city,
gender: query.gender,

View File

@ -2,14 +2,14 @@ module.exports = (query, request) => {
const data = {
};
return request(
"POST",
'POST',
`https://music.163.com/api/cloudvideo/group/list`,
data,
{
crypto: "weapi",
crypto: 'weapi',
cookie: query.cookie,
proxy: query.proxy
}
);
};
};

View File

@ -4,7 +4,9 @@
"description": "网易云音乐 NodeJS 版 API",
"scripts": {
"start": "node app.js",
"test": "mocha -r intelli-espower-loader -t 20000 app.test.js --exit"
"test": "mocha -r intelli-espower-loader -t 20000 app.test.js --exit",
"lint-fix": "eslint --fix --ext .js app.js module/ util/ test/ "
},
"keywords": [
"网易云音乐",
@ -21,6 +23,8 @@
"request": "^2.88.0"
},
"devDependencies": {
"eslint": "^6.1.0",
"eslint-config-standard": "^13.0.1",
"intelli-espower-loader": "^1.0.1",
"mocha": "^6.1.4",
"power-assert": "^1.6.1"

View File

@ -8,7 +8,7 @@ describe('测试获取歌手专辑列表是否正常', () => {
id: 32311
}
request.get({url: `${host}/album`,qs: qs}, (err, res, body) => {
request.get({url: `${host}/album`, qs: qs}, (err, res, body) => {
if (!err && res.statusCode == 200) {
body = JSON.parse(body)
assert(body.code === 200)

View File

@ -8,7 +8,7 @@ describe('测试获取评论是否正常', () => {
id: 32311
}
request.get({url: `${host}/comment/album`,qs: qs}, (err, res, body) => {
request.get({url: `${host}/comment/album`, qs: qs}, (err, res, body) => {
if (!err && res.statusCode == 200) {
body = JSON.parse(body)
assert(body.code === 200)

View File

@ -2,16 +2,16 @@ const assert = require('assert')
const request = require('request')
const host = global.host || 'http://localhost:3000'
console.log("注意: 测试登录需在 test/login.test.js 中填写账号密码!!!");
console.log('注意: 测试登录需在 test/login.test.js 中填写账号密码!!!');
describe("测试登录是否正常", () => {
it("手机登录 code 应该等于200", done => {
describe('测试登录是否正常', () => {
it('手机登录 code 应该等于200', done => {
const qs = {
phone: phone,
password: password
}
request.get({url: `${host}/login/cellphone`,qs: qs}, (err, res, body) => {
request.get({url: `${host}/login/cellphone`, qs: qs}, (err, res, body) => {
if (!err && res.statusCode == 200) {
body = JSON.parse(body)
assert(body.code === 200)

View File

@ -2,16 +2,16 @@ const assert = require('assert')
const request = require('request')
const host = global.host || 'http://localhost:3000'
describe("测试获取歌词是否正常", () => {
it("数据应该有 lrc 字段", done => {
describe('测试获取歌词是否正常', () => {
it('数据应该有 lrc 字段', done => {
const qs = {
id: 347230
}
request.get({url: `${host}/lyric`,qs: qs}, (err, res, body) => {
request.get({url: `${host}/lyric`, qs: qs}, (err, res, body) => {
if (!err && res.statusCode == 200) {
body = JSON.parse(body)
assert(typeof body.lrc !== "undefined")
assert(typeof body.lrc !== 'undefined')
done()
}
else{

View File

@ -2,14 +2,14 @@ const assert = require('assert')
const request = require('request')
const host = global.host || 'http://localhost:3000'
describe("测试获取歌曲是否正常", () => {
it("歌曲的 url 不应该为空", done => {
describe('测试获取歌曲是否正常', () => {
it('歌曲的 url 不应该为空', done => {
const qs = {
id: 462791935,
br: 999000
}
request.get({url: `${host}/music/url`,qs: qs}, (err, res, body) => {
request.get({url: `${host}/music/url`, qs: qs}, (err, res, body) => {
if (!err && res.statusCode == 200) {
body = JSON.parse(body)
assert(!!body.data[0].url)

View File

@ -8,7 +8,7 @@ describe('测试搜索是否正常', () => {
keywords: '海阔天空',
type: 1
}
request.get({url: `${host}/search`,qs: qs}, (err, res, body) => {
request.get({url: `${host}/search`, qs: qs}, (err, res, body) => {
if (!err && res.statusCode == 200) {
body = JSON.parse(body)
assert(body.result.songs[0].name === '海阔天空')

View File

@ -8,7 +8,7 @@ const eapiKey = 'e82ckenh8dichen8'
const aesEncrypt = (buffer, mode, key, iv) => {
const cipher = crypto.createCipheriv('aes-128-' + mode, key, iv)
return Buffer.concat([cipher.update(buffer),cipher.final()])
return Buffer.concat([cipher.update(buffer), cipher.final()])
}
const rsaEncrypt = (buffer, key) => {
@ -43,7 +43,7 @@ const eapi = (url, object) => {
}
const decrypt = cipherBuffer => {
const decipher = crypto.createDecipheriv('aes-128-ecb',eapiKey,'')
const decipher = crypto.createDecipheriv('aes-128-ecb', eapiKey, '')
return Buffer.concat([decipher.update(cipherBuffer), decipher.final()])
}

View File

@ -70,20 +70,20 @@ const createRequest = (method, url, data, options) => {
const cookie = options.cookie || {};
const csrfToken = cookie['__csrf'] || ''
const header = {
"osver": cookie.osver, //系统版本
"deviceId": cookie.deviceId, //encrypt.base64.encode(imei + '\t02:00:00:00:00:00\t5106025eb79a5247\t70ffbaac7')
"appver": cookie.appver || "6.1.1", // app版本
"versioncode": cookie.versioncode || "140", //版本号
"mobilename": cookie.mobilename, //设备model
"buildver": cookie.buildver || Date.now().toString().substr(0, 10),
"resolution": cookie.resolution || "1920x1080", //设备分辨率
"__csrf": csrfToken,
"os": cookie.os || 'android',
"channel": cookie.channel,
"requestId":`${Date.now()}_${Math.floor(Math.random() * 1000).toString().padStart(4, '0')}`
'osver': cookie.osver, //系统版本
'deviceId': cookie.deviceId, //encrypt.base64.encode(imei + '\t02:00:00:00:00:00\t5106025eb79a5247\t70ffbaac7')
'appver': cookie.appver || '6.1.1', // app版本
'versioncode': cookie.versioncode || '140', //版本号
'mobilename': cookie.mobilename, //设备model
'buildver': cookie.buildver || Date.now().toString().substr(0, 10),
'resolution': cookie.resolution || '1920x1080', //设备分辨率
'__csrf': csrfToken,
'os': cookie.os || 'android',
'channel': cookie.channel,
'requestId': `${Date.now()}_${Math.floor(Math.random() * 1000).toString().padStart(4, '0')}`
}
if (cookie.MUSIC_U) header["MUSIC_U"] = cookie.MUSIC_U
if (cookie.MUSIC_A) header["MUSIC_A"] = cookie.MUSIC_A
if (cookie.MUSIC_U) header['MUSIC_U'] = cookie.MUSIC_U
if (cookie.MUSIC_A) header['MUSIC_A'] = cookie.MUSIC_A
headers['Cookie'] = Object.keys(header)
.map(
key =>
@ -94,7 +94,7 @@ const createRequest = (method, url, data, options) => {
.join('; ')
data.header = header
data = encrypt.eapi(options.url, data)
url = url.replace(/\w*api/,'eapi')
url = url.replace(/\w*api/, 'eapi')
}
const answer = { status: 500, body: {}, cookie: [] }