Compare commits

..

1 Commits

Author SHA1 Message Date
dependabot[bot]
17217237ed
build(packages): bump @typescript-eslint/parser from 8.53.0 to 8.55.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.53.0 to 8.55.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.55.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.55.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-19 04:05:38 +00:00
19 changed files with 328 additions and 419 deletions

View File

@ -19,12 +19,15 @@ jobs:
with: with:
issue-number: ${{ github.event.issue.number }} issue-number: ${{ github.event.issue.number }}
body: | body: |
## 快速链接 👋 感谢您提交issue
在我们处理您的问题之前,您可以先查看以下资源: 我们已经收到您的反馈,维护者会尽快查看并回复。
由于二开作者是高中生, 只能在非工作日处理issue, 请耐心等待。
在等待回复期间,您可以:
- 📖 查看[项目文档](https://neteasecloudmusicapienhanced.js.org) - 📖 查看[项目文档](https://neteasecloudmusicapienhanced.js.org)
- 💬 加入[QQ交流群](https://qm.qq.com/q/TpeP9Uv2yk) - 💬 加入[QQ交流群](https://qm.qq.com/q/TpeP9Uv2yk) 进行实时讨论
- 🔍 搜索[现有issues](https://github.com/neteasecloudmusicapienhanced/api-enhanced/issues) 看是否有类似问题 - 🔍 搜索[现有issues](https://github.com/neteasecloudmusicapienhanced/api-enhanced/issues) 看是否有类似问题
handle-help-wanted: handle-help-wanted:
@ -51,6 +54,8 @@ jobs:
如果以上资源无法解决您的问题,请提供更多详细信息,我们会尽快为您解答! 如果以上资源无法解决您的问题,请提供更多详细信息,我们会尽快为您解答!
由于二开作者是高中生, 只能在非工作日处理issue, 请耐心等待。
stale-issues: stale-issues:
if: github.event.action == 'opened' if: github.event.action == 'opened'
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@ -1,4 +1,4 @@
language: node_js language: node_js
node_js: node_js:
- 22 - 12

View File

@ -1,10 +1,4 @@
# 更新日志 # 更新日志
### 4.30.2 | 2026.02.22
- feat(cloud): 添加云盘上传模式选择功能并优化上传配置 (#116)
- refactor: Refactor random Chinese IP generator (#110)
- fix(server): Correctly inject client IP into request parameters (#108)
- refactor(ui): More elegant display of URL and debug buttons (#109)
- feat: 添加评论统计数据 (#122)
### 4.30.1 | 2026.02.11 ### 4.30.1 | 2026.02.11
- feat: Add user playlist endpoints & domain overrides (#105) - feat: Add user playlist endpoints & domain overrides (#105)

View File

@ -1,38 +1,10 @@
<p align="center"> # 网易云音乐 API Enhanced
<img src="./public/docs/netease.png" alt="网易云音乐 API Enhanced Logo" width="120" height="120" />
</p>
<h1 align="center">NeteaseCloudMusicAPI Enhanced</h1>
<p align="center">
<a href="https://www.npmjs.com/package/@neteasecloudmusicapienhanced/api">
<img src="https://img.shields.io/npm/v/@neteasecloudmusicapienhanced/api?style=flat-square" alt="NPM Version" />
</a>
<a href="https://www.npmjs.com/package/@neteasecloudmusicapienhanced/api">
<img src="https://img.shields.io/npm/dm/@neteasecloudmusicapienhanced/api?style=flat-square" alt="NPM Downloads" />
</a>
<a href="https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced">
<img src="https://img.shields.io/github/license/NeteaseCloudMusicApiEnhanced/api-enhanced?style=flat-square" alt="License" />
</a>
<a href="https://nodejs.org/">
<img src="https://img.shields.io/node/v/@neteasecloudmusicapienhanced/api?style=flat-square" alt="Node Version" />
</a>
<a href="https://hub.docker.com/r/moefurina/ncm-api">
<img src="https://img.shields.io/docker/v/moefurina/ncm-api?style=flat-square" alt="Docker Version" />
</a>
<a href="https://hub.docker.com/r/moefurina/ncm-api">
<img src="https://img.shields.io/docker/pulls/moefurina/ncm-api?style=flat-square" alt="Docker Pulls" />
</a>
<a href="https://www.typescriptlang.org/">
<img src="https://img.shields.io/badge/TypeScript-Ready-blue?style=flat-square&logo=typescript" alt="TypeScript" />
</a>
</p>
---
## 项目简介 ## 项目简介
网易云音乐第三方 Node.js API, 支持丰富的音乐相关接口,适合自建服务、二次开发和多平台部署(如果原版诈尸, 我会及时同步 or 归档)。 本项目为网易云音乐第三方 Node.js API基于停更的原版 API 持续维护,支持丰富的音乐相关接口,适合自建服务、二次开发和多平台部署(如果原版诈尸, 我会及时同步 or 归档)。
> [!IMPORTANT] > [!IMPORTANT]
> >
@ -211,6 +183,15 @@ pnpm test
- 欢迎提交 PR、Issue 参与维护 - 欢迎提交 PR、Issue 参与维护
## 最近更新日志
### 4.30.0 | 2026.02.06
- feat: 新增音乐人黑胶会员任务接口 `/musician/vip/tasks` (#95)
- feat: 自动构建: 添加Windows、Linux、macOS预编译二进制文件 (#88)
- fix: 修复模块未定义问题
- chore: 更新依赖项 (music-metadata: ^11.11.1 -> ^11.11.2, ansi-escapes: ^7.2.0 -> ^7.3.0, commander: ^14.0.2 -> ^14.0.3)
- chore: 更新GitHub Actions (checkout: v4 -> v6, setup-node: v4 -> v6, upload-artifact: v4 -> v6, download-artifact: v4 -> v7, github-script: v7 -> v8)
- refactor: 注释掉IP地址日志输出以提升隐私保护
### 致谢 ### 致谢
原作者 [Binaryify/NeteaseCloudMusicApi](https://github.com/binaryify/NeteaseCloudMusicApi) 项目为本项目基础 (该项目在`npmjs`网站上仍持续维护, 但 github 仓库已不再更新) 原作者 [Binaryify/NeteaseCloudMusicApi](https://github.com/binaryify/NeteaseCloudMusicApi) 项目为本项目基础 (该项目在`npmjs`网站上仍持续维护, 但 github 仓库已不再更新)
@ -232,7 +213,6 @@ pnpm test
| Java | [JackuXL](https://github.com/JackuXL) | [NeteaseCloudMusicApi-SDK](https://github.com/JackuXL/NeteaseCloudMusicApi-SDK) | 第三方 | | Java | [JackuXL](https://github.com/JackuXL) | [NeteaseCloudMusicApi-SDK](https://github.com/JackuXL/NeteaseCloudMusicApi-SDK) | 第三方 |
| Java | [1015770492](https://github.com/1015770492) | https://github.com/1015770492/yumbo-music-utils | 第三方 | | Java | [1015770492](https://github.com/1015770492) | https://github.com/1015770492/yumbo-music-utils | 第三方 |
| Python | [盧瞳](https://github.com/2061360308) | [NeteaseCloudMusic_PythonSDK](https://github.com/2061360308/NeteaseCloudMusic_PythonSDK) | 第三方 | | Python | [盧瞳](https://github.com/2061360308) | [NeteaseCloudMusic_PythonSDK](https://github.com/2061360308/NeteaseCloudMusic_PythonSDK) | 第三方 |
| Swift | [Lincb522](https://github.com/Lincb522) | [NeteaseCloudMusicApi-Swift](https://github.com/Lincb522/NeteaseCloudMusicAPI-Swift) | 第三方 |
### 依赖此项目的优秀开源项目 ### 依赖此项目的优秀开源项目
@ -241,10 +221,6 @@ pnpm test
- [qier2222/YesPlayMusic](https://github.com/qier222/YesPlayMusic) - [qier2222/YesPlayMusic](https://github.com/qier222/YesPlayMusic)
- [MaigoLabs/amaoke.app](https://github.com/MaigoLabs/amaoke.app)
- [Yueby/music-together](https://github.com/Yueby/music-together)
## License ## License
[MIT License](https://github.com/MoeFurina/NeteaseCloudMusicApiEnhanced/blob/main/LICENSE) [MIT License](https://github.com/MoeFurina/NeteaseCloudMusicApiEnhanced/blob/main/LICENSE)

View File

@ -1 +0,0 @@
import './app.js'

View File

@ -1,30 +0,0 @@
// 评论统计数据
// type: 0=歌曲 1=MV 2=歌单 3=专辑 4=电台节目 5=视频 6=动态 7=电台
// ids: 资源 ID 列表,多个用逗号分隔,如 "123,456"
const { resourceTypeMap } = require('../util/config.json')
const createOption = require('../util/option.js')
// 从 resourceTypeMap 的前缀值中提取网易云内部资源类型编号
// 例如 "R_SO_4_" -> "4", "A_DR_14_" -> "14"
const resourceTypeIdMap = Object.fromEntries(
Object.entries(resourceTypeMap).map(([key, prefix]) => [
key,
prefix.replace(/_$/, '').split('_').pop(),
]),
)
module.exports = (query, request) => {
const ids = String(query.ids || query.id || '')
.split(',')
.map((id) => id.trim())
.filter(Boolean)
return request(
`/api/resource/commentInfo/list`,
{
resourceType: resourceTypeIdMap[String(query.type || 0)],
resourceIds: JSON.stringify(ids),
},
createOption(query, 'weapi'),
)
}

View File

@ -1,5 +1,77 @@
// 夹带私货的东西就不要放在这里了 // GD音乐台get(适配SPlayer的UNM-Server)
// 感谢来自GD Studio的开发API
// https://music.gdstudio.xyz/
const createOption = require('../util/option.js')
module.exports = async (query, request) => { module.exports = async (query, request) => {
return { status: 200, body: { code: 200, data: [] } } try {
const { id, br = '320' } = query
if (!id) {
return {
status: 400,
body: {
code: 400,
message: '缺少必要参数 id',
data: [],
},
}
}
const validBR = ['128', '192', '320', '740', '999']
// const covertBR = ['128000', '192000', '320000','740000', '999000']
if (!validBR.includes(br)) {
return {
status: 400,
body: {
code: 400,
message: '无效音质参数',
allowed_values: validBR,
data: [],
},
}
}
const apiUrl = new URL('https://music-api.gdstudio.xyz/api.php')
apiUrl.searchParams.append('types', 'url')
apiUrl.searchParams.append('id', id)
apiUrl.searchParams.append('br', br)
const response = await fetch(apiUrl.toString())
if (!response.ok) throw new Error(`API 响应状态: ${response.status}`)
const result = await response.json()
// 代理逻辑
const useProxy = process.env.ENABLE_PROXY || false
const proxy = process.env.PROXY_URL
if (useProxy && result.url && result.url.includes('kuwo')) {
result.proxyUrl = proxy + result.url.replace(/^http:\/\//, 'http/')
}
return {
status: 200,
body: {
code: 200,
message: '请求成功',
data: {
id,
br,
url: result.url,
...(proxy && result.proxyUrl ? { proxyUrl: result.proxyUrl } : {}),
},
},
}
} catch (error) {
console.error('Error in song_url_ncmget:', error)
return {
status: 500,
body: {
code: 500,
message: '服务器处理请求失败',
...(process.env.NODE_ENV === 'development'
? { error: error.message }
: {}),
data: [],
},
}
}
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "@neteasecloudmusicapienhanced/api", "name": "@neteasecloudmusicapienhanced/api",
"version": "4.30.2", "version": "4.30.1",
"description": "全网最全的网易云音乐API接口 || A revival project for NeteaseCloudMusicApi Node.js Services (Half Refactor & Enhanced) || 网易云音乐 API 备份 + 增强 || 本项目自原版v4.28.0版本后开始自行维护", "description": "全网最全的网易云音乐API接口 || A revival project for NeteaseCloudMusicApi Node.js Services (Half Refactor & Enhanced) || 网易云音乐 API 备份 + 增强 || 本项目自原版v4.28.0版本后开始自行维护",
"scripts": { "scripts": {
"dev": "nodemon app.js", "dev": "nodemon app.js",
@ -65,13 +65,13 @@
"data" "data"
], ],
"dependencies": { "dependencies": {
"@neteasecloudmusicapienhanced/unblockmusic-utils": "^0.2.3", "@neteasecloudmusicapienhanced/unblockmusic-utils": "^0.2.2",
"axios": "^1.13.5", "axios": "^1.13.5",
"crypto-js": "^4.2.0", "crypto-js": "^4.2.0",
"dotenv": "^17.3.1", "dotenv": "^17.2.4",
"express": "^5.2.1", "express": "^5.2.1",
"express-fileupload": "^1.5.2", "express-fileupload": "^1.5.2",
"music-metadata": "^11.12.1", "music-metadata": "^11.12.0",
"node-forge": "^1.3.3", "node-forge": "^1.3.3",
"pac-proxy-agent": "^7.2.0", "pac-proxy-agent": "^7.2.0",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
@ -82,26 +82,26 @@
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.3.3", "@eslint/eslintrc": "^3.3.3",
"@eslint/js": "^9.39.3", "@eslint/js": "^9.39.2",
"@types/express": "^5.0.6", "@types/express": "^5.0.6",
"@types/express-fileupload": "^1.5.1", "@types/express-fileupload": "^1.5.1",
"@types/mocha": "^10.0.10", "@types/mocha": "^10.0.10",
"@types/node": "25.0.9", "@types/node": "25.0.9",
"@typescript-eslint/eslint-plugin": "^8.56.0", "@typescript-eslint/eslint-plugin": "^8.46.3",
"@typescript-eslint/parser": "^8.56.0", "@typescript-eslint/parser": "^8.53.0",
"eslint": "^9.39.3", "eslint": "^9.39.0",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-html": "^8.1.4", "eslint-plugin-html": "^8.1.3",
"eslint-plugin-prettier": "^5.5.5", "eslint-plugin-prettier": "^5.5.5",
"globals": "^16.5.0", "globals": "^16.5.0",
"husky": "^9.1.7", "husky": "^9.1.7",
"intelli-espower-loader": "^1.1.0", "intelli-espower-loader": "^1.1.0",
"lint-staged": "^16.2.7", "lint-staged": "^16.2.7",
"mocha": "^11.7.5", "mocha": "^11.7.5",
"nodemon": "^3.1.14", "nodemon": "^3.1.11",
"pkg": "^5.8.1", "pkg": "^5.8.1",
"power-assert": "^1.6.1", "power-assert": "^1.6.1",
"prettier": "^3.8.1", "prettier": "^3.7.4",
"typescript": "^5.9.3" "typescript": "^5.9.3"
} }
} }

463
pnpm-lock.yaml generated
View File

@ -9,8 +9,8 @@ importers:
.: .:
dependencies: dependencies:
'@neteasecloudmusicapienhanced/unblockmusic-utils': '@neteasecloudmusicapienhanced/unblockmusic-utils':
specifier: ^0.2.3 specifier: ^0.2.2
version: 0.2.3 version: 0.2.2
axios: axios:
specifier: ^1.13.5 specifier: ^1.13.5
version: 1.13.5 version: 1.13.5
@ -18,8 +18,8 @@ importers:
specifier: ^4.2.0 specifier: ^4.2.0
version: 4.2.0 version: 4.2.0
dotenv: dotenv:
specifier: ^17.3.1 specifier: ^17.2.4
version: 17.3.1 version: 17.2.4
express: express:
specifier: ^5.2.1 specifier: ^5.2.1
version: 5.2.1 version: 5.2.1
@ -27,8 +27,8 @@ importers:
specifier: ^1.5.2 specifier: ^1.5.2
version: 1.5.2 version: 1.5.2
music-metadata: music-metadata:
specifier: ^11.12.1 specifier: ^11.12.0
version: 11.12.1 version: 11.12.0
node-forge: node-forge:
specifier: ^1.3.3 specifier: ^1.3.3
version: 1.3.3 version: 1.3.3
@ -55,8 +55,8 @@ importers:
specifier: ^3.3.3 specifier: ^3.3.3
version: 3.3.3 version: 3.3.3
'@eslint/js': '@eslint/js':
specifier: ^9.39.3 specifier: ^9.39.2
version: 9.39.3 version: 9.39.2
'@types/express': '@types/express':
specifier: ^5.0.6 specifier: ^5.0.6
version: 5.0.6 version: 5.0.6
@ -70,23 +70,23 @@ importers:
specifier: 25.0.9 specifier: 25.0.9
version: 25.0.9 version: 25.0.9
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: ^8.56.0 specifier: ^8.46.3
version: 8.56.0(@typescript-eslint/parser@8.56.1(eslint@9.39.3)(typescript@5.9.3))(eslint@9.39.3)(typescript@5.9.3) version: 8.46.3(@typescript-eslint/parser@8.56.0(eslint@9.39.0)(typescript@5.9.3))(eslint@9.39.0)(typescript@5.9.3)
'@typescript-eslint/parser': '@typescript-eslint/parser':
specifier: ^8.56.0 specifier: ^8.53.0
version: 8.56.1(eslint@9.39.3)(typescript@5.9.3) version: 8.56.0(eslint@9.39.0)(typescript@5.9.3)
eslint: eslint:
specifier: ^9.39.3 specifier: ^9.39.0
version: 9.39.3 version: 9.39.0
eslint-config-prettier: eslint-config-prettier:
specifier: ^10.1.8 specifier: ^10.1.8
version: 10.1.8(eslint@9.39.3) version: 10.1.8(eslint@9.39.0)
eslint-plugin-html: eslint-plugin-html:
specifier: ^8.1.4 specifier: ^8.1.3
version: 8.1.4 version: 8.1.3
eslint-plugin-prettier: eslint-plugin-prettier:
specifier: ^5.5.5 specifier: ^5.5.5
version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.3))(eslint@9.39.3)(prettier@3.8.1) version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.0))(eslint@9.39.0)(prettier@3.7.4)
globals: globals:
specifier: ^16.5.0 specifier: ^16.5.0
version: 16.5.0 version: 16.5.0
@ -103,8 +103,8 @@ importers:
specifier: ^11.7.5 specifier: ^11.7.5
version: 11.7.5 version: 11.7.5
nodemon: nodemon:
specifier: ^3.1.14 specifier: ^3.1.11
version: 3.1.14 version: 3.1.11
pkg: pkg:
specifier: ^5.8.1 specifier: ^5.8.1
version: 5.8.1 version: 5.8.1
@ -112,8 +112,8 @@ importers:
specifier: ^1.6.1 specifier: ^1.6.1
version: 1.6.1 version: 1.6.1
prettier: prettier:
specifier: ^3.8.1 specifier: ^3.7.4
version: 3.8.1 version: 3.7.4
typescript: typescript:
specifier: ^5.9.3 specifier: ^5.9.3
version: 5.9.3 version: 5.9.3
@ -170,8 +170,12 @@ packages:
resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@9.39.3': '@eslint/js@9.39.0':
resolution: {integrity: sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==} resolution: {integrity: sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@9.39.2':
resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.7': '@eslint/object-schema@2.1.7':
@ -215,8 +219,8 @@ packages:
'@jridgewell/trace-mapping@0.3.31': '@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@neteasecloudmusicapienhanced/unblockmusic-utils@0.2.3': '@neteasecloudmusicapienhanced/unblockmusic-utils@0.2.2':
resolution: {integrity: sha512-hhyGdOng6EWJmbV6L9TBVl5IHEzuDvGeCZz1o0XCSQ73I4UZ5jkW3OCQ/r7xhNiosKP0rIWVWeiUMTo3FaSgtw==} resolution: {integrity: sha512-3YdfPWL/bLhsdUtvZ4nBEgeZjyy0QLD7Py9v7uwEt7V2WQK+q1qV2EWKn9TkCkeOujwCMNvGbhiWouk0PJnP6g==}
hasBin: true hasBin: true
'@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir@2.1.5':
@ -294,19 +298,25 @@ packages:
'@types/serve-static@2.2.0': '@types/serve-static@2.2.0':
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
'@typescript-eslint/eslint-plugin@8.56.0': '@typescript-eslint/eslint-plugin@8.46.3':
resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} resolution: {integrity: sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.46.3
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/parser@8.56.0':
resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^8.56.0
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/parser@8.56.1': '@typescript-eslint/project-service@8.46.3':
resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==} resolution: {integrity: sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/project-service@8.56.0': '@typescript-eslint/project-service@8.56.0':
@ -315,19 +325,19 @@ packages:
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/project-service@8.56.1': '@typescript-eslint/scope-manager@8.46.3':
resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} resolution: {integrity: sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/scope-manager@8.56.0': '@typescript-eslint/scope-manager@8.56.0':
resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/scope-manager@8.56.1': '@typescript-eslint/tsconfig-utils@8.46.3':
resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} resolution: {integrity: sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/tsconfig-utils@8.56.0': '@typescript-eslint/tsconfig-utils@8.56.0':
resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==}
@ -335,26 +345,26 @@ packages:
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/tsconfig-utils@8.56.1': '@typescript-eslint/type-utils@8.46.3':
resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} resolution: {integrity: sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/type-utils@8.56.0': '@typescript-eslint/types@8.46.3':
resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/types@8.56.0': '@typescript-eslint/types@8.56.0':
resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/types@8.56.1': '@typescript-eslint/typescript-estree@8.46.3':
resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} resolution: {integrity: sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/typescript-estree@8.56.0': '@typescript-eslint/typescript-estree@8.56.0':
resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==}
@ -362,27 +372,21 @@ packages:
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/typescript-estree@8.56.1': '@typescript-eslint/utils@8.46.3':
resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} resolution: {integrity: sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/utils@8.56.0': '@typescript-eslint/visitor-keys@8.46.3':
resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} resolution: {integrity: sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/visitor-keys@8.56.0': '@typescript-eslint/visitor-keys@8.56.0':
resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/visitor-keys@8.56.1':
resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@unblockneteasemusic/server@0.28.0': '@unblockneteasemusic/server@0.28.0':
resolution: {integrity: sha512-FLXNEMc9ItoAhhhemxKJzpJ+9DkWsfnxE5PYTCIzqZarYVUCxeKKEf0CwGeUeIW35z1Ekl0wFU4l10RDWVCr4A==} resolution: {integrity: sha512-FLXNEMc9ItoAhhhemxKJzpJ+9DkWsfnxE5PYTCIzqZarYVUCxeKKEf0CwGeUeIW35z1Ekl0wFU4l10RDWVCr4A==}
engines: {node: '>= 12'} engines: {node: '>= 12'}
@ -409,8 +413,8 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
hasBin: true hasBin: true
acorn@8.16.0: acorn@8.15.0:
resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
hasBin: true hasBin: true
@ -422,8 +426,8 @@ packages:
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
ajv@6.14.0: ajv@6.12.6:
resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
amdefine@1.0.1: amdefine@1.0.1:
resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==}
@ -514,17 +518,12 @@ packages:
balanced-match@1.0.2: balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
balanced-match@4.0.4:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
base64-js@1.5.1: base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
basic-ftp@5.1.0: basic-ftp@5.1.0:
resolution: {integrity: sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==} resolution: {integrity: sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
deprecated: Security vulnerability fixed in 5.2.0, please upgrade
binary-extensions@2.3.0: binary-extensions@2.3.0:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
@ -547,14 +546,6 @@ packages:
brace-expansion@2.0.2: brace-expansion@2.0.2:
resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
brace-expansion@5.0.3:
resolution: {integrity: sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==}
engines: {node: 18 || 20 || >=22}
brace-expansion@5.0.4:
resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==}
engines: {node: 18 || 20 || >=22}
braces@3.0.3: braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -834,8 +825,8 @@ packages:
domutils@3.2.2: domutils@3.2.2:
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
dotenv@17.3.1: dotenv@17.2.4:
resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} resolution: {integrity: sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==}
engines: {node: '>=12'} engines: {node: '>=12'}
dunder-proto@1.0.1: dunder-proto@1.0.1:
@ -971,8 +962,8 @@ packages:
peerDependencies: peerDependencies:
eslint: '>=7.0.0' eslint: '>=7.0.0'
eslint-plugin-html@8.1.4: eslint-plugin-html@8.1.3:
resolution: {integrity: sha512-Eno3oPEj3s6AhvDJ5zHhnHPDvXp6LNFXuy3w51fNebOKYuTrfjOHUGwP+mOrGFpR6eOJkO1xkB8ivtbfMjbMjg==} resolution: {integrity: sha512-cnCdO7yb/jrvgSJJAfRkGDOwLu1AOvNdw8WCD6nh/2C4RnxuI4tz6QjMEAmmSiHSeugq/fXcIO8yBpIBQrMZCg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
eslint-plugin-prettier@5.5.5: eslint-plugin-prettier@5.5.5:
@ -1001,12 +992,12 @@ packages:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@5.0.1: eslint-visitor-keys@5.0.0:
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24} engines: {node: ^20.19.0 || ^22.13.0 || >=24}
eslint@9.39.3: eslint@9.39.0:
resolution: {integrity: sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==} resolution: {integrity: sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -1242,8 +1233,8 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*} engines: {node: 6.* || 8.* || >= 10.*}
get-east-asian-width@1.5.0: get-east-asian-width@1.4.0:
resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
get-intrinsic@1.3.0: get-intrinsic@1.3.0:
@ -1301,6 +1292,9 @@ packages:
graceful-fs@4.2.11: graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
has-bigints@1.1.0: has-bigints@1.1.0:
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@ -1708,30 +1702,18 @@ packages:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
minimatch@10.2.2: minimatch@3.1.2:
resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
engines: {node: 18 || 20 || >=22}
minimatch@10.2.4: minimatch@9.0.5:
resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: 18 || 20 || >=22}
minimatch@3.1.3:
resolution: {integrity: sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==}
minimatch@9.0.6:
resolution: {integrity: sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==}
engines: {node: '>=16 || 14 >=14.17'}
minimatch@9.0.9:
resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
minimist@1.2.8: minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
minipass@7.1.3: minipass@7.1.2:
resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
mkdirp-classic@0.5.3: mkdirp-classic@0.5.3:
@ -1758,8 +1740,8 @@ packages:
multistream@4.1.0: multistream@4.1.0:
resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==}
music-metadata@11.12.1: music-metadata@11.12.0:
resolution: {integrity: sha512-j++ltLxHDb5VCXET9FzQ8bnueiLHwQKgCO7vcbkRH/3F7fRjPkv6qncGEJ47yFhmemcYtgvsOAlcQ1dRBTkDjg==} resolution: {integrity: sha512-9ChYnmVmyHvFxR2g0MWFSHmJfbssRy07457G4gbb4LA9WYvyZea/8EMbqvg5dcv4oXNCNL01m8HXtymLlhhkYg==}
engines: {node: '>=18'} engines: {node: '>=18'}
nano-spawn@2.0.0: nano-spawn@2.0.0:
@ -1807,8 +1789,8 @@ packages:
node-windows@1.0.0-beta.8: node-windows@1.0.0-beta.8:
resolution: {integrity: sha512-uLekXnSeem3nW5escID224Fd0U/1VtvE796JpSpOY+c73Cslz/Qn2WUHRJyPQJEMrNGAy/FMRFjjhh4z1alZTA==} resolution: {integrity: sha512-uLekXnSeem3nW5escID224Fd0U/1VtvE796JpSpOY+c73Cslz/Qn2WUHRJyPQJEMrNGAy/FMRFjjhh4z1alZTA==}
nodemon@3.1.14: nodemon@3.1.11:
resolution: {integrity: sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==} resolution: {integrity: sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g==}
engines: {node: '>=10'} engines: {node: '>=10'}
hasBin: true hasBin: true
@ -2017,7 +1999,6 @@ packages:
prebuild-install@7.1.1: prebuild-install@7.1.1:
resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
engines: {node: '>=10'} engines: {node: '>=10'}
deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
hasBin: true hasBin: true
prelude-ls@1.1.2: prelude-ls@1.1.2:
@ -2032,8 +2013,8 @@ packages:
resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
prettier@3.8.1: prettier@3.7.4:
resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
@ -2069,12 +2050,8 @@ packages:
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
hasBin: true hasBin: true
qs@6.14.2: qs@6.14.1:
resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==}
engines: {node: '>=0.6'}
qs@6.15.0:
resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==}
engines: {node: '>=0.6'} engines: {node: '>=0.6'}
queue-microtask@1.2.3: queue-microtask@1.2.3:
@ -2349,8 +2326,8 @@ packages:
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
string-width@8.2.0: string-width@8.1.1:
resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} resolution: {integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==}
engines: {node: '>=20'} engines: {node: '>=20'}
string.prototype.trim@1.2.10: string.prototype.trim@1.2.10:
@ -2704,9 +2681,9 @@ snapshots:
'@borewit/text-codec@0.2.1': {} '@borewit/text-codec@0.2.1': {}
'@eslint-community/eslint-utils@4.9.1(eslint@9.39.3)': '@eslint-community/eslint-utils@4.9.1(eslint@9.39.0)':
dependencies: dependencies:
eslint: 9.39.3 eslint: 9.39.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {} '@eslint-community/regexpp@4.12.2': {}
@ -2715,7 +2692,7 @@ snapshots:
dependencies: dependencies:
'@eslint/object-schema': 2.1.7 '@eslint/object-schema': 2.1.7
debug: 4.4.3 debug: 4.4.3
minimatch: 3.1.3 minimatch: 3.1.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -2729,19 +2706,21 @@ snapshots:
'@eslint/eslintrc@3.3.3': '@eslint/eslintrc@3.3.3':
dependencies: dependencies:
ajv: 6.14.0 ajv: 6.12.6
debug: 4.4.3 debug: 4.4.3
espree: 10.4.0 espree: 10.4.0
globals: 14.0.0 globals: 14.0.0
ignore: 5.3.2 ignore: 5.3.2
import-fresh: 3.3.1 import-fresh: 3.3.1
js-yaml: 4.1.1 js-yaml: 4.1.1
minimatch: 3.1.3 minimatch: 3.1.2
strip-json-comments: 3.1.1 strip-json-comments: 3.1.1
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@eslint/js@9.39.3': {} '@eslint/js@9.39.0': {}
'@eslint/js@9.39.2': {}
'@eslint/object-schema@2.1.7': {} '@eslint/object-schema@2.1.7': {}
@ -2784,7 +2763,7 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2 '@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/sourcemap-codec': 1.5.5
'@neteasecloudmusicapienhanced/unblockmusic-utils@0.2.3': '@neteasecloudmusicapienhanced/unblockmusic-utils@0.2.2':
dependencies: dependencies:
'@unblockneteasemusic/server': 0.28.0 '@unblockneteasemusic/server': 0.28.0
axios: 1.13.5 axios: 1.13.5
@ -2878,15 +2857,16 @@ snapshots:
'@types/http-errors': 2.0.5 '@types/http-errors': 2.0.5
'@types/node': 25.0.9 '@types/node': 25.0.9
'@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.1(eslint@9.39.3)(typescript@5.9.3))(eslint@9.39.3)(typescript@5.9.3)': '@typescript-eslint/eslint-plugin@8.46.3(@typescript-eslint/parser@8.56.0(eslint@9.39.0)(typescript@5.9.3))(eslint@9.39.0)(typescript@5.9.3)':
dependencies: dependencies:
'@eslint-community/regexpp': 4.12.2 '@eslint-community/regexpp': 4.12.2
'@typescript-eslint/parser': 8.56.1(eslint@9.39.3)(typescript@5.9.3) '@typescript-eslint/parser': 8.56.0(eslint@9.39.0)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/scope-manager': 8.46.3
'@typescript-eslint/type-utils': 8.56.0(eslint@9.39.3)(typescript@5.9.3) '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.0)(typescript@5.9.3)
'@typescript-eslint/utils': 8.56.0(eslint@9.39.3)(typescript@5.9.3) '@typescript-eslint/utils': 8.46.3(eslint@9.39.0)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.56.0 '@typescript-eslint/visitor-keys': 8.46.3
eslint: 9.39.3 eslint: 9.39.0
graphemer: 1.4.0
ignore: 7.0.5 ignore: 7.0.5
natural-compare: 1.4.0 natural-compare: 1.4.0
ts-api-utils: 2.4.0(typescript@5.9.3) ts-api-utils: 2.4.0(typescript@5.9.3)
@ -2894,14 +2874,23 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/parser@8.56.1(eslint@9.39.3)(typescript@5.9.3)': '@typescript-eslint/parser@8.56.0(eslint@9.39.0)(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/scope-manager': 8.56.1 '@typescript-eslint/scope-manager': 8.56.0
'@typescript-eslint/types': 8.56.1 '@typescript-eslint/types': 8.56.0
'@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.56.1 '@typescript-eslint/visitor-keys': 8.56.0
debug: 4.4.3
eslint: 9.39.0
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/project-service@8.46.3(typescript@5.9.3)':
dependencies:
'@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3)
'@typescript-eslint/types': 8.46.3
debug: 4.4.3 debug: 4.4.3
eslint: 9.39.3
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -2915,48 +2904,55 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': '@typescript-eslint/scope-manager@8.46.3':
dependencies: dependencies:
'@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) '@typescript-eslint/types': 8.46.3
'@typescript-eslint/types': 8.56.1 '@typescript-eslint/visitor-keys': 8.46.3
debug: 4.4.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@8.56.0': '@typescript-eslint/scope-manager@8.56.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.56.0 '@typescript-eslint/types': 8.56.0
'@typescript-eslint/visitor-keys': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0
'@typescript-eslint/scope-manager@8.56.1': '@typescript-eslint/tsconfig-utils@8.46.3(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/types': 8.56.1 typescript: 5.9.3
'@typescript-eslint/visitor-keys': 8.56.1
'@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)':
dependencies: dependencies:
typescript: 5.9.3 typescript: 5.9.3
'@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': '@typescript-eslint/type-utils@8.46.3(eslint@9.39.0)(typescript@5.9.3)':
dependencies: dependencies:
typescript: 5.9.3 '@typescript-eslint/types': 8.46.3
'@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
'@typescript-eslint/type-utils@8.56.0(eslint@9.39.3)(typescript@5.9.3)': '@typescript-eslint/utils': 8.46.3(eslint@9.39.0)(typescript@5.9.3)
dependencies:
'@typescript-eslint/types': 8.56.0
'@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
'@typescript-eslint/utils': 8.56.0(eslint@9.39.3)(typescript@5.9.3)
debug: 4.4.3 debug: 4.4.3
eslint: 9.39.3 eslint: 9.39.0
ts-api-utils: 2.4.0(typescript@5.9.3) ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/types@8.46.3': {}
'@typescript-eslint/types@8.56.0': {} '@typescript-eslint/types@8.56.0': {}
'@typescript-eslint/types@8.56.1': {} '@typescript-eslint/typescript-estree@8.46.3(typescript@5.9.3)':
dependencies:
'@typescript-eslint/project-service': 8.46.3(typescript@5.9.3)
'@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3)
'@typescript-eslint/types': 8.46.3
'@typescript-eslint/visitor-keys': 8.46.3
debug: 4.4.3
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.7.4
ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)':
dependencies: dependencies:
@ -2965,7 +2961,7 @@ snapshots:
'@typescript-eslint/types': 8.56.0 '@typescript-eslint/types': 8.56.0
'@typescript-eslint/visitor-keys': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0
debug: 4.4.3 debug: 4.4.3
minimatch: 9.0.9 minimatch: 9.0.5
semver: 7.7.4 semver: 7.7.4
tinyglobby: 0.2.15 tinyglobby: 0.2.15
ts-api-utils: 2.4.0(typescript@5.9.3) ts-api-utils: 2.4.0(typescript@5.9.3)
@ -2973,41 +2969,26 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': '@typescript-eslint/utils@8.46.3(eslint@9.39.0)(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.0)
'@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.3
'@typescript-eslint/types': 8.56.1 '@typescript-eslint/types': 8.46.3
'@typescript-eslint/visitor-keys': 8.56.1 '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
debug: 4.4.3 eslint: 9.39.0
minimatch: 10.2.4
semver: 7.7.4
tinyglobby: 0.2.15
ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/utils@8.56.0(eslint@9.39.3)(typescript@5.9.3)': '@typescript-eslint/visitor-keys@8.46.3':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3) '@typescript-eslint/types': 8.46.3
'@typescript-eslint/scope-manager': 8.56.0 eslint-visitor-keys: 4.2.1
'@typescript-eslint/types': 8.56.0
'@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
eslint: 9.39.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/visitor-keys@8.56.0': '@typescript-eslint/visitor-keys@8.56.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.56.0 '@typescript-eslint/types': 8.56.0
eslint-visitor-keys: 5.0.1 eslint-visitor-keys: 5.0.0
'@typescript-eslint/visitor-keys@8.56.1':
dependencies:
'@typescript-eslint/types': 8.56.1
eslint-visitor-keys: 5.0.1
'@unblockneteasemusic/server@0.28.0': '@unblockneteasemusic/server@0.28.0':
dependencies: dependencies:
@ -3027,13 +3008,13 @@ snapshots:
acorn-es7-plugin@1.1.7: {} acorn-es7-plugin@1.1.7: {}
acorn-jsx@5.3.2(acorn@8.16.0): acorn-jsx@5.3.2(acorn@8.15.0):
dependencies: dependencies:
acorn: 8.16.0 acorn: 8.15.0
acorn@5.7.4: {} acorn@5.7.4: {}
acorn@8.16.0: {} acorn@8.15.0: {}
agent-base@6.0.2: agent-base@6.0.2:
dependencies: dependencies:
@ -3043,7 +3024,7 @@ snapshots:
agent-base@7.1.4: {} agent-base@7.1.4: {}
ajv@6.14.0: ajv@6.12.6:
dependencies: dependencies:
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0 fast-json-stable-stringify: 2.1.0
@ -3133,8 +3114,6 @@ snapshots:
balanced-match@1.0.2: {} balanced-match@1.0.2: {}
balanced-match@4.0.4: {}
base64-js@1.5.1: {} base64-js@1.5.1: {}
basic-ftp@5.1.0: {} basic-ftp@5.1.0: {}
@ -3157,7 +3136,7 @@ snapshots:
http-errors: 2.0.1 http-errors: 2.0.1
iconv-lite: 0.4.24 iconv-lite: 0.4.24
on-finished: 2.4.1 on-finished: 2.4.1
qs: 6.14.2 qs: 6.14.1
raw-body: 2.5.3 raw-body: 2.5.3
type-is: 1.6.18 type-is: 1.6.18
unpipe: 1.0.0 unpipe: 1.0.0
@ -3172,7 +3151,7 @@ snapshots:
http-errors: 2.0.1 http-errors: 2.0.1
iconv-lite: 0.7.2 iconv-lite: 0.7.2
on-finished: 2.4.1 on-finished: 2.4.1
qs: 6.15.0 qs: 6.14.1
raw-body: 3.0.2 raw-body: 3.0.2
type-is: 2.0.1 type-is: 2.0.1
transitivePeerDependencies: transitivePeerDependencies:
@ -3187,14 +3166,6 @@ snapshots:
dependencies: dependencies:
balanced-match: 1.0.2 balanced-match: 1.0.2
brace-expansion@5.0.3:
dependencies:
balanced-match: 4.0.4
brace-expansion@5.0.4:
dependencies:
balanced-match: 4.0.4
braces@3.0.3: braces@3.0.3:
dependencies: dependencies:
fill-range: 7.1.1 fill-range: 7.1.1
@ -3282,7 +3253,7 @@ snapshots:
cli-truncate@5.1.1: cli-truncate@5.1.1:
dependencies: dependencies:
slice-ansi: 7.1.2 slice-ansi: 7.1.2
string-width: 8.2.0 string-width: 8.1.1
cliui@6.0.0: cliui@6.0.0:
dependencies: dependencies:
@ -3480,7 +3451,7 @@ snapshots:
domelementtype: 2.3.0 domelementtype: 2.3.0
domhandler: 5.0.3 domhandler: 5.0.3
dotenv@17.3.1: {} dotenv@17.2.4: {}
dunder-proto@1.0.1: dunder-proto@1.0.1:
dependencies: dependencies:
@ -3689,22 +3660,22 @@ snapshots:
esrecurse: 4.3.0 esrecurse: 4.3.0
estraverse: 4.3.0 estraverse: 4.3.0
eslint-config-prettier@10.1.8(eslint@9.39.3): eslint-config-prettier@10.1.8(eslint@9.39.0):
dependencies: dependencies:
eslint: 9.39.3 eslint: 9.39.0
eslint-plugin-html@8.1.4: eslint-plugin-html@8.1.3:
dependencies: dependencies:
htmlparser2: 10.1.0 htmlparser2: 10.1.0
eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.3))(eslint@9.39.3)(prettier@3.8.1): eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.0))(eslint@9.39.0)(prettier@3.7.4):
dependencies: dependencies:
eslint: 9.39.3 eslint: 9.39.0
prettier: 3.8.1 prettier: 3.7.4
prettier-linter-helpers: 1.0.1 prettier-linter-helpers: 1.0.1
synckit: 0.11.12 synckit: 0.11.12
optionalDependencies: optionalDependencies:
eslint-config-prettier: 10.1.8(eslint@9.39.3) eslint-config-prettier: 10.1.8(eslint@9.39.0)
eslint-scope@8.4.0: eslint-scope@8.4.0:
dependencies: dependencies:
@ -3715,23 +3686,23 @@ snapshots:
eslint-visitor-keys@4.2.1: {} eslint-visitor-keys@4.2.1: {}
eslint-visitor-keys@5.0.1: {} eslint-visitor-keys@5.0.0: {}
eslint@9.39.3: eslint@9.39.0:
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3) '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.0)
'@eslint-community/regexpp': 4.12.2 '@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.21.1 '@eslint/config-array': 0.21.1
'@eslint/config-helpers': 0.4.2 '@eslint/config-helpers': 0.4.2
'@eslint/core': 0.17.0 '@eslint/core': 0.17.0
'@eslint/eslintrc': 3.3.3 '@eslint/eslintrc': 3.3.3
'@eslint/js': 9.39.3 '@eslint/js': 9.39.0
'@eslint/plugin-kit': 0.4.1 '@eslint/plugin-kit': 0.4.1
'@humanfs/node': 0.16.7 '@humanfs/node': 0.16.7
'@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3 '@humanwhocodes/retry': 0.4.3
'@types/estree': 1.0.8 '@types/estree': 1.0.8
ajv: 6.14.0 ajv: 6.12.6
chalk: 4.1.2 chalk: 4.1.2
cross-spawn: 7.0.6 cross-spawn: 7.0.6
debug: 4.4.3 debug: 4.4.3
@ -3750,7 +3721,7 @@ snapshots:
is-glob: 4.0.3 is-glob: 4.0.3
json-stable-stringify-without-jsonify: 1.0.1 json-stable-stringify-without-jsonify: 1.0.1
lodash.merge: 4.6.2 lodash.merge: 4.6.2
minimatch: 3.1.3 minimatch: 3.1.2
natural-compare: 1.4.0 natural-compare: 1.4.0
optionator: 0.9.4 optionator: 0.9.4
transitivePeerDependencies: transitivePeerDependencies:
@ -3767,7 +3738,7 @@ snapshots:
dependencies: dependencies:
convert-source-map: 1.9.0 convert-source-map: 1.9.0
espower-source: 2.3.0 espower-source: 2.3.0
minimatch: 3.1.3 minimatch: 3.1.2
source-map-support: 0.4.18 source-map-support: 0.4.18
xtend: 4.0.2 xtend: 4.0.2
@ -3806,8 +3777,8 @@ snapshots:
espree@10.4.0: espree@10.4.0:
dependencies: dependencies:
acorn: 8.16.0 acorn: 8.15.0
acorn-jsx: 5.3.2(acorn@8.16.0) acorn-jsx: 5.3.2(acorn@8.15.0)
eslint-visitor-keys: 4.2.1 eslint-visitor-keys: 4.2.1
esprima@2.7.3: {} esprima@2.7.3: {}
@ -3870,7 +3841,7 @@ snapshots:
parseurl: 1.3.3 parseurl: 1.3.3
path-to-regexp: 0.1.12 path-to-regexp: 0.1.12
proxy-addr: 2.0.7 proxy-addr: 2.0.7
qs: 6.14.2 qs: 6.14.1
range-parser: 1.2.1 range-parser: 1.2.1
safe-buffer: 5.2.1 safe-buffer: 5.2.1
send: 0.19.2 send: 0.19.2
@ -3905,7 +3876,7 @@ snapshots:
once: 1.4.0 once: 1.4.0
parseurl: 1.3.3 parseurl: 1.3.3
proxy-addr: 2.0.7 proxy-addr: 2.0.7
qs: 6.15.0 qs: 6.14.1
range-parser: 1.2.1 range-parser: 1.2.1
router: 2.2.0 router: 2.2.0
send: 1.2.1 send: 1.2.1
@ -4068,7 +4039,7 @@ snapshots:
get-caller-file@2.0.5: {} get-caller-file@2.0.5: {}
get-east-asian-width@1.5.0: {} get-east-asian-width@1.4.0: {}
get-intrinsic@1.3.0: get-intrinsic@1.3.0:
dependencies: dependencies:
@ -4116,8 +4087,8 @@ snapshots:
dependencies: dependencies:
foreground-child: 3.3.1 foreground-child: 3.3.1
jackspeak: 3.4.3 jackspeak: 3.4.3
minimatch: 9.0.6 minimatch: 9.0.5
minipass: 7.1.3 minipass: 7.1.2
package-json-from-dist: 1.0.1 package-json-from-dist: 1.0.1
path-scurry: 1.11.1 path-scurry: 1.11.1
@ -4143,6 +4114,8 @@ snapshots:
graceful-fs@4.2.11: {} graceful-fs@4.2.11: {}
graphemer@1.4.0: {}
has-bigints@1.1.0: {} has-bigints@1.1.0: {}
has-flag@3.0.0: {} has-flag@3.0.0: {}
@ -4322,7 +4295,7 @@ snapshots:
is-fullwidth-code-point@5.1.0: is-fullwidth-code-point@5.1.0:
dependencies: dependencies:
get-east-asian-width: 1.5.0 get-east-asian-width: 1.4.0
is-generator-function@1.1.2: is-generator-function@1.1.2:
dependencies: dependencies:
@ -4529,29 +4502,17 @@ snapshots:
mimic-response@3.1.0: {} mimic-response@3.1.0: {}
minimatch@10.2.2: minimatch@3.1.2:
dependencies:
brace-expansion: 5.0.3
minimatch@10.2.4:
dependencies:
brace-expansion: 5.0.4
minimatch@3.1.3:
dependencies: dependencies:
brace-expansion: 1.1.12 brace-expansion: 1.1.12
minimatch@9.0.6: minimatch@9.0.5:
dependencies:
brace-expansion: 5.0.3
minimatch@9.0.9:
dependencies: dependencies:
brace-expansion: 2.0.2 brace-expansion: 2.0.2
minimist@1.2.8: {} minimist@1.2.8: {}
minipass@7.1.3: {} minipass@7.1.2: {}
mkdirp-classic@0.5.3: {} mkdirp-classic@0.5.3: {}
@ -4568,7 +4529,7 @@ snapshots:
is-path-inside: 3.0.3 is-path-inside: 3.0.3
js-yaml: 4.1.1 js-yaml: 4.1.1
log-symbols: 4.1.0 log-symbols: 4.1.0
minimatch: 9.0.6 minimatch: 9.0.5
ms: 2.1.3 ms: 2.1.3
picocolors: 1.1.1 picocolors: 1.1.1
serialize-javascript: 6.0.2 serialize-javascript: 6.0.2
@ -4594,7 +4555,7 @@ snapshots:
once: 1.4.0 once: 1.4.0
readable-stream: 3.6.2 readable-stream: 3.6.2
music-metadata@11.12.1: music-metadata@11.12.0:
dependencies: dependencies:
'@borewit/text-codec': 0.2.1 '@borewit/text-codec': 0.2.1
'@tokenizer/token': 0.3.0 '@tokenizer/token': 0.3.0
@ -4638,12 +4599,12 @@ snapshots:
xml: 1.0.1 xml: 1.0.1
yargs: 17.7.2 yargs: 17.7.2
nodemon@3.1.14: nodemon@3.1.11:
dependencies: dependencies:
chokidar: 3.6.0 chokidar: 3.6.0
debug: 4.4.3(supports-color@5.5.0) debug: 4.4.3(supports-color@5.5.0)
ignore-by-default: 1.0.1 ignore-by-default: 1.0.1
minimatch: 10.2.2 minimatch: 3.1.2
pstree.remy: 1.1.8 pstree.remy: 1.1.8
semver: 7.7.4 semver: 7.7.4
simple-update-notifier: 2.0.0 simple-update-notifier: 2.0.0
@ -4766,7 +4727,7 @@ snapshots:
path-scurry@1.11.1: path-scurry@1.11.1:
dependencies: dependencies:
lru-cache: 10.4.3 lru-cache: 10.4.3
minipass: 7.1.3 minipass: 7.1.2
path-to-regexp@0.1.12: {} path-to-regexp@0.1.12: {}
@ -4942,7 +4903,7 @@ snapshots:
dependencies: dependencies:
fast-diff: 1.3.0 fast-diff: 1.3.0
prettier@3.8.1: {} prettier@3.7.4: {}
process-nextick-args@2.0.1: {} process-nextick-args@2.0.1: {}
@ -4972,11 +4933,7 @@ snapshots:
pngjs: 5.0.0 pngjs: 5.0.0
yargs: 15.4.1 yargs: 15.4.1
qs@6.14.2: qs@6.14.1:
dependencies:
side-channel: 1.1.0
qs@6.15.0:
dependencies: dependencies:
side-channel: 1.1.0 side-channel: 1.1.0
@ -5329,12 +5286,12 @@ snapshots:
string-width@7.2.0: string-width@7.2.0:
dependencies: dependencies:
emoji-regex: 10.6.0 emoji-regex: 10.6.0
get-east-asian-width: 1.5.0 get-east-asian-width: 1.4.0
strip-ansi: 7.1.2 strip-ansi: 7.1.2
string-width@8.2.0: string-width@8.1.1:
dependencies: dependencies:
get-east-asian-width: 1.5.0 get-east-asian-width: 1.4.0
strip-ansi: 7.1.2 strip-ansi: 7.1.2
string.prototype.trim@1.2.10: string.prototype.trim@1.2.10:

View File

@ -1686,62 +1686,6 @@ tags: 歌单标签
**调用例子 :** `/comment/video?id=89ADDE33C0AAE8EC14B99F6750DB954D` **调用例子 :** `/comment/video?id=89ADDE33C0AAE8EC14B99F6750DB954D`
### 评论统计数据
说明 : 调用此接口 , 传入资源类型和资源 id 列表 , 可批量获取对应资源的评论统计数据 ( 不需要登录 )
**必选参数 :**
`type`: 数字 , 资源类型 , 对应以下类型
```
0: 歌曲
1: mv
2: 歌单
3: 专辑
4: 电台节目
5: 视频
6: 动态
7: 电台
```
`ids`: 资源 id 列表 , 多个 id 用逗号分隔 , 如 `186016,347230`
**接口地址 :** `/comment/info/list`
**调用例子 :** `/comment/info/list?type=0&ids=186016,347230`
**返回数据 :**
```json
{
"data": [
{
"latestLikedUsers": null,
"liked": false,
"comments": null,
"resourceType": 4,
"resourceId": 186016,
"commentUpgraded": false,
"musicianSaidCount": 0,
"commentCountDesc": "100w+",
"likedCount": 347,
"commentCount": 1970844,
"shareCount": 109721,
"threadId": "R_SO_4_186016"
}
],
"code": 200
}
```
### 热门评论 ### 热门评论
说明 : 调用此接口 , 传入 type, 资源 id 可获得对应资源热门评论 ( 不需要登录 ) 说明 : 调用此接口 , 传入 type, 资源 id 可获得对应资源热门评论 ( 不需要登录 )
@ -2839,14 +2783,12 @@ type : 地区
**1. 后端代理模式 (默认)** **1. 后端代理模式 (默认)**
文件通过服务器转发到云存储,调用简单,但受服务器限制: 文件通过服务器转发到云存储,调用简单,但受服务器限制:
- Vercel Serverless Functions 限制请求体大小为 4.5MB - Vercel Serverless Functions 限制请求体大小为 4.5MB
- 自建服务器需配置足够大的请求体限制 - 自建服务器需配置足够大的请求体限制
**2. 客户端直传模式 (推荐用于 Vercel)** **2. 客户端直传模式 (推荐用于 Vercel)**
文件直接从客户端上传到云存储服务器,绕过服务器限制: 文件直接从客户端上传到云存储服务器,绕过服务器限制:
- 支持大文件上传 - 支持大文件上传
- 适合 Vercel、Netlify 等有请求体限制的平台 - 适合 Vercel、Netlify 等有请求体限制的平台
- 需要前端配合实现 - 需要前端配合实现
@ -2858,14 +2800,12 @@ type : 地区
**接口地址 :** `/cloud/upload/token` **接口地址 :** `/cloud/upload/token`
**必选参数 :** **必选参数 :**
- `cookie`: 网易云音乐 Cookie (在请求体中传递) - `cookie`: 网易云音乐 Cookie (在请求体中传递)
- `md5`: 文件 MD5 值 - `md5`: 文件 MD5 值
- `fileSize`: 文件大小(字节) - `fileSize`: 文件大小(字节)
- `filename`: 文件名 - `filename`: 文件名
**返回数据 :** **返回数据 :**
```json ```json
{ {
"code": 200, "code": 200,
@ -2884,7 +2824,6 @@ type : 地区
**接口地址 :** `/cloud/upload/complete` **接口地址 :** `/cloud/upload/complete`
**必选参数 :** **必选参数 :**
- `cookie`: 网易云音乐 Cookie (在请求体中传递) - `cookie`: 网易云音乐 Cookie (在请求体中传递)
- `songId`: 歌曲 ID - `songId`: 歌曲 ID
- `resourceId`: 资源 ID - `resourceId`: 资源 ID
@ -2892,7 +2831,6 @@ type : 地区
- `filename`: 文件名 - `filename`: 文件名
**可选参数 :** **可选参数 :**
- `song`: 歌曲名 - `song`: 歌曲名
- `artist`: 艺术家 - `artist`: 艺术家
- `album`: 专辑名 - `album`: 专辑名
@ -2920,7 +2858,6 @@ type : 地区
**调用例子 :** `/cloud/match?uid=32953014&sid=aaa&asid=bbb` `/cloud/match?uid=32953014&sid=bbb&asid=0` **调用例子 :** `/cloud/match?uid=32953014&sid=aaa&asid=bbb` `/cloud/match?uid=32953014&sid=bbb&asid=0`
### 获取云盘歌词 ### 获取云盘歌词
说明: 调用此接口, 获取云盘歌曲的歌词,歌词来自此文件的音乐元数据`LYRICS`标签。 说明: 调用此接口, 获取云盘歌曲的歌词,歌词来自此文件的音乐元数据`LYRICS`标签。
**可选参数 :** **可选参数 :**
@ -5014,11 +4951,12 @@ let data = encodeURIComponent(
**调用例子:** `/vip/sign/info` **调用例子:** `/vip/sign/info`
### 用户的创建歌单列表 ### 用户的创建歌单列表
说明 : 调用此接口, 传入用户id, 获取用户的创建歌单列表 说明 : 调用此接口, 传入用户id, 获取用户的创建歌单列表
**必选参数 :** **必选参数 :**
`uid`: 用户 id `uid`: 用户 id
@ -5036,7 +4974,7 @@ let data = encodeURIComponent(
说明 : 调用此接口, 传入用户id, 获取用户的收藏歌单列表 说明 : 调用此接口, 传入用户id, 获取用户的收藏歌单列表
**必选参数 :** **必选参数 :**
`uid`: 用户 id `uid`: 用户 id

View File

@ -5,7 +5,7 @@
<meta name="KEYWords" contect="网易云音乐,网易云音乐 api,网易云音乐 nodejs,网易云音乐 node.js"> <meta name="KEYWords" contect="网易云音乐,网易云音乐 api,网易云音乐 nodejs,网易云音乐 node.js">
<meta name="description" content="网易云音乐 NodeJS API Enhanced"> <meta name="description" content="网易云音乐 NodeJS API Enhanced">
<title>网易云音乐 NodeJS API Enhanced</title> <title>网易云音乐 NodeJS API Enhanced</title>
<link rel="icon" href="netease.png"> <link rel="icon" href="favicon.ico">
<meta name="description" content="Description"> <meta name="description" content="Description">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta name="referrer" content="never"> <meta name="referrer" content="never">

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<g>
<path fill="none" d="M0 0h24v24H0z"/>
<path d="M10.421 11.375c-.294 1.028.012 2.064.784 2.653 1.061.81 2.565.3 2.874-.995.08-.337.103-.722.027-1.056-.23-1.001-.52-1.988-.792-2.996-1.33.154-2.543 1.172-2.893 2.394zm5.548-.287c.273 1.012.285 2.017-.127 3-1.128 2.69-4.721 3.14-6.573.826-1.302-1.627-1.28-3.961.06-5.734.78-1.032 1.804-1.707 3.048-2.054l.379-.104c-.084-.415-.188-.816-.243-1.224-.176-1.317.512-2.503 1.744-3.04 1.226-.535 2.708-.216 3.53.76.406.479.395 1.08-.025 1.464-.412.377-.996.346-1.435-.09-.247-.246-.51-.44-.877-.436-.525.006-.987.418-.945.937.037.468.173.93.3 1.386.022.078.216.135.338.153 1.334.197 2.504.731 3.472 1.676 2.558 2.493 2.861 6.531.672 9.44-1.529 2.032-3.61 3.168-6.127 3.409-4.621.44-8.664-2.53-9.7-7.058C2.515 10.255 4.84 5.831 8.795 4.25c.586-.234 1.143-.031 1.371.498.232.537-.019 1.086-.61 1.35-2.368 1.06-3.817 2.855-4.215 5.424-.533 3.433 1.656 6.776 5 7.72 2.723.77 5.658-.166 7.308-2.33 1.586-2.08 1.4-5.099-.427-6.873a3.979 3.979 0 0 0-1.823-1.013c.198.716.389 1.388.57 2.062z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -4,7 +4,6 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="docs/netease.png">
<title>网易云音乐 API Enhanced</title> <title>网易云音乐 API Enhanced</title>
<style> <style>
:root { :root {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

6
renovate.json Normal file
View File

@ -0,0 +1,6 @@
{
"extends": [
"config:base",
"helpers:pinGitHubActionDigests"
]
}

View File

@ -263,9 +263,8 @@ async function consturctServer(moduleDefs) {
}) })
logger.info(`Request Success: ${decode(req.originalUrl)}`) logger.info(`Request Success: ${decode(req.originalUrl)}`)
// 夹带私货部分如果开启了通用解锁并且是获取歌曲URL的接口则尝试解锁如果需要的话ヾ(≧▽≦*)o
if ( if (
req.baseUrl === '/song/url/v1' && (req.baseUrl === '/song/url/v1' || req.baseUrl === '/song/url') &&
process.env.ENABLE_GENERAL_UNBLOCK === 'true' process.env.ENABLE_GENERAL_UNBLOCK === 'true'
) { ) {
const song = moduleResponse.body.data[0] const song = moduleResponse.body.data[0]
@ -280,7 +279,7 @@ async function consturctServer(moduleDefs) {
logger.info('Starting unblock(uses general unblock):', req.query.id) logger.info('Starting unblock(uses general unblock):', req.query.id)
const result = await matchID(req.query.id) const result = await matchID(req.query.id)
song.url = result.data.url song.url = result.data.url
song.freeTrialInfo = null song.freeTrialInfo = 'null'
logger.info('Unblock success! url:', song.url) logger.info('Unblock success! url:', song.url)
} }
if (song.url && song.url.includes('kuwo')) { if (song.url && song.url.includes('kuwo')) {