refactors

This commit is contained in:
Takanashi Hoshino
2026-09-13 12:04:37 +08:00
parent c478367c6c
commit ddfd680301
15 changed files with 196 additions and 651 deletions
+10 -2
View File
@@ -7,7 +7,8 @@ const ID_XOR_KEY_1 = '3go8&$8*3*3h0k(2)2'
const logger = require('../util/logger.js')
const createOption = require('../util/option.js')
const { generateDeviceId } = require('../util/index')
const { generateDeviceId, cookieToJson } = require('../util/index')
const runtimeState = require('../util/runtimeState')
// function getRandomFromList(list) {
// return list[Math.floor(Math.random() * list.length)]
@@ -25,7 +26,9 @@ function cloudmusic_dll_encode_id(some_id) {
}
module.exports = async (query, request) => {
const deviceId = generateDeviceId()
// 复用进程内已有的设备身份(真实客户端的设备 ID 是稳定的);
// xeapi 公钥注册同样依赖该 deviceId
const deviceId = global.deviceId || generateDeviceId()
logger.info(`Successfully registered anonimous token, deviceId: ${deviceId}`)
global.deviceId = deviceId
const encodedId = CryptoJS.enc.Base64.stringify(
@@ -42,6 +45,11 @@ module.exports = async (query, request) => {
createOption(query, 'xeapi'),
)
if (result.body.code === 200) {
// 注册成功后立即写入运行时状态,后续请求直接使用新令牌(无需重启)
const cookieObj = cookieToJson(result.cookie.join(';'))
if (cookieObj.MUSIC_A) {
runtimeState.anonymousToken = cookieObj.MUSIC_A
}
result = {
status: 200,
body: {
+4
View File
@@ -1,6 +1,7 @@
const { default: axios } = require('axios')
const encrypt = require('../util/crypto')
const { APP_CONF } = require('../util/config.json')
const runtimeState = require('../util/runtimeState')
const generateNonce = () => {
let nonce = ''
@@ -63,6 +64,9 @@ module.exports = async (query, request) => {
throw new Error('xeapi public key response missing sk')
}
// 获取成功后立即写入运行时状态,供 util/request.js 的 xeapi 请求使用
runtimeState.xeapiPublicKey = { ...publicKey, deviceId }
return {
status: 200,
body: {