mirror of
https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced.git
synced 2025-10-22 14:43:10 +00:00
Merge branch 'main' into dependabot/npm_and_yarn/types/node-24.6.0
This commit is contained in:
commit
22e47582c4
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@neteaseapireborn/api",
|
"name": "@neteaseapireborn/api",
|
||||||
"version": "4.29.6",
|
"version": "4.29.7",
|
||||||
"description": "为停更的网易云音乐 NodeJs API 提供持续的维护!",
|
"description": "为停更的网易云音乐 NodeJs API 提供持续的维护!",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node app.js",
|
"start": "node app.js",
|
||||||
|
60
pnpm-lock.yaml
generated
60
pnpm-lock.yaml
generated
@ -394,10 +394,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
|
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
async-generator-function@1.0.0:
|
|
||||||
resolution: {integrity: sha512-+NAXNqgCrB95ya4Sr66i1CL2hqLVckAk7xwRYWdcm39/ELQ6YNn1aw5r0bdQtqNZgQpEWzc5yc/igXc7aL5SLA==}
|
|
||||||
engines: {node: '>= 0.4'}
|
|
||||||
|
|
||||||
asynckit@0.4.0:
|
asynckit@0.4.0:
|
||||||
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
|
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
|
||||||
|
|
||||||
@ -1122,16 +1118,16 @@ packages:
|
|||||||
functions-have-names@1.2.3:
|
functions-have-names@1.2.3:
|
||||||
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
|
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
|
||||||
|
|
||||||
generator-function@2.0.0:
|
generator-function@2.0.1:
|
||||||
resolution: {integrity: sha512-xPypGGincdfyl/AiSGa7GjXLkvld9V7GjZlowup9SHIJnQnHLFiLODCd/DqKOp0PBagbHJ68r1KJI9Mut7m4sA==}
|
resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
get-caller-file@2.0.5:
|
get-caller-file@2.0.5:
|
||||||
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
|
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
|
||||||
engines: {node: 6.* || 8.* || >= 10.*}
|
engines: {node: 6.* || 8.* || >= 10.*}
|
||||||
|
|
||||||
get-intrinsic@1.3.1:
|
get-intrinsic@1.3.0:
|
||||||
resolution: {integrity: sha512-fk1ZVEeOX9hVZ6QzoBNEC55+Ucqg4sTVwrVuigZhuRPESVFpMyXnd3sbXvPOwp7Y9riVyANiqhEuRF0G1aVSeQ==}
|
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
get-proto@1.0.1:
|
get-proto@1.0.1:
|
||||||
@ -1372,8 +1368,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
|
resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
is-generator-function@1.1.0:
|
is-generator-function@1.1.2:
|
||||||
resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
|
resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
is-glob@4.0.3:
|
is-glob@4.0.3:
|
||||||
@ -2812,7 +2808,7 @@ snapshots:
|
|||||||
define-properties: 1.2.1
|
define-properties: 1.2.1
|
||||||
es-abstract: 1.24.0
|
es-abstract: 1.24.0
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
is-array-buffer: 3.0.5
|
is-array-buffer: 3.0.5
|
||||||
|
|
||||||
ast-types@0.13.4:
|
ast-types@0.13.4:
|
||||||
@ -2823,8 +2819,6 @@ snapshots:
|
|||||||
|
|
||||||
async-function@1.0.0: {}
|
async-function@1.0.0: {}
|
||||||
|
|
||||||
async-generator-function@1.0.0: {}
|
|
||||||
|
|
||||||
asynckit@0.4.0: {}
|
asynckit@0.4.0: {}
|
||||||
|
|
||||||
at-least-node@1.0.0: {}
|
at-least-node@1.0.0: {}
|
||||||
@ -2914,13 +2908,13 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
call-bind-apply-helpers: 1.0.2
|
call-bind-apply-helpers: 1.0.2
|
||||||
es-define-property: 1.0.1
|
es-define-property: 1.0.1
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
set-function-length: 1.2.2
|
set-function-length: 1.2.2
|
||||||
|
|
||||||
call-bound@1.0.4:
|
call-bound@1.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind-apply-helpers: 1.0.2
|
call-bind-apply-helpers: 1.0.2
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
|
|
||||||
call-matcher@1.1.0:
|
call-matcher@1.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -3235,7 +3229,7 @@ snapshots:
|
|||||||
es-set-tostringtag: 2.1.0
|
es-set-tostringtag: 2.1.0
|
||||||
es-to-primitive: 1.3.0
|
es-to-primitive: 1.3.0
|
||||||
function.prototype.name: 1.1.8
|
function.prototype.name: 1.1.8
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
get-proto: 1.0.1
|
get-proto: 1.0.1
|
||||||
get-symbol-description: 1.1.0
|
get-symbol-description: 1.1.0
|
||||||
globalthis: 1.0.4
|
globalthis: 1.0.4
|
||||||
@ -3287,7 +3281,7 @@ snapshots:
|
|||||||
es-set-tostringtag@2.1.0:
|
es-set-tostringtag@2.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
has-tostringtag: 1.0.2
|
has-tostringtag: 1.0.2
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
|
|
||||||
@ -3721,20 +3715,17 @@ snapshots:
|
|||||||
|
|
||||||
functions-have-names@1.2.3: {}
|
functions-have-names@1.2.3: {}
|
||||||
|
|
||||||
generator-function@2.0.0: {}
|
generator-function@2.0.1: {}
|
||||||
|
|
||||||
get-caller-file@2.0.5: {}
|
get-caller-file@2.0.5: {}
|
||||||
|
|
||||||
get-intrinsic@1.3.1:
|
get-intrinsic@1.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
async-function: 1.0.0
|
|
||||||
async-generator-function: 1.0.0
|
|
||||||
call-bind-apply-helpers: 1.0.2
|
call-bind-apply-helpers: 1.0.2
|
||||||
es-define-property: 1.0.1
|
es-define-property: 1.0.1
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
es-object-atoms: 1.1.1
|
es-object-atoms: 1.1.1
|
||||||
function-bind: 1.1.2
|
function-bind: 1.1.2
|
||||||
generator-function: 2.0.0
|
|
||||||
get-proto: 1.0.1
|
get-proto: 1.0.1
|
||||||
gopd: 1.2.0
|
gopd: 1.2.0
|
||||||
has-symbols: 1.1.0
|
has-symbols: 1.1.0
|
||||||
@ -3752,7 +3743,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
|
|
||||||
get-uri@6.0.5:
|
get-uri@6.0.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -3936,7 +3927,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.8
|
call-bind: 1.0.8
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
|
|
||||||
is-async-function@2.1.1:
|
is-async-function@2.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -3974,7 +3965,7 @@ snapshots:
|
|||||||
is-data-view@1.0.2:
|
is-data-view@1.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
is-typed-array: 1.1.15
|
is-typed-array: 1.1.15
|
||||||
|
|
||||||
is-date-object@1.1.0:
|
is-date-object@1.1.0:
|
||||||
@ -3992,9 +3983,10 @@ snapshots:
|
|||||||
|
|
||||||
is-fullwidth-code-point@4.0.0: {}
|
is-fullwidth-code-point@4.0.0: {}
|
||||||
|
|
||||||
is-generator-function@1.1.0:
|
is-generator-function@1.1.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
|
generator-function: 2.0.1
|
||||||
get-proto: 1.0.1
|
get-proto: 1.0.1
|
||||||
has-tostringtag: 1.0.2
|
has-tostringtag: 1.0.2
|
||||||
safe-regex-test: 1.1.0
|
safe-regex-test: 1.1.0
|
||||||
@ -4059,7 +4051,7 @@ snapshots:
|
|||||||
is-weakset@2.0.4:
|
is-weakset@2.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
|
|
||||||
isarray@1.0.0: {}
|
isarray@1.0.0: {}
|
||||||
|
|
||||||
@ -4348,7 +4340,7 @@ snapshots:
|
|||||||
|
|
||||||
own-keys@1.0.1:
|
own-keys@1.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
object-keys: 1.1.1
|
object-keys: 1.1.1
|
||||||
safe-push-apply: 1.0.0
|
safe-push-apply: 1.0.0
|
||||||
|
|
||||||
@ -4673,7 +4665,7 @@ snapshots:
|
|||||||
es-abstract: 1.24.0
|
es-abstract: 1.24.0
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
es-object-atoms: 1.1.1
|
es-object-atoms: 1.1.1
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
get-proto: 1.0.1
|
get-proto: 1.0.1
|
||||||
which-builtin-type: 1.2.1
|
which-builtin-type: 1.2.1
|
||||||
|
|
||||||
@ -4725,7 +4717,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.8
|
call-bind: 1.0.8
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
has-symbols: 1.1.0
|
has-symbols: 1.1.0
|
||||||
isarray: 2.0.5
|
isarray: 2.0.5
|
||||||
|
|
||||||
@ -4792,7 +4784,7 @@ snapshots:
|
|||||||
define-data-property: 1.1.4
|
define-data-property: 1.1.4
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
function-bind: 1.1.2
|
function-bind: 1.1.2
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
gopd: 1.2.0
|
gopd: 1.2.0
|
||||||
has-property-descriptors: 1.0.2
|
has-property-descriptors: 1.0.2
|
||||||
|
|
||||||
@ -4826,14 +4818,14 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
object-inspect: 1.13.4
|
object-inspect: 1.13.4
|
||||||
|
|
||||||
side-channel-weakmap@1.0.2:
|
side-channel-weakmap@1.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
get-intrinsic: 1.3.1
|
get-intrinsic: 1.3.0
|
||||||
object-inspect: 1.13.4
|
object-inspect: 1.13.4
|
||||||
side-channel-map: 1.0.1
|
side-channel-map: 1.0.1
|
||||||
|
|
||||||
@ -5190,7 +5182,7 @@ snapshots:
|
|||||||
is-async-function: 2.1.1
|
is-async-function: 2.1.1
|
||||||
is-date-object: 1.1.0
|
is-date-object: 1.1.0
|
||||||
is-finalizationregistry: 1.1.1
|
is-finalizationregistry: 1.1.1
|
||||||
is-generator-function: 1.1.0
|
is-generator-function: 1.1.2
|
||||||
is-regex: 1.2.1
|
is-regex: 1.2.1
|
||||||
is-weakref: 1.1.1
|
is-weakref: 1.1.1
|
||||||
isarray: 2.0.5
|
isarray: 2.0.5
|
||||||
|
@ -248,9 +248,9 @@ $ sudo docker run -d -p 3000:3000 netease-music-api
|
|||||||
|
|
||||||
!> ~~因网易增加了网易云盾验证,密码登录暂时不要使用,尽量使用短信验证码登录和二维码登录,否则调用某些接口会触发需要验证的错误~~
|
!> ~~因网易增加了网易云盾验证,密码登录暂时不要使用,尽量使用短信验证码登录和二维码登录,否则调用某些接口会触发需要验证的错误~~
|
||||||
|
|
||||||
!> ~~二开作者注: 现在网易云云盾验证再次升级, 导致现在短信验证码也没法用了~~
|
!> ~~二开作者再注: 现在二维码登录也无法使用了, 网易云官方最近查的太严了, 现在尝试调用会提示环境异常, 如果各位有绕过的方法请一定开`Pull Request`~~
|
||||||
|
|
||||||
!> 二开作者再注: 现在二维码登录也无法使用了, 网易云官方最近查的太严了, 现在尝试调用会提示环境异常, 如果各位有绕过的方法请一定开`Pull Request`
|
!> 二开作者注: 二维码登录现在是修复了, 但是密码登录和短信登录还是不行, 如果各位有绕过的方法请一定开`Pull Request`
|
||||||
|
|
||||||
#### 1. 手机登录
|
#### 1. 手机登录
|
||||||
|
|
||||||
@ -1364,7 +1364,7 @@ tags: 歌单标签
|
|||||||
|
|
||||||
说明 : 调用此接口 , 传入类型和歌单 id 可收藏歌单或者取消收藏歌单
|
说明 : 调用此接口 , 传入类型和歌单 id 可收藏歌单或者取消收藏歌单
|
||||||
|
|
||||||
!> 警告: 在`v4.25.0`版本后, 在网易云登陆后请求不要带上`cookie`字段, 会导致请求不合法
|
!> 警告: 在`v4.29.7`版本后, 在网易云登陆后请求要带上`timestamp`字段, 否则会导致请求不合法
|
||||||
|
|
||||||
**必选参数 :**
|
**必选参数 :**
|
||||||
|
|
||||||
@ -1395,7 +1395,7 @@ tags: 歌单标签
|
|||||||
|
|
||||||
说明 : 调用此接口 , 可以添加歌曲到歌单或者从歌单删除某首歌曲 ( 需要登录 )
|
说明 : 调用此接口 , 可以添加歌曲到歌单或者从歌单删除某首歌曲 ( 需要登录 )
|
||||||
|
|
||||||
!> 警告: 在`v4.25.0`版本后, 在网易云登陆后请求不要带上`cookie`字段, 会导致请求不合法
|
!> 警告: 在`v4.29.7`版本后, 在网易云登陆后请求要带上`timestamp`字段, 否则会导致请求不合法
|
||||||
|
|
||||||
**必选参数 :**
|
**必选参数 :**
|
||||||
|
|
||||||
|
@ -235,9 +235,9 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="feature-item">
|
<li class="feature-item">
|
||||||
<a href="./song/url/unblock?id=1969519579">
|
<a href="./unblock_test.html">
|
||||||
<i class="mdi mdi-lock-open"></i>
|
<i class="mdi mdi-lock-open"></i>
|
||||||
歌曲解灰
|
解灰测试
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="feature-item">
|
<li class="feature-item">
|
||||||
|
123
public/unblock_test.html
Normal file
123
public/unblock_test.html
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>音乐解灰测试</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 20px auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.source-options {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.source-option {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
background-color: #4CAF50;
|
||||||
|
color: white;
|
||||||
|
padding: 10px 20px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
button:hover {
|
||||||
|
background-color: #45a049;
|
||||||
|
}
|
||||||
|
#result {
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 4px;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>音乐解灰测试</h1>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="songId">音乐 ID:</label>
|
||||||
|
<input type="number" id="songId" placeholder="请输入音乐ID" required>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<p>选择音源:</p>
|
||||||
|
<div class="source-options">
|
||||||
|
<div class="source-option">
|
||||||
|
<input type="checkbox" id="pyncmd" value="pyncmd">
|
||||||
|
<label for="pyncmd">pyncmd</label>
|
||||||
|
</div>
|
||||||
|
<div class="source-option">
|
||||||
|
<input type="checkbox" id="kuwo" value="kuwo">
|
||||||
|
<label for="kuwo">kuwo</label>
|
||||||
|
</div>
|
||||||
|
<div class="source-option">
|
||||||
|
<input type="checkbox" id="bodian" value="bodian">
|
||||||
|
<label for="bodian">bodian</label>
|
||||||
|
</div>
|
||||||
|
<div class="source-option">
|
||||||
|
<input type="checkbox" id="qq" value="qq">
|
||||||
|
<label for="qq">qq</label>
|
||||||
|
</div>
|
||||||
|
<div class="source-option">
|
||||||
|
<input type="checkbox" id="kugou" value="kugou">
|
||||||
|
<label for="kugou">kugou</label>
|
||||||
|
</div>
|
||||||
|
<div class="source-option">
|
||||||
|
<input type="checkbox" id="migu" value="migu">
|
||||||
|
<label for="migu">migu</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button onclick="testSong()">开始测试</button>
|
||||||
|
<div id="result"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
async function testSong() {
|
||||||
|
const songId = document.getElementById('songId').value;
|
||||||
|
if (!songId) {
|
||||||
|
alert('请输入音乐ID');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sources = ['pyncmd', 'kuwo', 'bodian', 'qq', 'kugou', 'migu']
|
||||||
|
.filter(source => document.getElementById(source).checked)
|
||||||
|
.join(',');
|
||||||
|
|
||||||
|
if (!sources) {
|
||||||
|
alert('请至少选择一个音源');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const resultDiv = document.getElementById('result');
|
||||||
|
resultDiv.textContent = '正在请求...';
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch(`/song/url/match?id=${songId}&source=${sources}`);
|
||||||
|
const data = await response.json();
|
||||||
|
resultDiv.textContent = JSON.stringify(data, null, 2);
|
||||||
|
} catch (error) {
|
||||||
|
resultDiv.textContent = `请求失败: ${error.message}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user