feat: align with upstream 1.5.9.9

This commit is contained in:
2026-09-12 18:21:11 +08:00
commit 34f0679117
805 changed files with 376275 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
import {
createCipheriv,
createDecipheriv,
publicEncrypt,
randomBytes,
createHash,
constants
} from 'node:crypto'
// --- 加密逻辑 ---
const eapiKey = 'e82ckenh8dichen8'
const aesEncrypt = (buffer: Buffer, mode: string, key: string | Buffer, iv: string | Buffer) => {
const cipher = createCipheriv(mode, key, iv)
return Buffer.concat([cipher.update(buffer), cipher.final()])
}
export const eapi = (url: string, object: any) => {
const text = typeof object === 'object' ? JSON.stringify(object) : object
const message = `nobody${url}use${text}md5forencrypt`
const digest = createHash('md5').update(message).digest('hex')
const data = `${url}-36cd479b6b5-${text}-36cd479b6b5-${digest}`
return {
params: aesEncrypt(Buffer.from(data), 'aes-128-ecb', eapiKey, '').toString('hex').toUpperCase()
}
}
// --- 请求逻辑 ---
export const wyEapiRequest = async (url: string, data: any) => {
const form = eapi(url, data)
const headers = {
'User-Agent':
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
origin: 'https://music.163.com',
// 使用 LX Music 的默认 Cookie 或者空,视情况而定。LX Music 代码中有注释掉的 cookie,
// 但 eapi 接口通常需要 cookie 才能正常工作,或者特定的 header。
// 这里先尝试不带 cookie 或带基本 cookie。
// 注意:lx-music 的 request.js 中有默认 header。
'Content-Type': 'application/x-www-form-urlencoded'
}
// const body = new URLSearchParams(form).toString() // eapi 返回的是 { params: '...' }
try {
const response = await $fetch('http://interface.music.163.com/eapi/batch', {
method: 'POST',
headers,
body: new URLSearchParams(form as any).toString(), // $fetch 自动处理 body,但这里明确一下
responseType: 'json'
})
return response
} catch (error) {
console.error('WY Eapi Request Error:', error)
throw error
}
}