53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
const { playlistAesEncrypt, playlistAesDecrypt, rsaEncrypt2, signParamsKey, clientver, appid } = require('../util');
|
|
module.exports = (params, useAxios) => {
|
|
const answer = { status: 500, body: {}, cookie: [] };
|
|
return new Promise(async (resolve) => {
|
|
try {
|
|
const userid = params?.userid || params?.cookie?.userid || 0;
|
|
const token = params?.token || params.cookie?.token || '';
|
|
const mid = params?.cookie?.KUGOU_API_MID; // 可以自定义
|
|
const clienttime = Math.floor(Date.now() / 1000);
|
|
|
|
const dataMap = {
|
|
page: params.page ?? 1,
|
|
pagesize: params.pagesize ?? 30,
|
|
getkmr: 1,
|
|
};
|
|
|
|
const aesEncrypt = playlistAesEncrypt(dataMap);
|
|
|
|
const p = rsaEncrypt2({ aes: aesEncrypt.key, uid: userid, token }).toUpperCase();
|
|
|
|
const paramsMap = {
|
|
clienttime,
|
|
mid,
|
|
key: signParamsKey(clienttime.toString(), appid),
|
|
clientver,
|
|
appid,
|
|
p,
|
|
};
|
|
|
|
const respone = await useAxios({
|
|
baseURL: 'https://mcloudservice.kugou.com',
|
|
url: '/v1/get_list',
|
|
params: paramsMap,
|
|
data: Buffer.from(aesEncrypt.str, 'base64'),
|
|
method: 'post',
|
|
encryptType: 'android',
|
|
responseType: 'arraybuffer',
|
|
cookie: params?.cookie || {},
|
|
clearDefaultParams: true,
|
|
notSignature: true,
|
|
});
|
|
|
|
respone.body = playlistAesDecrypt({ str: respone.body.toString('base64'), key: aesEncrypt.key });
|
|
|
|
resolve(respone);
|
|
} catch (error) {
|
|
console.log(error);
|
|
answer.body = error;
|
|
resolve(answer);
|
|
}
|
|
});
|
|
};
|