add: 添加了首页热门歌单&支持多平台歌词

This commit is contained in:
sqj
2025-08-25 19:04:57 +08:00
parent 400c97fc31
commit 9830e51fa0
38 changed files with 5156 additions and 3594 deletions

View File

@@ -1,31 +1,31 @@
name: AutoBuild # 工作流的名称
name: AutoBuild # 工作流的名称
permissions:
contents: write # 给予写入仓库内容的权限
contents: write # 给予写入仓库内容的权限
on:
push:
tags:
- 'v*' # 当推送以v开头的标签时触发此工作流
- 'v*' # 当推送以v开头的标签时触发此工作流
workflow_dispatch:
jobs:
release:
name: build and release electron app # 任务名称
runs-on: ${{ matrix.os }} # 在matrix.os定义的操作系统上运行
name: build and release electron app # 任务名称
runs-on: ${{ matrix.os }} # 在matrix.os定义的操作系统上运行
strategy:
fail-fast: false # 如果一个任务失败,其他任务继续运行
fail-fast: false # 如果一个任务失败,其他任务继续运行
matrix:
os: [windows-latest, macos-latest] # 在Windows和macOS上运行任务
os: [windows-latest, macos-latest] # 在Windows和macOS上运行任务
steps:
- name: Check out git repository
uses: actions/checkout@v4 # 检出代码仓库
uses: actions/checkout@v4 # 检出代码仓库
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 22 # 安装Node.js 22 这里node环境是能够运行代码的环境
node-version: 22 # 安装Node.js 22 这里node环境是能够运行代码的环境
- name: Install Dependencies
run: |
@@ -33,11 +33,11 @@ jobs:
yarn install # 安装项目依赖
- name: Build Electron App for windows
if: matrix.os == 'windows-latest' # 只在Windows上运行
run: yarn run build:win # 构建Windows版应用
if: matrix.os == 'windows-latest' # 只在Windows上运行
run: yarn run build:win # 构建Windows版应用
- name: Build Electron App for macos
if: matrix.os == 'macos-latest' # 只在macOS上运行
if: matrix.os == 'macos-latest' # 只在macOS上运行
run: |
yarn run build:mac
@@ -55,9 +55,9 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}
path: dist # 上传构建产物作为工作流artifact
path: dist # 上传构建产物作为工作流artifact
- name: release
uses: softprops/action-gh-release@v1
with:
files: 'dist/**' # 将dist目录下所有文件添加到release
files: 'dist/**' # 将dist目录下所有文件添加到release

View File

@@ -2,4 +2,4 @@ singleQuote: true
semi: false
printWidth: 100
trailingComma: none
endOfLine: "auto"
endOfLine: 'auto'

View File

@@ -13,7 +13,7 @@ const baseRule = {
'prefer-const': 'off',
'no-labels': 'off',
'node/no-callback-literal': 'off',
'multiline-ternary': 'off',
'multiline-ternary': 'off'
}
const typescriptRule = {
...baseRule,
@@ -21,55 +21,59 @@ const typescriptRule = {
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/space-before-function-paren': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/restrict-template-expressions': [1, {
allowBoolean: true,
allowAny: true,
}],
'@typescript-eslint/restrict-plus-operands': [1, {
allowBoolean: true,
allowAny: true,
}],
'@typescript-eslint/restrict-template-expressions': [
1,
{
allowBoolean: true,
allowAny: true
}
],
'@typescript-eslint/restrict-plus-operands': [
1,
{
allowBoolean: true,
allowAny: true
}
],
'@typescript-eslint/no-misused-promises': [
'error',
{
checksVoidReturn: {
arguments: false,
attributes: false,
},
},
attributes: false
}
}
],
'@typescript-eslint/naming-convention': 'off',
'@typescript-eslint/return-await': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/comma-dangle': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-argument': 'off'
}
const vueRule = {
...typescriptRule,
'vue/multi-word-component-names': 'off',
'vue/max-attributes-per-line': 'off',
'vue/singleline-html-element-content-newline': 'off',
'vue/use-v-on-exact': 'off',
'vue/use-v-on-exact': 'off'
}
exports.base = {
extends: ['standard'],
rules: baseRule,
parser: '@babel/eslint-parser',
parser: '@babel/eslint-parser'
}
exports.html = {
files: ['*.html'],
plugins: ['html'],
plugins: ['html']
}
exports.typescript = {
files: ['*.ts'],
rules: typescriptRule,
parser: '@typescript-eslint/parser',
extends: [
'standard-with-typescript',
],
extends: ['standard-with-typescript']
}
exports.vue = {
@@ -82,7 +86,7 @@ exports.vue = {
'plugin:vue/vue3-recommended',
'plugin:vue-pug/vue3-recommended',
// "plugin:vue/strongly-recommended"
'standard-with-typescript',
'standard-with-typescript'
],
parserOptions: {
sourceType: 'module',
@@ -91,8 +95,8 @@ exports.vue = {
js: '@typescript-eslint/parser',
// Script parser for `<script lang="ts">`
ts: '@typescript-eslint/parser',
ts: '@typescript-eslint/parser'
},
extraFileExtensions: ['.vue'],
},
extraFileExtensions: ['.vue']
}
}

View File

@@ -48,9 +48,11 @@
"dompurify": "^3.2.6",
"electron-log": "^5.4.3",
"electron-updater": "^6.3.9",
"hpagent": "^1.2.0",
"iconv-lite": "^0.7.0",
"jss": "^10.10.0",
"jss-preset-default": "^10.10.0",
"lodash": "^4.17.21",
"marked": "^16.1.2",
"mitt": "^3.0.1",
"needle": "^3.3.1",

View File

@@ -143,3 +143,136 @@ log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.
log [CeruMusic] Plugin "ceru 音乐插件" loaded successfully.

View File

@@ -609,3 +609,864 @@ log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw"
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
error [聚合API接口 (by lerd)] Error: msg is not defined
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 mg 音源链接
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 wy 音源链接
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/netease/music_v1.php?id=2645500113&type=json&level=lossless
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 kg 音源链接
log [CeruMusic] 发起请求: https://www.hhlqilongzhu.cn/api/dg_kugouSQ.php?type=json&hash=67BA8A4A0681F2078BC423CB13B904B7&quality=high
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 kw 音源链接
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/kuwo/?rid=96765035&type=json&level=undefined
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 kw 音源链接
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/kuwo/?rid=235498&type=json&level=lossless
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":-2,"msg":"酷狗hash解析暂未公开开放,如需请付费使用或购买源码使用"}
error [聚合API接口 (by lerd)] Error: get url error
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 mg 音源链接
error [聚合API接口 (by lerd)] Error: msg is not defined
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"id":"2645500113","name":"跳楼机","artist":"LBI利比","album":"跳楼机","duration":"03:21","size":"37.58MB","format":"FLAC 无损","pic":"https://p2.music.126.net/cmoE8PsdK_Yn9VJ8ZVCGrw==/109951170507596121.jpg","url":"https://m801.music.126.net/20250824170253/0ebe8d3a5a6c6c5b3a0fc82586b53111/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/59380389564/6208/bdff/c609/48528ac72450220810d50149cfc2e004.flac?vuutv=kwP9SKfCKfCLW8iQcO7n8VsMOrL+bf0qhELKIJDEScHJQ5ELvJuPTKzI12X7uryIvoVWTvsZGKZGnNvgOoyemDVYuQ88EEy+PN4F354ohgg=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw","lyric":"[00:00.00] 作词 : 姜洄\n[00:01.00] 作曲 : 鹿柯的宁叔\n[00:02.00] 制作人 : LBI利比/BackToBand赵楚峰\n[00:03.00] 编曲 : 卡其漠\n[00:04.00] 吉他 : 大牛\n[00:05.00] 混音&母带 : LBI利比\n[00:06.00] 和声 : LBI利比\n[00:07.00] 制作公司 : 天马行空文化\n[00:08.00] 策划/推广 : 大碗\n[00:09.00] 监制 : 杰森\n[00:10.00] 总监制 : 陈国威/许雯静\n[00:11.00] 出品 : 索尼音乐\n[00:18.84]风走了 只留下一条街的叶落\n[00:23.34]你走了 只留下我双眼的红\n[00:26.70]逼着自己早点睡\n[00:28.86]能不能再做一个有你的美梦\n[00:33.52]\n[00:33.87]我好像一束极光\n[00:36.90]守在遥远的世界尽头\n[00:40.74]看过了你的眼眸\n[00:42.87]才知道孤独很难忍受\n[00:47.02]\n[00:47.73]可笑吗 我删访问记录的时候有多慌张\n[00:52.26] 她会看见吗 曾经只有我能看的模样\n[00:55.92]从夜深人静 一直难过到天亮\n[00:58.77]你反正不会再担心 我隐隐作疼的心脏\n[01:03.26]\n[01:03.45]好像遇到我 你才对自由向往\n[01:06.27]怎么为她 失去一切也无妨\n[01:09.12]可能是我贱吧\n[01:10.50]不爱我的非要上\n[01:12.15]那么硬的南墙非要撞\n[01:14.64]是不是内心希望\n[01:16.32]头破血流就会让你想起\n[01:19.41]最爱我的时光\n[01:21.51]\n[01:21.75]baby我们的感情好像跳楼机\n[01:25.56]让我突然地升空又急速落地\n[01:29.28]你带给我一场疯狂\n[01:31.14]劫后余生好难呼吸\n[01:33.06]那天的天气难得放晴\n[01:35.31]你说的话却把我困在雨季\n[01:38.25]\n[01:38.43]其实你不是不爱了吧\n[01:40.05]只是有些摩擦没处理\n[01:41.85]怎么你闭口不语\n[01:44.19]是不是我正好\n[01:45.84]说中你的心\n[01:47.49]就承认还是在意吧\n[01:50.58]就骗骗我也可以\n[01:54.73]\n[02:10.23]可笑吗\n[02:12.00]你的出现是我不能规避的伤\n[02:14.67]怎么能接受这荒唐\n[02:16.59]可能是我贱吧\n[02:18.03]不爱我的非要上\n[02:19.65]那么硬的南墙非要撞\n[02:22.14]是不是内心希望\n[02:23.82]头破血流就会让你想起\n[02:26.91]最爱我的时光\n[02:29.26]\n[02:29.28]baby我们的感情好像跳楼机\n[02:33.06]让我突然地升空又急速落地\n[02:36.78]你带给我一场疯狂\n[02:38.64]劫后余生好难呼吸\n[02:40.56]那天的天气难得放晴\n[02:42.84]你说的话却把我困在雨季\n[02:45.84]\n[02:45.93]其实你不是不爱了吧\n[02:47.58]只是有些摩擦没处理\n[02:49.35]怎么你闭口不语\n[02:51.69]是不是我正好\n[02:53.34]说中你的心\n[02:54.99]就承认还是在意吧\n[02:58.11]哪怕骗骗我也可以\n[03:02.48]\n","mv_info":{"mv":"https://vodkgeyttp8.vod.126.net/cloudmusic/3caa/core/f9ac/2f91e152698dd1de1ce2971ec18b305f.mp4?wsSecret=56ad10d7511c21a329179b861f8b30c7&wsTime=1756024673","size":"41.21MB","br":1080},"copyright":{"msg":"源码编译:笒鬼鬼 2023.10.7","api_vers":"music_v1","type":"单曲解析"}}}
log [聚合API接口 (by lerd)] Got URL: https://m801.music.126.net/20250824170253/0ebe8d3a5a6c6c5b3a0fc82586b53111/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/59380389564/6208/bdff/c609/48528ac72450220810d50149cfc2e004.flac?vuutv=kwP9SKfCKfCLW8iQcO7n8VsMOrL+bf0qhELKIJDEScHJQ5ELvJuPTKzI12X7uryIvoVWTvsZGKZGnNvgOoyemDVYuQ88EEy+PN4F354ohgg=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 wy 音源链接
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/netease/music_v1.php?id=2003594562&type=json&level=hires
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"rid":96765035,"name":"后来","artist":"刘若英","album":"2020 刘若英陪你 献上录音专辑","quality":"高音质 MP3","duration":"5分9秒","size":"11.8 MB","pic":"https://img1.kuwo.cn/star/albumcover/300/s4s68/34/3776980601.jpg","url":"https://lv-sycdn.kuwo.cn/f433a1cac7d7468c66287942ee3feee0/68aacf61/resource/30106/trackmedia/M800000gIZOH1tq8pT.mp3?from=cenguigui_api","lrc":"[00:00.00]后来 (Later) - 刘若英\n[00:02.00]词:玉城千春\n[00:03.00]曲:玉城千春\n[00:04.00]改编词:施人诚\n[00:12.00]后来 我总算学会了如何去爱\n[00:18.00]可惜你早已远去消失在人海\n[00:24.00]后来终于在眼泪中明白\n[00:30.00]有些人一旦错过就不再\n[00:38.00]栀子花白花瓣\n[00:43.00]落在我蓝色百褶裙上\n[00:49.00]爱你 你轻声说\n[00:56.00]我低下头闻见一阵芬芳\n[01:02.00]那个永恒的夜晚\n[01:06.00]十七岁仲夏 你吻我的那个夜晚\n[01:14.00]让我往后的时光 每当有感叹\n[01:21.00]总想起当天的星光\n[01:27.00]那时候的爱情\n[01:33.00]为什么就能那样简单\n[01:38.00]而又是为什么 人年少时\n[01:45.00]一定要让深爱的人受伤\n[01:51.00]在这相似的深夜里\n[01:55.00]你是否一样 也在静静追悔感伤\n[02:04.00]如果当时我们能 不那么倔强\n[02:10.00]现在也不那么遗憾\n[02:15.00]你都如何回忆我\n[02:18.00]带着笑或是很沉默\n[02:21.00]这些年来有没有人能让你不寂寞\n[02:27.00]后来 我总算学会了如何去爱\n[02:33.00]可惜你早已远去消失在人海\n[02:39.00]后来 终于在眼泪中明白\n[02:46.00]有些人一旦错过就不再\n[03:17.00]你都如何回忆我\n[03:19.00]带着笑或是很沉默\n[03:22.00]这些年来有没有人能让你不寂寞\n[03:28.00]后来 我总算学会了如何去爱\n[03:35.00]可惜你早已远去消失在人海\n[03:41.00]后来 终于在眼泪中明白\n[03:47.00]有些人一旦错过就不再\n[03:53.00]后来 我总算学会了如何去爱\n[03:59.00]可惜你早已远去消失在人海\n[04:05.00]后来 终于在眼泪中明白\n[04:12.00]有些人一旦错过就不再\n[04:18.00]永远不会再重来\n[04:24.00]有一个男孩爱着那个女孩\n"}}
log [聚合API接口 (by lerd)] Got URL: https://lv-sycdn.kuwo.cn/f433a1cac7d7468c66287942ee3feee0/68aacf61/resource/30106/trackmedia/M800000gIZOH1tq8pT.mp3?from=cenguigui_api
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"rid":235498,"name":"半岛铁盒","artist":"周杰伦","album":"八度空间","quality":"无损 FLAC","duration":"5分19秒","size":"34.93 MB","pic":"https://img1.kuwo.cn/star/albumcover/300/s4s35/17/1252973864.jpg","url":"https://sx-sycdn.kuwo.cn/63853481e9fa053fdf52060ea841be79/68aacf61/resource/s1/11/65/2331191230.flac?from=cenguigui_api","lrc":"[00:00.00]半岛铁盒 - 周杰伦 (Jay Chou)\n[00:04.00]词:周杰伦\n[00:08.00]曲:周杰伦\n[00:12.00]编曲:林迈可\n[00:17.00]走廊灯关上 书包放\n[00:19.00]走到房间窗外望\n[00:21.00]回想刚买的书\n[00:22.00]一本名叫半岛铁盒\n[00:24.00]放在床边堆好多\n[00:26.00]第一页第六页第七页序\n[00:28.00]我永远都想不到\n[00:30.00]陪我看这书的你会要走\n[00:32.00]不再是不再有\n[00:33.00]现在已经看不到\n[00:36.00]铁盒的钥匙孔\n[00:37.00]透了光看见它锈了好久\n[00:39.00]好旧好旧\n[00:40.00]外围的灰尘包围了我\n[00:43.00]好暗好暗\n[00:44.00]铁盒的钥匙我找不到\n[00:47.00]放在糖果旁的\n[00:49.00]是我很想回忆的甜\n[00:54.00]然而过滤了你和我\n[00:57.00]沦落而成美\n[01:02.00]沉在盒子里的是你\n[01:05.00]给我的快乐\n[01:09.00]我很想记得可是我记不得\n[01:15.00]为什么这样子\n[01:18.00]你拉着我 说你有些犹豫\n[01:22.00]怎么这样子\n[01:25.00]雨还没停你就撑伞要走\n[01:30.00]已经习惯不去阻止你\n[01:33.00]过好一阵子你就会回来\n[01:38.00]印象中的爱情\n[01:40.00]好像顶不住那时间\n[01:44.00]为什么这样子\n[01:47.00]你看着我说你已经决定\n[01:52.00]我拉不住你\n[01:55.00]他的手应该比我更暖\n[01:59.00]铁盒的序变成了日记\n[02:03.00]变成了空气 演化成回忆\n[02:07.00]印象中的爱情\n[02:10.00]好像顶不住那时间\n[02:13.00]所以你弃权\n[02:29.00]走廊灯关上 书包放\n[02:32.00]走到房间窗外望\n[02:33.00]回想刚买的书\n[02:35.00]一本名叫半岛铁盒\n[02:37.00]放在床 边堆好多\n[02:39.00]第一页第六页第七页序\n[02:41.00]我永远都想不到\n[02:43.00]陪我看这书的你会要走\n[02:45.00]不再是不再有\n[02:46.00]现在已经看不到\n[02:48.00]铁盒的钥匙孔 透了光\n[02:50.00]看见它锈了好久\n[02:52.00]好旧好旧\n[02:53.00]外围的灰尘包围了我\n[02:56.00]好暗好暗\n[02:57.00]铁盒的钥匙我找不到\n[03:00.00]放在糖果旁的\n[03:02.00]是我很想回忆的甜\n[03:07.00]然而过滤了你和我\n[03:10.00]沦落而成美\n[03:14.00]沉在盒子里的是你\n[03:18.00]给我的快乐\n[03:22.00]我很想记得可是我记不得\n[03:27.00]为什么这样子\n[03:31.00]你拉着我说你有些犹豫\n[03:35.00]怎么这样子\n[03:38.00]雨还没停你就撑伞要走\n[03:42.00]已经习惯不去阻止你\n[03:46.00]过好一阵子你就会回来\n[03:51.00]印象中的爱情\n[03:53.00]好像顶不住那时间\n[03:57.00]为什么这样子\n[04:00.00]你拉着我 说你有些犹豫\n[04:04.00]怎么这样子\n[04:08.00]雨还没停你就撑伞要走\n[04:12.00]已经习惯不去阻止你\n[04:16.00]过好一阵子你就会回来\n[04:20.00]印象中的爱情\n[04:23.00]好像顶不住那时间\n[04:26.00]为什么这样子\n[04:30.00]你看着我说你已经决定\n[04:34.00]我拉不住你\n[04:37.00]他的手应该比我更暖\n[04:43.00]铁盒的序变成了日记\n[04:45.00]变成了空气 演化成回忆\n[04:50.00]印象中的爱情\n[04:52.00]好像顶不住那时间\n[04:56.00]所以你弃权\n"}}
log [聚合API接口 (by lerd)] Got URL: https://sx-sycdn.kuwo.cn/63853481e9fa053fdf52060ea841be79/68aacf61/resource/s1/11/65/2331191230.flac?from=cenguigui_api
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"id":"2003594562","name":"天晴","artist":"是二智呀","album":"天晴","duration":"02:48","size":"32.50MB","format":"Hi-Res音质","pic":"https://p2.music.126.net/7PJlffckLf-pS8VKvH9mrw==/109951168114308737.jpg","url":"https://m801.music.126.net/20250824170253/ca9bee1c2f3839b9942532a5e8d7a3d1/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/22723731135/c20a/aea2/48de/406012108f77543a1e4bfac199cba95f.flac?vuutv=1EkyA/kXXOW/LcJgw7F4XcHdplGkkNOS/ufb5SWq3c4n3UJGJuwU3yfb2TeDvYiLAxF7KkSy2f4J/QWRpIT5DFy7YM5mi8sfnWAnd0mLd4c=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw","lyric":"[00:00.06]作词:陈澈\n[00:00.24]作曲:黄成成\n[00:00.57]编曲:筱筱雨沐\n[00:00.99]出品:网易飓风 x网易音乐人\n[00:03.45]我拥抱着满天繁星夏夜寂静\n[00:06.93]风吹过我们约定\n[00:09.06]天空依旧还是干净\n[00:11.85]可惜思念远去没声音\n[00:14.70]我愿化作繁花凋零以叙深情\n[00:18.24]风吹过枫叶落尽\n[00:20.37]黄昏夕阳拉长身影\n[00:23.16]可是我们该怎么靠近\n[00:27.39]树叶何时变得枯黄\n[00:29.55]你不在身旁\n[00:33.03]青春总是遗憾收场\n[00:35.19]镌刻在心上\n[00:38.64]似乎年少伴随轻狂\n[00:40.80]可我踏着浪\n[00:43.35]灯塔把海面都慢慢点亮\n[00:46.41]闪烁着微光\n[00:49.68]我的思念掀起潮汐\n[00:52.14]遥远的距离\n[00:55.26]思绪全都沉入海底\n[00:57.87]爱意随风去\n[00:59.91]我拥抱着满天繁星夏夜寂静\n[01:03.42]风吹过我们约定\n[01:05.55]天空依旧还是干净\n[01:08.34]可惜思念远去没声音\n[01:11.19]我愿化作繁花凋零以叙深情\n[01:14.70]风吹过枫叶落尽\n[01:16.83]黄昏夕阳拉长身影\n[01:19.65]可是我们该怎么靠近\n[01:34.83]我的思念掀起潮汐\n[01:37.32]遥远的距离\n[01:40.47]思绪全都沉入海底\n[01:43.02]爱意随风去\n[01:45.03]我拥抱着满天繁星夏夜寂静\n[01:48.63]风吹过我们约定\n[01:50.73]天空依旧还是干净\n[01:53.55]可惜思念远去没声音\n[01:56.43]我愿化作繁花凋零以叙深情\n[01:59.88]风吹过枫叶落尽\n[02:02.01]黄昏夕阳拉长身影\n[02:04.83]可是我们该怎么靠近\n[02:07.68]我拥抱着满天繁星夏夜寂静\n[02:11.13]风吹过我们约定\n[02:13.32]天空依旧还是干净\n[02:16.14]可惜思念远去没声音\n[02:18.96]我愿化作繁花凋零以叙深情\n[02:22.50]风吹过枫叶落尽\n[02:24.63]黄昏夕阳拉长身影\n[02:27.39]可是我们该怎么靠近\n[02:29.91]制作人:黄成成\n[02:30.30]混音:都欣桐\n[02:30.63]和声:周弦\n[02:30.90]监制:陈澈\n","mv_info":{"mv":"未知mv","size":"未知大小","br":"未知码率"},"copyright":{"msg":"源码编译:笒鬼鬼 2023.10.7","api_vers":"music_v1","type":"单曲解析"}}}
log [聚合API接口 (by lerd)] Got URL: https://m801.music.126.net/20250824170253/ca9bee1c2f3839b9942532a5e8d7a3d1/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/22723731135/c20a/aea2/48de/406012108f77543a1e4bfac199cba95f.flac?vuutv=1EkyA/kXXOW/LcJgw7F4XcHdplGkkNOS/ufb5SWq3c4n3UJGJuwU3yfb2TeDvYiLAxF7KkSy2f4J/QWRpIT5DFy7YM5mi8sfnWAnd0mLd4c=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 wy 音源链接
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/netease/music_v1.php?id=2116120347&type=json&level=lossless
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 kg 音源链接
log [CeruMusic] 发起请求: https://www.hhlqilongzhu.cn/api/dg_kugouSQ.php?type=json&hash=67BA8A4A0681F2078BC423CB13B904B7&quality=high
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 wy 音源链接
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/netease/music_v1.php?id=2149456401&type=json&level=hires
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 kw 音源链接
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/kuwo/?rid=235498&type=json&level=lossless
log [CeruMusic] 请求响应状态: 200
error [聚合API接口 (by lerd)] Error: get url error
log [CeruMusic] 请求响应内容: {"code":-2,"msg":"酷狗hash解析暂未公开开放,如需请付费使用或购买源码使用"}
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 kw 音源链接
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/kuwo/?rid=96765035&type=json&level=undefined
log [CeruMusic] 发起请求: https://api.cenguigui.cn/api/netease/music_v1.php?id=2645500113&type=json&level=lossless
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 wy 音源链接
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"id":"2116120347","name":"我乘着风飞过来","artist":"洪辰","album":"熊出没之熊心归来 动画电影原声带","duration":"03:52","size":"47.40MB","format":"FLAC 无损","pic":"https://p2.music.126.net/pkFtdn6o_90Kv8wFhL7SJw==/109951169248946107.jpg","url":"https://m801.music.126.net/20250824170542/577cdfc560b6d9af0995974b599b449b/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/32702313880/1168/8696/32b4/190984ac9761c9f9eb6878363e89a877.flac?vuutv=j87jnb0/GFr+SoKW5f8ch3Tb1W/edK2PyX08VSk6Rr91un4P8If5iT/mBkAqCjbkphF94H2M1i6X1aZDSOLhddTP1057l3SoMtDQHg442sI=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw","lyric":"[00:00.00] 作词 : 万秦\n[00:01.00] 作曲 : 李智平\n[00:02.58]\n[00:15.20]男:未来\n[00:18.12]\n[00:18.70]是否漫长遥远在星天外\n[00:21.85]\n[00:22.72]暴风雨洗净我心中阴霾\n[00:25.86]\n[00:27.32]对世界无限热爱\n[00:30.25]忍不住摇摆\n[00:32.03]女:双眼\n[00:34.08]\n[00:34.74]像黑夜中的光彩心澎湃\n[00:38.06]\n[00:38.71]我追随梦想在这新时代\n[00:42.24]就不要徘徊\n[00:44.24]快跳动起来\n[00:47.07]\n[00:48.15]女:耶耶耶\n[00:50.52]男:喔\n[00:51.46]女:啊 耶耶耶\n[00:54.25]男:喔\n[00:55.79]女:耶耶耶\n[00:59.56]合:喔\n[01:02.88]\n[01:03.41]合:我乘着风飞过来\n[01:07.72]征途是星辰和大海\n[01:11.73]在极限高空 万众期待\n[01:15.64]越飞越高 把翅膀张开\n[01:19.70]我乘着风飞过来\n[01:23.71]征途是星辰和大海\n[01:27.71]在极限高空 万众期待\n[01:31.72]越飞越高 把翅膀张开\n[01:36.01]\n[01:39.16]女:喔\n[01:42.37]\n[01:43.41]合:喔\n[01:45.25]男:耶\n[01:47.51]女:耶\n[01:50.62]\n[01:51.69]男:未来\n[01:54.67]是否漫长遥远在星天外\n[01:58.04]\n[01:58.68]暴风雨洗净我心中阴霾\n[02:02.03]\n[02:03.39]对世界无限热爱\n[02:06.34]忍不住摇摆\n[02:08.13]女:双眼\n[02:10.08]\n[02:10.75]像黑夜中的光彩心澎湃\n[02:14.04]\n[02:14.72]我追随梦想在这新时代\n[02:18.25]就不要徘徊\n[02:20.28]快跳动起来\n[02:23.27]\n[02:23.89]女:耶耶耶\n[02:26.38]男:喔\n[02:27.44]女:啊 耶耶耶\n[02:30.40]男:喔\n[02:32.06]女:耶耶耶\n[02:35.38]合:喔\n[02:39.32]合:我乘着风飞过来\n[02:43.71]征途是星辰和大海\n[02:47.72]在极限高空 万众期待\n[02:51.69]越飞越高 把翅膀张开\n[02:55.72]我乘着风飞过来\n[02:59.70]征途是星辰和大海\n[03:03.68]在极限高空 万众期待\n[03:07.70]越飞越高 把翅膀张开\n[03:11.50]男:我乘着风飞过来\n[03:14.90]\n[03:15.73]征途是星辰和大海\n[03:19.70]在极限高空 万众期待\n[03:23.30]合:越飞越高 把翅膀张开\n[03:27.73]我乘着风飞过来\n[03:31.71]征途是星辰和大海\n[03:35.74]在极限高空 万众期待\n[03:39.77]越飞越高 把翅膀张开\n","mv_info":{"mv":"未知mv","size":"未知大小","br":"未知码率"},"copyright":{"msg":"源码编译:笒鬼鬼 2023.10.7","api_vers":"music_v1","type":"单曲解析"}}}
log [聚合API接口 (by lerd)] Got URL: https://m801.music.126.net/20250824170542/577cdfc560b6d9af0995974b599b449b/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/32702313880/1168/8696/32b4/190984ac9761c9f9eb6878363e89a877.flac?vuutv=j87jnb0/GFr+SoKW5f8ch3Tb1W/edK2PyX08VSk6Rr91un4P8If5iT/mBkAqCjbkphF94H2M1i6X1aZDSOLhddTP1057l3SoMtDQHg442sI=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 mg 音源链接
error [聚合API接口 (by lerd)] Error: msg is not defined
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"id":"2149456401","name":"alone.","artist":"DLSS","album":"alone.","duration":"02:25","size":"30.14MB","format":"Hi-Res音质","pic":"https://p1.music.126.net/I-pKOLxJENNTkZp1nbY2VA==/109951169530908047.jpg","url":"https://m801.music.126.net/20250824170543/fd6651a5768497b6f3cbb1d0542f8fa4/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/35506990299/de4f/d537/7094/a86a0c894b20f627e58f4e037d4c395d.flac?vuutv=A7XpJabDtVoErDfg3RK06roYvpIZBAEmr9JCvxQyDTfjnvwYqfsPSt/U/JF0z9u2Y2jv1+amjY2hWt/SDX8lK9noAJr9RuTVNZQ8fkPgk0k=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw","lyric":"[00:00.000] 作词 : DLSS\n[00:00.210] 作曲 : DLSS\n[00:00.420] 编曲 : DLSS/S70S/贾迅\n[00:00.630]In the silence of the night,\n[00:03.030]Echoes linger, out of sight,\n[00:05.370]Lonely heartache, deep inside,\n[00:07.620]Lost in memories,can't abide.\n[00:11.160]Caught in addiction,can't let go,\n[00:13.290]In these different moods, ebb and flow,\n[00:16.290]Whispers of promises, left in the cold,\n[00:20.160]Inlove's cruel game,who'll be bold?\n[00:23.790]Shadows dance, in the moonlight glow,\n[00:28.560]Tears fall freely, where dreams go,\n[00:30.780]Searching for solace, in the unknown,\n[00:32.820]In this endless night,I'm all alone.\n[00:36.660]alone.\n[01:01.260]this endless night,I'm all alone.\n[01:07.710]In the stillness of the night,\n[01:09.390]Whispers haunting, out of sight,\n[01:11.340]Heartache's echo, deep and wide,\n[01:14.160]In the shadows of memories, I abide.\n[01:21.118]Bound by bide\n[01:26.970]Bound byaddiction's relentless hold,\n[01:28.980]Emotions shifting, stories untold,\n[01:33.480]Promises shattered, left to mold,\n[01:38.520]Inlove's cruel game,who'll be bold?\n[01:44.344]Shadows dance, in the moonlight glow,\n[01:47.959]Tears fall freely, where dreams go,\n[01:52.919]Searching for solace, in the unknown,\n[01:56.056]In this endless night,I'm all alone.\n[01:59.775]Inlove's cruel game,who'll be bold?\n","mv_info":{"mv":"未知mv","size":"未知大小","br":"未知码率"},"copyright":{"msg":"源码编译:笒鬼鬼 2023.10.7","api_vers":"music_v1","type":"单曲解析"}}}
log [聚合API接口 (by lerd)] Got URL: https://m801.music.126.net/20250824170543/fd6651a5768497b6f3cbb1d0542f8fa4/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/35506990299/de4f/d537/7094/a86a0c894b20f627e58f4e037d4c395d.flac?vuutv=A7XpJabDtVoErDfg3RK06roYvpIZBAEmr9JCvxQyDTfjnvwYqfsPSt/U/JF0z9u2Y2jv1+amjY2hWt/SDX8lK9noAJr9RuTVNZQ8fkPgk0k=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"id":"2645500113","name":"跳楼机","artist":"LBI利比","album":"跳楼机","duration":"03:21","size":"37.58MB","format":"FLAC 无损","pic":"https://p2.music.126.net/cmoE8PsdK_Yn9VJ8ZVCGrw==/109951170507596121.jpg","url":"https://m801.music.126.net/20250824170543/95d24951ff177932ed72a6774daeca9f/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/59380389564/6208/bdff/c609/48528ac72450220810d50149cfc2e004.flac?vuutv=3zlsWhIHsS2SCmZEHgLK0okflSqXB5u+/FVWujevR5vPS/V1Y9VMcFggeprtqu2t4gp6FuEzlBPgiTPkoQvUGhGI4YBcdcw9bGrYwG3SZyg=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw","lyric":"[00:00.00] 作词 : 姜洄\n[00:01.00] 作曲 : 鹿柯的宁叔\n[00:02.00] 制作人 : LBI利比/BackToBand赵楚峰\n[00:03.00] 编曲 : 卡其漠\n[00:04.00] 吉他 : 大牛\n[00:05.00] 混音&母带 : LBI利比\n[00:06.00] 和声 : LBI利比\n[00:07.00] 制作公司 : 天马行空文化\n[00:08.00] 策划/推广 : 大碗\n[00:09.00] 监制 : 杰森\n[00:10.00] 总监制 : 陈国威/许雯静\n[00:11.00] 出品 : 索尼音乐\n[00:18.84]风走了 只留下一条街的叶落\n[00:23.34]你走了 只留下我双眼的红\n[00:26.70]逼着自己早点睡\n[00:28.86]能不能再做一个有你的美梦\n[00:33.52]\n[00:33.87]我好像一束极光\n[00:36.90]守在遥远的世界尽头\n[00:40.74]看过了你的眼眸\n[00:42.87]才知道孤独很难忍受\n[00:47.02]\n[00:47.73]可笑吗 我删访问记录的时候有多慌张\n[00:52.26] 她会看见吗 曾经只有我能看的模样\n[00:55.92]从夜深人静 一直难过到天亮\n[00:58.77]你反正不会再担心 我隐隐作疼的心脏\n[01:03.26]\n[01:03.45]好像遇到我 你才对自由向往\n[01:06.27]怎么为她 失去一切也无妨\n[01:09.12]可能是我贱吧\n[01:10.50]不爱我的非要上\n[01:12.15]那么硬的南墙非要撞\n[01:14.64]是不是内心希望\n[01:16.32]头破血流就会让你想起\n[01:19.41]最爱我的时光\n[01:21.51]\n[01:21.75]baby我们的感情好像跳楼机\n[01:25.56]让我突然地升空又急速落地\n[01:29.28]你带给我一场疯狂\n[01:31.14]劫后余生好难呼吸\n[01:33.06]那天的天气难得放晴\n[01:35.31]你说的话却把我困在雨季\n[01:38.25]\n[01:38.43]其实你不是不爱了吧\n[01:40.05]只是有些摩擦没处理\n[01:41.85]怎么你闭口不语\n[01:44.19]是不是我正好\n[01:45.84]说中你的心\n[01:47.49]就承认还是在意吧\n[01:50.58]就骗骗我也可以\n[01:54.73]\n[02:10.23]可笑吗\n[02:12.00]你的出现是我不能规避的伤\n[02:14.67]怎么能接受这荒唐\n[02:16.59]可能是我贱吧\n[02:18.03]不爱我的非要上\n[02:19.65]那么硬的南墙非要撞\n[02:22.14]是不是内心希望\n[02:23.82]头破血流就会让你想起\n[02:26.91]最爱我的时光\n[02:29.26]\n[02:29.28]baby我们的感情好像跳楼机\n[02:33.06]让我突然地升空又急速落地\n[02:36.78]你带给我一场疯狂\n[02:38.64]劫后余生好难呼吸\n[02:40.56]那天的天气难得放晴\n[02:42.84]你说的话却把我困在雨季\n[02:45.84]\n[02:45.93]其实你不是不爱了吧\n[02:47.58]只是有些摩擦没处理\n[02:49.35]怎么你闭口不语\n[02:51.69]是不是我正好\n[02:53.34]说中你的心\n[02:54.99]就承认还是在意吧\n[02:58.11]哪怕骗骗我也可以\n[03:02.48]\n","mv_info":{"mv":"https://vodkgeyttp8.vod.126.net/cloudmusic/3caa/core/f9ac/2f91e152698dd1de1ce2971ec18b305f.mp4?wsSecret=642c6e664a406c39a0ef4ef04d0f32b9&wsTime=1756024843","size":"41.21MB","br":1080},"copyright":{"msg":"源码编译:笒鬼鬼 2023.10.7","api_vers":"music_v1","type":"单曲解析"}}}
log [聚合API接口 (by lerd)] Got URL: https://m801.music.126.net/20250824170543/95d24951ff177932ed72a6774daeca9f/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/59380389564/6208/bdff/c609/48528ac72450220810d50149cfc2e004.flac?vuutv=3zlsWhIHsS2SCmZEHgLK0okflSqXB5u+/FVWujevR5vPS/V1Y9VMcFggeprtqu2t4gp6FuEzlBPgiTPkoQvUGhGI4YBcdcw9bGrYwG3SZyg=&cdntag=bWFyaz1vc193ZWIscXVhbGl0eV9sb3NzbGVzcw
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"rid":235498,"name":"半岛铁盒","artist":"周杰伦","album":"八度空间","quality":"无损 FLAC","duration":"5分19秒","size":"34.93 MB","pic":"https://img1.kuwo.cn/star/albumcover/300/s4s35/17/1252973864.jpg","url":"https://sx-sycdn.kuwo.cn/1e6d7a56e3d776c312f8a5094c268eb3/68aad00a/resource/s1/11/65/2331191230.flac?from=cenguigui_api","lrc":"[00:00.00]半岛铁盒 - 周杰伦 (Jay Chou)\n[00:04.00]词:周杰伦\n[00:08.00]曲:周杰伦\n[00:12.00]编曲:林迈可\n[00:17.00]走廊灯关上 书包放\n[00:19.00]走到房间窗外望\n[00:21.00]回想刚买的书\n[00:22.00]一本名叫半岛铁盒\n[00:24.00]放在床边堆好多\n[00:26.00]第一页第六页第七页序\n[00:28.00]我永远都想不到\n[00:30.00]陪我看这书的你会要走\n[00:32.00]不再是不再有\n[00:33.00]现在已经看不到\n[00:36.00]铁盒的钥匙孔\n[00:37.00]透了光看见它锈了好久\n[00:39.00]好旧好旧\n[00:40.00]外围的灰尘包围了我\n[00:43.00]好暗好暗\n[00:44.00]铁盒的钥匙我找不到\n[00:47.00]放在糖果旁的\n[00:49.00]是我很想回忆的甜\n[00:54.00]然而过滤了你和我\n[00:57.00]沦落而成美\n[01:02.00]沉在盒子里的是你\n[01:05.00]给我的快乐\n[01:09.00]我很想记得可是我记不得\n[01:15.00]为什么这样子\n[01:18.00]你拉着我 说你有些犹豫\n[01:22.00]怎么这样子\n[01:25.00]雨还没停你就撑伞要走\n[01:30.00]已经习惯不去阻止你\n[01:33.00]过好一阵子你就会回来\n[01:38.00]印象中的爱情\n[01:40.00]好像顶不住那时间\n[01:44.00]为什么这样子\n[01:47.00]你看着我说你已经决定\n[01:52.00]我拉不住你\n[01:55.00]他的手应该比我更暖\n[01:59.00]铁盒的序变成了日记\n[02:03.00]变成了空气 演化成回忆\n[02:07.00]印象中的爱情\n[02:10.00]好像顶不住那时间\n[02:13.00]所以你弃权\n[02:29.00]走廊灯关上 书包放\n[02:32.00]走到房间窗外望\n[02:33.00]回想刚买的书\n[02:35.00]一本名叫半岛铁盒\n[02:37.00]放在床 边堆好多\n[02:39.00]第一页第六页第七页序\n[02:41.00]我永远都想不到\n[02:43.00]陪我看这书的你会要走\n[02:45.00]不再是不再有\n[02:46.00]现在已经看不到\n[02:48.00]铁盒的钥匙孔 透了光\n[02:50.00]看见它锈了好久\n[02:52.00]好旧好旧\n[02:53.00]外围的灰尘包围了我\n[02:56.00]好暗好暗\n[02:57.00]铁盒的钥匙我找不到\n[03:00.00]放在糖果旁的\n[03:02.00]是我很想回忆的甜\n[03:07.00]然而过滤了你和我\n[03:10.00]沦落而成美\n[03:14.00]沉在盒子里的是你\n[03:18.00]给我的快乐\n[03:22.00]我很想记得可是我记不得\n[03:27.00]为什么这样子\n[03:31.00]你拉着我说你有些犹豫\n[03:35.00]怎么这样子\n[03:38.00]雨还没停你就撑伞要走\n[03:42.00]已经习惯不去阻止你\n[03:46.00]过好一阵子你就会回来\n[03:51.00]印象中的爱情\n[03:53.00]好像顶不住那时间\n[03:57.00]为什么这样子\n[04:00.00]你拉着我 说你有些犹豫\n[04:04.00]怎么这样子\n[04:08.00]雨还没停你就撑伞要走\n[04:12.00]已经习惯不去阻止你\n[04:16.00]过好一阵子你就会回来\n[04:20.00]印象中的爱情\n[04:23.00]好像顶不住那时间\n[04:26.00]为什么这样子\n[04:30.00]你看着我说你已经决定\n[04:34.00]我拉不住你\n[04:37.00]他的手应该比我更暖\n[04:43.00]铁盒的序变成了日记\n[04:45.00]变成了空气 演化成回忆\n[04:50.00]印象中的爱情\n[04:52.00]好像顶不住那时间\n[04:56.00]所以你弃权\n"}}
log [聚合API接口 (by lerd)] Got URL: https://sx-sycdn.kuwo.cn/1e6d7a56e3d776c312f8a5094c268eb3/68aad00a/resource/s1/11/65/2331191230.flac?from=cenguigui_api
log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"msg":"解析成功","data":{"rid":96765035,"name":"后来","artist":"刘若英","album":"2020 刘若英陪你 献上录音专辑","quality":"高音质 MP3","duration":"5分9秒","size":"11.8 MB","pic":"https://img1.kuwo.cn/star/albumcover/300/s4s68/34/3776980601.jpg","url":"https://lv-sycdn.kuwo.cn/64121eca9cc1bfc51137f12f1143fc07/68aad00a/resource/30106/trackmedia/M800000gIZOH1tq8pT.mp3?from=cenguigui_api","lrc":"[00:00.00]后来 (Later) - 刘若英\n[00:02.00]词:玉城千春\n[00:03.00]曲:玉城千春\n[00:04.00]改编词:施人诚\n[00:12.00]后来 我总算学会了如何去爱\n[00:18.00]可惜你早已远去消失在人海\n[00:24.00]后来终于在眼泪中明白\n[00:30.00]有些人一旦错过就不再\n[00:38.00]栀子花白花瓣\n[00:43.00]落在我蓝色百褶裙上\n[00:49.00]爱你 你轻声说\n[00:56.00]我低下头闻见一阵芬芳\n[01:02.00]那个永恒的夜晚\n[01:06.00]十七岁仲夏 你吻我的那个夜晚\n[01:14.00]让我往后的时光 每当有感叹\n[01:21.00]总想起当天的星光\n[01:27.00]那时候的爱情\n[01:33.00]为什么就能那样简单\n[01:38.00]而又是为什么 人年少时\n[01:45.00]一定要让深爱的人受伤\n[01:51.00]在这相似的深夜里\n[01:55.00]你是否一样 也在静静追悔感伤\n[02:04.00]如果当时我们能 不那么倔强\n[02:10.00]现在也不那么遗憾\n[02:15.00]你都如何回忆我\n[02:18.00]带着笑或是很沉默\n[02:21.00]这些年来有没有人能让你不寂寞\n[02:27.00]后来 我总算学会了如何去爱\n[02:33.00]可惜你早已远去消失在人海\n[02:39.00]后来 终于在眼泪中明白\n[02:46.00]有些人一旦错过就不再\n[03:17.00]你都如何回忆我\n[03:19.00]带着笑或是很沉默\n[03:22.00]这些年来有没有人能让你不寂寞\n[03:28.00]后来 我总算学会了如何去爱\n[03:35.00]可惜你早已远去消失在人海\n[03:41.00]后来 终于在眼泪中明白\n[03:47.00]有些人一旦错过就不再\n[03:53.00]后来 我总算学会了如何去爱\n[03:59.00]可惜你早已远去消失在人海\n[04:05.00]后来 终于在眼泪中明白\n[04:12.00]有些人一旦错过就不再\n[04:18.00]永远不会再重来\n[04:24.00]有一个男孩爱着那个女孩\n"}}
log [聚合API接口 (by lerd)] Got URL: https://lv-sycdn.kuwo.cn/64121eca9cc1bfc51137f12f1143fc07/68aad00a/resource/30106/trackmedia/M800000gIZOH1tq8pT.mp3?from=cenguigui_api
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd)] 使用事件驱动方式获取 mg 音源链接
error [聚合API接口 (by lerd)] Error: msg is not defined
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [聚合API接口 (by lerd) by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["320k","flac"]}}}
log [聚合API接口 (by lerd) by Ceru插件] 注册事件监听器: request
log [聚合API接口 (by lerd) by Ceru插件] 音源注册完成: ["tx","wy","kg","kw","mg"]
log [CeruMusic] Plugin "聚合API接口 (by lerd)" loaded successfully.
log [聚合API接口 (by lerd) by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["320k","flac"]}}
log [CeruMusic] 事件驱动插件初始化成功

File diff suppressed because one or more lines are too long

View File

@@ -50,3 +50,107 @@ log [CeruMusic] 请求响应状态: 200
log [CeruMusic] 请求响应内容: {"code":200,"message":"成功","yourinfo":{"ip":"183.251.97.29","ua":"lx-music-nodejs/1.0.0"}}
log API Response: {"body":{"code":200,"message":"成功","yourinfo":{"ip":"183.251.97.29","ua":"lx-music-nodejs/1.0.0"}},"statusCode":200,"headers":{"server":["openresty"],"date":["Fri, 22 Aug 2025 03:44:41 GMT"],"content-type":["application/json; charset=utf-8"],"content-length":["108"],"connection":["keep-alive"],"access-control-allow-origin":["*"],"x-process-time":["0.0007938602939248085"],"cache-control":["no-cache"],"alt-svc":["h3=\":443\"; ma=2592000"]}}
log checkUpdate success
log [野草🌾 by Ceru插件] 注册事件监听器: request
log [CeruMusic] 发起请求: http://grass.tempmusics.tk/v1/urlinfo/1.0.0
log [CeruMusic] Plugin "野草🌾" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] 请求响应状态: 503
log [CeruMusic] 请求响应内容: {"code":503,"msg":"Failed to parse response: invalid json response body at http://grass.tempmusics.tk/v1/urlinfo/1.0.0 reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
error [CeruMusic] Request failed: Failed to parse response: invalid json response body at http://grass.tempmusics.tk/v1/urlinfo/1.0.0 reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [野草🌾 by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit","hires","atmos","master"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit","hires","atmos","master"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit","hires","atmos","master"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k","320k","flac","flac24bit","hires","atmos","master"]}}
log [野草🌾 by Ceru插件] 音源注册完成: ["kw"]
error [CeruMusic] 解析响应失败: invalid json response body at http://grass.tempmusics.tk/v1/urlinfo/1.0.0 reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [野草🌾 by Ceru插件] 发送事件: inited {"sources":{"kw":{"type":"music","actions":["musicUrl"],"qualitys":["128k"]}}}
log [CeruMusic] Plugin "六音音源" loaded successfully.
log [CeruMusic] 插件初始化完成: window is not defined
log [CeruMusic] 插件初始化完成: window is not defined
log [CeruMusic] Plugin "六音音源" loaded successfully.
log [小熊猫音源 by Ceru插件] 注册事件监听器: request
log [小熊猫音源 by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"kw":{"name":"酷我音乐","type":"music","actions":["musicUrl"],"qualitys":["128k","320k"]},"kg":{"name":"酷狗音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"tx":{"name":"企鹅音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"wy":{"name":"网易音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"mg":{"name":"咪咕音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]}}}
log [小熊猫音源 by Ceru插件] 音源注册完成: ["kw","kg","tx","wy","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
log [CeruMusic] Plugin "小熊猫音源" loaded successfully.
log [小熊猫音源 by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k"]}}
log [CeruMusic] 请求响应状态: 404
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
log [CeruMusic] 请求响应状态: 404
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
log [CeruMusic] 请求响应状态: 404
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
log [小熊猫音源 by Ceru插件] 注册事件监听器: request
log [小熊猫音源 by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k"]}}
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
log [小熊猫音源 by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"kw":{"name":"酷我音乐","type":"music","actions":["musicUrl"],"qualitys":["128k","320k"]},"kg":{"name":"酷狗音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"tx":{"name":"企鹅音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"wy":{"name":"网易音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"mg":{"name":"咪咕音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]}}}
log [小熊猫音源 by Ceru插件] 音源注册完成: ["kw","kg","tx","wy","mg"]
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "小熊猫音源" loaded successfully.
log [CeruMusic] 请求响应状态: 404
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
log [CeruMusic] 请求响应状态: 404
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
log [CeruMusic] 请求响应状态: 404
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
log [小熊猫音源 by Ceru插件] 注册事件监听器: request
log [小熊猫音源 by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"kw":{"name":"酷我音乐","type":"music","actions":["musicUrl"],"qualitys":["128k","320k"]},"kg":{"name":"酷狗音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"tx":{"name":"企鹅音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"wy":{"name":"网易音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]},"mg":{"name":"咪咕音乐","type":"music","actions":["musicUrl"],"qualitys":["128k"]}}}
log [小熊猫音源 by Ceru插件] 音源注册完成: ["kw","kg","tx","wy","mg"]
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
log [小熊猫音源 by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "小熊猫音源" loaded successfully.
log [CeruMusic] 请求响应状态: 404
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 请求响应状态: 404
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
log [CeruMusic] 发起请求: https://api.leobba.cn/lxmusic/lx-music-source/package.json
log [CeruMusic] 请求响应状态: 404
error [CeruMusic] 解析响应失败: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', "<html>
<h"... is not valid JSON
log [CeruMusic] 请求响应内容: {"code":404,"msg":"Failed to parse response: invalid json response body at https://api.leobba.cn/lxmusic/lx-music-source/package.json reason: Unexpected token '<', \"<html>\r\n<h\"... is not valid JSON"}
log [Huibq_lxmusic源 by Ceru插件] 注册事件监听器: request
log [Huibq_lxmusic源 by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k"]},"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k"]}}}
log [Huibq_lxmusic源 by Ceru插件] 音源注册完成: ["kw","kg","tx","wy","mg"]
log [Huibq_lxmusic源 by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k","320k"]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "Huibq_lxmusic源" loaded successfully.
log 提取到的 MUSIC_QUALITY 字符串: {"kw":["128k","320k","flac","flac24bit"],"kg":["128k","320k","flac","flac24bit"],"tx":["128k","320k","flac","flac24bit"],"wy":["128k","320k","flac","flac24bit"],"mg":["128k","320k","flac","flac24bit"]}
log 解析后的 MUSIC_QUALITY 数据: {"kw":["128k","320k","flac","flac24bit"],"kg":["128k","320k","flac","flac24bit"],"tx":["128k","320k","flac","flac24bit"],"wy":["128k","320k","flac","flac24bit"],"mg":["128k","320k","flac","flac24bit"]}
log [微信公众号:洛雪音乐 by Ceru插件] 注册事件监听器: request
log [微信公众号:洛雪音乐 by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"local":{"name":"local","type":"music","actions":["musicUrl","pic","lyric"],"qualitys":[]}}}
log 提取的音源配置: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]}}
log [微信公众号:洛雪音乐 by Ceru插件] 音源注册完成: ["kw","kg","tx","wy","mg","local"]
log [微信公众号:洛雪音乐 by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"local":{"name":"LOCAL音乐","type":"music","qualitys":[]}}
log [CeruMusic] Plugin "微信公众号:洛雪音乐" loaded successfully.
log [CeruMusic] 事件驱动插件初始化成功
log 提取到的 MUSIC_QUALITY 字符串: {"kw":["128k","320k","flac","flac24bit"],"kg":["128k","320k","flac","flac24bit"],"tx":["128k","320k","flac","flac24bit"],"wy":["128k","320k","flac","flac24bit"],"mg":["128k","320k","flac","flac24bit"]}
log 解析后的 MUSIC_QUALITY 数据: {"kw":["128k","320k","flac","flac24bit"],"kg":["128k","320k","flac","flac24bit"],"tx":["128k","320k","flac","flac24bit"],"wy":["128k","320k","flac","flac24bit"],"mg":["128k","320k","flac","flac24bit"]}
log [Ceru插件 by Ceru插件] 注册事件监听器: request
log [Ceru插件 by Ceru插件] 发送事件: inited {"status":true,"openDevTools":false,"sources":{"kw":{"name":"kw","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"kg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"tx","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"wy","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"mg","type":"music","actions":["musicUrl"],"qualitys":["128k","320k","flac","flac24bit"]},"local":{"name":"local","type":"music","actions":["musicUrl","pic","lyric"],"qualitys":[]}}}
log 提取的音源配置: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]}}
log [Ceru插件 by Ceru插件] 音源注册完成: ["kw","kg","tx","wy","mg","local"]
log [Ceru插件 by Ceru插件] 动态音源信息已更新: {"kw":{"name":"酷我音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"kg":{"name":"酷狗音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"tx":{"name":"QQ音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"wy":{"name":"网易云音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"mg":{"name":"咪咕音乐","type":"music","qualitys":["128k","320k","flac","flac24bit"]},"local":{"name":"LOCAL音乐","type":"music","qualitys":[]}}
log [CeruMusic] 事件驱动插件初始化成功
log [CeruMusic] Plugin "Ceru插件" loaded successfully.

View File

@@ -45,9 +45,10 @@ const parseLyric = (str) => {
}
}
let i = 0
let lxlyric = str.replace(/\[((\d+),\d+)\].*/g, (str) => {
let crlyric = str.replace(/\[((\d+),\d+)\].*/g, (str) => {
let result = str.match(/\[((\d+),\d+)\].*/)
let time = parseInt(result[2])
let lineStartTime = parseInt(result[2]) // 行开始时间
let time = lineStartTime
let ms = time % 1000
time /= 1000
let m = parseInt(time / 60)
@@ -59,20 +60,28 @@ const parseLyric = (str) => {
if (rlyric) rlyric[i] = `[${time}]${rlyric[i]?.join('') ?? ''}`
if (tlyric) tlyric[i] = `[${time}]${tlyric[i]?.join('') ?? ''}`
i++
return str.replace(result[1], time)
// 保持原始的 [start,duration] 格式,将相对时间戳转换为绝对时间戳
let processedStr = str.replace(/<(\d+),(\d+),(\d+)>/g, (match, start, duration, param) => {
const absoluteStart = lineStartTime + parseInt(start)
return `(${absoluteStart},${duration},${param})`
})
return processedStr
})
rlyric = rlyric ? rlyric.join('\n') : ''
tlyric = tlyric ? tlyric.join('\n') : ''
lxlyric = lxlyric.replace(/<(\d+,\d+),\d+>/g, '<$1>')
lxlyric = decodeName(lxlyric)
lyric = lxlyric.replace(/<\d+,\d+>/g, '')
// 保留完整的时间戳格式 (startTime,duration,param)
crlyric = crlyric.replace(/<(\d+,\d+,\d+)>/g, '($1)')
crlyric = decodeName(crlyric)
lyric = crlyric.replace(/\(\d+,\d+,\d+\)/g, '')
rlyric = decodeName(rlyric)
tlyric = decodeName(tlyric)
return {
lyric,
tlyric,
rlyric,
lxlyric
crlyric
}
}

View File

@@ -190,7 +190,6 @@ ipcMain.handle('service-music-request', async (_, api, args) => {
return await musicService.request(api, args)
})
aiEvents(mainWindow)
// This method will be called when Electron has finished

View File

@@ -154,7 +154,7 @@ export const netEaseService: MusicServiceBase = {
// 对于多个ID并行获取详情
const promises = ids.map((id) => sourceModule.musicInfo.getMusicInfo(id))
const results = await Promise.all(promises)
return results.filter((result :any) => result) // 过滤掉失败的结果
return results.filter((result: any) => result) // 过滤掉失败的结果
} else {
throw new Error(`不支持的音乐源: ${source}`)
}

View File

@@ -1,20 +1,22 @@
import main from './service'
import { ipcMain } from 'electron';
export type MainApi = ReturnType<typeof main>;
export type MethodParams<T extends keyof MainApi> =
MainApi[T] extends (...args: any[]) => any
import { ipcMain } from 'electron'
export type MainApi = ReturnType<typeof main>
export type MethodParams<T extends keyof MainApi> = MainApi[T] extends (...args: any[]) => any
? Parameters<MainApi[T]>[0]
: never;
export function request<T extends keyof MainApi>(_: any, method: T,
: never
export function request<T extends keyof MainApi>(
_: any,
method: T,
options: {
source: any;
} & (MethodParams<T> extends object ? MethodParams<T> : { [key: string]: any })): ReturnType<MainApi[T]> {
const { source, ...args } = options;
source: any
} & (MethodParams<T> extends object ? MethodParams<T> : { [key: string]: any })
): ReturnType<MainApi[T]> {
const { source, ...args } = options
if (!source) throw new Error('请配置音源')
const Api = main(source);
const Api = main(source)
if (Api.hasOwnProperty(method)) {
return (Api[method] as (args: any) => any)(args);
return (Api[method] as (args: any) => any)(args)
}
throw new Error(`未知的方法: ${method}`);
throw new Error(`未知的方法: ${method}`)
}
ipcMain.handle('service-music-sdk-request', request)

View File

@@ -1,19 +1,27 @@
import { SearchSongArg, SearchResult, GetMusicUrlArg, GetMusicPicArg } from './type'
import {
SearchSongArg,
SearchResult,
GetMusicUrlArg,
GetMusicPicArg,
GetLyricArg,
PlaylistResult,
GetSongListDetailsArg,
PlaylistDetailResult
} from './type'
import pluginService from '../plugin/index'
import musicSdk from '../../utils/musicSdk/index'
function main(source: string) {
const Api = musicSdk[source]
Api.songList
return {
async search({ keyword, page = 1, limit = 30 }: SearchSongArg) {
return await Api.musicSearch.search(keyword, page, limit) as Promise<SearchResult>
return (await Api.musicSearch.search(keyword, page, limit)) as Promise<SearchResult>
},
async getMusicUrl({ pluginId, songInfo, quality }: GetMusicUrlArg) {
try {
const usePlugin = pluginService.getPluginById(pluginId)
const usePlugin = pluginService.getPluginById(pluginId)
if (!pluginId || !usePlugin) return { error: '请配置音源来播放歌曲' }
return await usePlugin.getMusicUrl(source, songInfo , quality)
return await usePlugin.getMusicUrl(source, songInfo, quality)
} catch (e: any) {
return {
error: '获取歌曲失败 ' + e.error || e
@@ -21,7 +29,7 @@ function main(source: string) {
}
},
async getPic({songInfo}: GetMusicPicArg) {
async getPic({ songInfo }: GetMusicPicArg) {
try {
return await Api.getPic(songInfo)
} catch (e: any) {
@@ -29,7 +37,35 @@ function main(source: string) {
error: '获取歌曲失败 ' + e.error || e
}
}
},
async getLyric({ songInfo }: GetLyricArg) {
try {
const res = await Api.getLyric(songInfo).promise
return res
} catch (e: any) {
return {
error: '获取歌词失败 ' + (e.error || e.message || e)
}
}
},
async getHotSonglist() {
return (await Api.songList.getList(Api.songList.sortList[0].id, '', 1)) as PlaylistResult
},
async getPlaylistDetail({ id, page }: GetSongListDetailsArg) {
return (await Api.songList.getListDetail(id, page)) as PlaylistDetailResult
}
}
}
export default main
// musicSdk.wy.songList.handleParseId('https://music.163.com/m/playlist?id=13916216005&creatorId=3359622909',2).then(res=>{
// console.log(res)//13916216005
// })
// main('kg').getHotSonglist().then(res=>{
// console.log(res.list[0])//13916216005
// })
musicSdk.kg.songList.getListDetail('id_8052780', 1).then((res) => {
console.log(res) //13916216005
})

View File

@@ -1,6 +1,6 @@
export interface sdkArg {
source: string
[key:string]: any
[key: string]: any
}
export interface SearchSongArg {
@@ -8,7 +8,6 @@ export interface SearchSongArg {
page: number
limit: number
}
// 可以添加到 src/main/services/music/service-base.ts 文件中
// 单首歌曲的类型定义
export interface MusicItem {
@@ -49,3 +48,44 @@ export interface GetMusicPicArg {
export interface GetLyricArg {
songInfo: MusicItem
}
interface Playlist {
play_count: string // 播放次数,如 "1.8万"
id: string // 歌单ID
author: string // 创建者/作者
name: string // 歌单名称
time: string // 创建时间,格式为 "YYYY-MM-DD"
img: string // 封面图片URL
grade?: string // 评分可能为undefined
total: number // 歌曲总数
desc: string // 歌单描述
source: string // 音乐来源,如 "wy" 表示网易云音乐
}
export interface PlaylistResult {
list: Playlist[]
total: number
page: number
source: string
}
export interface GetSongListDetailsArg {
id: string
page: number
}
// 歌单详情信息
export interface PlaylistInfo {
name: string
img: string
desc: string
}
// 歌单详情结果
export interface PlaylistDetailResult {
list: MusicItem[]
page: number
limit: number
total: number
source: string
info: PlaylistInfo
}

View File

@@ -101,7 +101,7 @@ const pluginService = {
}
},
getPluginById(pluginId: string): CeruMusicPluginHost | null{
getPluginById(pluginId: string): CeruMusicPluginHost | null {
if (!Object.hasOwn(loadedPlugins, pluginId)) {
return null
}

View File

@@ -94,14 +94,16 @@ class Logger {
}
}
function parseArgs(args){
return args.map(arg=>{
if(typeof arg==='object'){
return JSON.stringify(arg)
}
function parseArgs(args) {
return args
.map((arg) => {
if (typeof arg === 'object') {
return JSON.stringify(arg)
}
return arg
}).join(' ')
return arg
})
.join(' ')
}
async function getLog(pluginId: string) {

View File

@@ -1,7 +1,7 @@
import * as vm from 'vm'
import fetch from 'node-fetch'
import * as fs from 'fs'
import {MusicItem} from '../../musicSdk/type'
import { MusicItem } from '../../musicSdk/type'
// 定义插件结构接口
export interface PluginInfo {
@@ -26,7 +26,7 @@ interface CeruMusicPlugin {
getLyric?: (source: string, musicInfo: MusicInfo) => Promise<string>
}
interface MusicInfo extends MusicItem{
interface MusicInfo extends MusicItem {
id?: string
}

View File

@@ -92,7 +92,7 @@ export default {
lyric: Buffer.from(body.content, 'base64').toString('utf-8'),
tlyric: '',
rlyric: '',
lxlyric: ''
crlyric: ''
}
default:
return Promise.reject(new Error(`未知歌词格式: ${body.fmt}`))

View File

@@ -183,7 +183,11 @@ export default {
lrcT
}
},
transformLrc(tags, lrclist) {
transformLrc(tags, lrclist, keepOriginalTime = false) {
if (keepOriginalTime) {
// 保持原始时间格式用于逐字歌词
return `${tags.join('\n')}\n${lrclist ? lrclist.map((l) => `${l.text}\n`).join('') : '暂无歌词'}`
}
return `${tags.join('\n')}\n${lrclist ? lrclist.map((l) => `[${l.time}]${l.text}\n`).join('') : '暂无歌词'}`
},
parseLrc(lrc) {
@@ -224,10 +228,10 @@ export default {
// return Promise.reject(new Error('Get lyric failed'))
// }
// if (lrcInfo.tlyric) lrcInfo.tlyric = lrcInfo.tlyric.replace(lrcTools.rxps.wordTimeAll, '')
// lrcInfo.lxlyric = lrcTools.parse(lrcInfo.lyric)
// lrcInfo.crlyric = lrcTools.parse(lrcInfo.lyric)
// // console.log(lrcInfo.lyric)
// // console.log(lrcInfo.tlyric)
// // console.log(lrcInfo.lxlyric)
// // console.log(lrcInfo.crlyric)
// // console.log(JSON.stringify(lrcInfo))
// })
// })
@@ -257,9 +261,9 @@ export default {
// console.log(lrcInfo)
if (lrcInfo.tlyric) lrcInfo.tlyric = lrcInfo.tlyric.replace(lrcTools.rxps.wordTimeAll, '')
try {
lrcInfo.lxlyric = lrcTools.parse(lrcInfo.lyric)
lrcInfo.crlyric = lrcTools.parse(lrcInfo.lyric)
} catch {
lrcInfo.lxlyric = ''
lrcInfo.crlyric = ''
}
lrcInfo.lyric = lrcInfo.lyric.replace(lrcTools.rxps.wordTimeAll, '')
if (!existTimeExp.test(lrcInfo.lyric)) return Promise.reject(new Error('Get lyric failed'))

View File

@@ -66,7 +66,14 @@ export const matchToken = (headers) => {
// })
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
export const decodeLyric = (base64Data) => kwdecode(base64Data, false)
export const decodeLyric = (options) => {
if (typeof options === 'string') {
// 兼容旧的调用方式
return kwdecode(options, false)
}
// 新的调用方式,传递对象
return kwdecode(options.lrcBase64, options.isGetLyricx || false)
}
// export const tokenRequest = async(url, options = {}) => {
// let token = kw_token.token
@@ -101,26 +108,32 @@ export const lrcTools = {
isOK: false,
lines: [],
tags: [],
getWordInfo(str, str2, prevWord) {
getWordInfo(str, str2, prevWord, lineStartTime = 0) {
// 使用原始的酷我音乐时间计算逻辑,但输出绝对时间戳
const offset = parseInt(str)
const offset2 = parseInt(str2)
let startTime = Math.abs((offset + offset2) / (this.offset * 2))
let endTime = Math.abs((offset - offset2) / (this.offset2 * 2)) + startTime
if (prevWord) {
if (startTime < prevWord.endTime) {
prevWord.endTime = startTime
if (prevWord.startTime > prevWord.endTime) {
prevWord.startTime = prevWord.endTime
}
let duration = Math.abs((offset - offset2) / (this.offset2 * 2))
prevWord.newTimeStr = `<${prevWord.startTime},${prevWord.endTime - prevWord.startTime}>`
// console.log(prevWord)
// 转换为基于行开始时间的绝对时间戳
const absoluteStartTime = lineStartTime + startTime
const endTime = absoluteStartTime + duration
if (prevWord) {
if (absoluteStartTime < prevWord.endTime) {
prevWord.endTime = absoluteStartTime
if (prevWord.absoluteStartTime > prevWord.endTime) {
prevWord.absoluteStartTime = prevWord.endTime
}
prevWord.newTimeStr = `(${prevWord.absoluteStartTime},${prevWord.endTime - prevWord.absoluteStartTime},0)`
}
}
return {
startTime,
absoluteStartTime,
endTime,
timeStr: `<${startTime},${endTime - startTime}>`
duration,
timeStr: `(${absoluteStartTime},${duration},0)`
}
},
parseLine(line) {
@@ -134,17 +147,35 @@ export const lrcTools = {
}
const wordTimes = words.match(this.rxps.wordTimeAll)
if (!wordTimes) return
// console.log(wordTimes)
// 提取原始时间戳信息 [start,duration]
const timeMatch = time.match(/\[(\d+):(\d+)\.(\d+)\]/)
let lineStartTime = 0
let lineDuration = 0
if (timeMatch) {
const minutes = parseInt(timeMatch[1])
const seconds = parseInt(timeMatch[2])
const milliseconds = parseInt(timeMatch[3])
lineStartTime = minutes * 60000 + seconds * 1000 + milliseconds
// 计算行持续时间(这里需要根据实际情况调整)
lineDuration = 5000 // 默认5秒实际应该根据下一行时间计算
}
let preTimeInfo
for (const timeStr of wordTimes) {
const result = this.rxps.wordTime.exec(timeStr)
const wordInfo = this.getWordInfo(result[1], result[2], preTimeInfo)
words = words.replace(timeStr, wordInfo.timeStr)
const wordInfo = this.getWordInfo(result[1], result[2], preTimeInfo, lineStartTime)
const newTimeStr = `(${wordInfo.absoluteStartTime},${wordInfo.duration},0)`
words = words.replace(timeStr, newTimeStr)
if (preTimeInfo?.newTimeStr)
words = words.replace(preTimeInfo.timeStr, preTimeInfo.newTimeStr)
preTimeInfo = wordInfo
preTimeInfo.timeStr = newTimeStr
}
this.lines.push(time + words)
// 使用 [start,duration] 格式而不是标准时间格式
const originalTimeTag = `[${lineStartTime},${lineDuration}]`
this.lines.push(originalTimeTag + words)
return
}
result = this.rxps.tagLine.exec(line)

View File

@@ -46,7 +46,7 @@ const mrcTools = {
}
return {
lyric: lrcLines.join('\n'),
lxlyric: lxlrcLines.join('\n')
crlyric: lxlrcLines.join('\n')
}
},
getText(url, tryNum = 0) {
@@ -70,7 +70,7 @@ const mrcTools = {
})
},
getLrc(url) {
return this.getText(url).then((text) => ({ lxlyric: '', lyric: text }))
return this.getText(url).then((text) => ({ crlyric: '', lyric: text }))
},
getTrc(url) {
if (!url) return Promise.resolve('')

View File

@@ -7,7 +7,7 @@ import { eapi } from './utils/crypto'
// str = str.replace(/\r/g, '')
// let lxlyric = str.replace(/\[((\d+),\d+)\].*/g, str => {
// let crlyric = str.replace(/\[((\d+),\d+)\].*/g, str => {
// let result = str.match(/\[((\d+),\d+)\].*/)
// let time = parseInt(result[2])
// let ms = time % 1000
@@ -30,8 +30,8 @@ import { eapi } from './utils/crypto'
// return str
// })
// lxlyric = decodeName(lxlyric)
// return lxlyric.trim()
// crlyric = decodeName(crlyric)
// return crlyric.trim()
// }
const eapiRequest = (url, data) => {
@@ -96,20 +96,13 @@ const parseTools = {
lrcLines.push(`${startTimeStr}${words.replace(this.rxps.wordTimeAll, '')}`)
let times = words.match(this.rxps.wordTimeAll)
if (!times) continue
times = times.map((time) => {
const result = /\((\d+),(\d+),\d+\)/.exec(time)
return `<${Math.max(parseInt(result[1]) - startMsTime, 0)},${result[2]}>`
})
const wordArr = words.split(this.rxps.wordTime)
wordArr.shift()
const newWords = times.map((time, index) => `${time}${wordArr[index]}`).join('')
lxlrcLines.push(`${startTimeStr}${newWords}`)
// 保持网易云音乐逐字歌词的原始格式 [start,duration](start,duration)xxx
const originalTimeTag = result[0] // 保持原始的 [start,duration] 格式
lxlrcLines.push(`${originalTimeTag}${words}`)
}
return {
lyric: lrcLines.join('\n'),
lxlyric: lxlrcLines.join('\n')
crlyric: lxlrcLines.join('\n')
}
},
parseHeaderInfo(str) {
@@ -172,7 +165,7 @@ const parseTools = {
lyric: '',
tlyric: '',
rlyric: '',
lxlyric: ''
crlyric: ''
}
if (ylrc) {
let lines = this.parseHeaderInfo(ylrc)
@@ -198,7 +191,7 @@ const parseTools = {
const timeRxp = /^\[[\d:.]+\]/
const headers = lines.filter((l) => timeRxp.test(l)).join('\n')
info.lyric = `${headers}\n${result.lyric}`
info.lxlyric = result.lxlyric
info.crlyric = result.crlyric
return info
}
}
@@ -243,7 +236,7 @@ const parseTools = {
// lyric: body.lrc.lyric,
// tlyric: body.tlyric?.lyric ?? '',
// rlyric: body.romalrc?.lyric ?? '',
// // lxlyric: parseLyric(body.klyric.lyric),
// // crlyric: parseLyric(body.klyric.lyric),
// }
// })
// return requestObj

View File

@@ -36,7 +36,7 @@ export default {
headers: { location },
statusCode
} = await requestObj_listDetailLink.promise
// console.log(headers)
// console.log(statusCode)
if (statusCode > 400) return this.handleParseId(link, ++retryNum)
const url = location == null ? link : location
return this.regExps.listDetailLink.test(url)

View File

@@ -1,12 +1,12 @@
import needle from 'needle'
import axios from 'axios'
import { bHh } from './musicSdk/options'
import { deflateRaw } from 'zlib'
import { httpOverHttp, httpsOverHttp } from 'tunnel'
import { HttpsProxyAgent, HttpProxyAgent } from 'hpagent'
// 常量定义
const DEFAULT_TIMEOUT = 15000
const DEFAULT_USER_AGENT =
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Mobile Safari/537.36'
const debugRequest = false
const httpsRxp = /^https:/
@@ -56,58 +56,20 @@ export const clearProxy = () => {
* @param {string} url - 请求URL
*/
const getRequestAgent = (url) => {
let options
let proxyUrl
if (proxy.enable && proxy.host) {
options = {
proxy: {
host: proxy.host,
port: proxy.port
}
}
// 如果有用户名和密码,添加认证
if (proxy.username && proxy.password) {
options.proxy.proxyAuth = `${proxy.username}:${proxy.password}`
}
const auth = proxy.username && proxy.password ? `${proxy.username}:${proxy.password}@` : ''
proxyUrl = `http://${auth}${proxy.host}:${proxy.port}`
} else if (proxy.envProxy) {
options = {
proxy: {
host: proxy.envProxy.host,
port: proxy.envProxy.port
}
}
proxyUrl = `http://${proxy.envProxy.host}:${proxy.envProxy.port}`
}
return options ? (httpsRxp.test(url) ? httpsOverHttp : httpOverHttp)(options) : undefined
}
/**
* 核心请求函数
* @param {string} url - 请求URL
* @param {Object} options - 请求选项
* @param {Function} callback - 回调函数
*/
const request = (url, options, callback) => {
let data
if (options.body) {
data = options.body
} else if (options.form) {
data = options.form
options.json = false
} else if (options.formData) {
data = options.formData
options.json = false
if (proxyUrl) {
return httpsRxp.test(url)
? new HttpsProxyAgent({ proxy: proxyUrl })
: new HttpProxyAgent({ proxy: proxyUrl })
}
options.response_timeout = options.timeout
return needle.request(options.method || 'get', url, data, options, (err, resp, body) => {
if (!err) {
body = resp.body = resp.raw.toString()
try {
resp.body = JSON.parse(resp.body)
} catch (_) {}
body = resp.body
}
callback(err, resp, body)
}).request
return undefined
}
/**
@@ -125,30 +87,31 @@ const defaultHeaders = {
const buildHttpPromise = (url, options) => {
let obj = {
isCancelled: false,
cancelToken: axios.CancelToken.source(),
cancelHttp: () => {
if (!obj.requestObj) return (obj.isCancelled = true)
cancelHttp(obj.requestObj)
obj.requestObj = null
obj.promise = obj.cancelHttp = null
obj.cancelFn(new Error('已取消'))
obj.cancelFn = null
if (obj.isCancelled) return
obj.isCancelled = true
obj.cancelToken.cancel('已取消')
}
}
obj.promise = new Promise((resolve, reject) => {
obj.cancelFn = reject
debugRequest && console.log(`\n---send request------${url}------------`)
fetchData(url, options.method, options, (err, resp, body) => {
obj.promise = new Promise(async (resolve, reject) => {
try {
debugRequest && console.log(`\n---send request------${url}------------`)
const response = await fetchData(url, options.method, {
...options,
cancelToken: obj.cancelToken.token
})
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(body)
obj.requestObj = null
obj.cancelFn = null
if (err) return reject(err)
resolve(resp)
}).then((ro) => {
obj.requestObj = ro
if (obj.isCancelled) obj.cancelHttp()
})
debugRequest && console.log(response.data)
resolve(response)
} catch (err) {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(err.message)
reject(err)
}
})
return obj
}
@@ -160,18 +123,19 @@ const buildHttpPromise = (url, options) => {
export const httpFetch = (url, options = { method: 'get' }) => {
const requestObj = buildHttpPromise(url, options)
requestObj.promise = requestObj.promise.catch((err) => {
if (axios.isCancel(err)) {
return Promise.reject(new Error('已取消'))
}
if (err.code === 'ECONNABORTED' || err.message.includes('timeout')) {
return Promise.reject(new Error('超时'))
}
if (err.code === 'ENOTFOUND') {
return Promise.reject(new Error('未连接'))
}
if (err.message === 'socket hang up') {
return Promise.reject(new Error('无法请求'))
}
switch (err.code) {
case 'ETIMEDOUT':
case 'ESOCKETTIMEDOUT':
return Promise.reject(new Error('超时'))
case 'ENOTFOUND':
return Promise.reject(new Error('未连接'))
default:
return Promise.reject(err)
}
return Promise.reject(err)
})
return requestObj
}
@@ -181,8 +145,8 @@ export const httpFetch = (url, options = { method: 'get' }) => {
* @param {Object} requestObj - 请求对象
*/
export const cancelHttp = (requestObj) => {
if (!requestObj || !requestObj.abort) return
requestObj.abort()
if (!requestObj || !requestObj.cancelHttp) return
requestObj.cancelHttp()
}
/**
@@ -202,14 +166,23 @@ const handleDeflateRaw = (data) =>
* @param {string} url - 请求URL
* @param {string} method - 请求方法
* @param {Object} options - 请求选项
* @param {Function} callback - 回调函数
*/
const fetchData = async (url, method, options, callback) => {
const { headers = {}, format = 'json', timeout = DEFAULT_TIMEOUT, ...restOptions } = options
const fetchData = async (url, method = 'get', options = {}) => {
const {
headers = {},
format = 'json',
timeout = DEFAULT_TIMEOUT,
data,
body,
form,
formData,
cancelToken,
...restOptions
} = options
console.log('---start---', url)
const requestHeaders = Object.assign({}, headers)
const requestHeaders = Object.assign({}, defaultHeaders, headers)
// 处理特殊头部
if (requestHeaders[bHh]) {
@@ -229,21 +202,90 @@ const fetchData = async (url, method, options, callback) => {
delete requestHeaders[bHh]
}
return request(
url,
{
...restOptions,
method,
headers: Object.assign({}, defaultHeaders, requestHeaders),
timeout,
agent: getRequestAgent(url),
json: format === 'json'
},
(err, resp, body) => {
if (err) return callback(err, null)
callback(null, resp, body)
// 处理请求数据
let requestData = data || body || form || formData
// 处理表单数据
if (form || formData) {
if (form) {
requestHeaders['Content-Type'] = 'application/x-www-form-urlencoded'
if (typeof form === 'object') {
requestData = new URLSearchParams(form).toString()
}
}
)
}
const axiosConfig = {
method: method.toLowerCase(),
url,
headers: requestHeaders,
timeout,
httpsAgent: getRequestAgent(url),
httpAgent: getRequestAgent(url),
...restOptions
}
// 添加取消令牌
if (cancelToken) {
axiosConfig.cancelToken = cancelToken
}
// 根据方法添加数据
if (['post', 'put', 'patch'].includes(method.toLowerCase()) && requestData) {
axiosConfig.data = requestData
} else if (['get', 'delete'].includes(method.toLowerCase()) && requestData) {
axiosConfig.params = requestData
}
// 处理响应格式
if (format !== 'json') {
axiosConfig.responseType = format === 'script' ? 'text' : format
} else {
// 对于可能需要原始数据的请求,使用 arraybuffer
if (url.includes('newlyric.kuwo.cn')) {
axiosConfig.responseType = 'arraybuffer'
}
}
try {
const response = await axios(axiosConfig)
// 处理不同类型的响应数据
let bodyData = response.data
let rawData
if (axiosConfig.responseType === 'arraybuffer') {
rawData = Buffer.from(response.data)
// 尝试解析为 JSON如果失败则保持原始数据
try {
bodyData = JSON.parse(rawData.toString())
} catch {
bodyData = rawData.toString()
}
} else {
rawData = Buffer.isBuffer(response.data)
? response.data
: Buffer.from(
typeof response.data === 'string' ? response.data : JSON.stringify(response.data)
)
}
return {
statusCode: response.status,
headers: response.headers,
body: bodyData,
data: bodyData,
raw: rawData
}
} catch (error) {
if (axios.isAxiosError(error)) {
const err = new Error(error.message)
err.code = error.code
err.response = error.response
throw err
}
throw error
}
}
/**
@@ -261,14 +303,18 @@ export const http = (url, options, cb) => {
if (options.method == null) options.method = 'get'
debugRequest && console.log(`\n---send request------${url}------------`)
return fetchData(url, options.method, options, (err, resp, body) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(body)
if (err) {
fetchData(url, options.method, options)
.then((resp) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(resp.body)
cb(null, resp, resp.body)
})
.catch((err) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(JSON.stringify(err))
}
cb(err, resp, body)
})
cb(err, null, null)
})
}
/**
@@ -284,14 +330,18 @@ export const httpGet = (url, options, callback) => {
}
debugRequest && console.log(`\n---send request-------${url}------------`)
return fetchData(url, 'get', options, function (err, resp, body) {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(body)
if (err) {
fetchData(url, 'get', options)
.then((resp) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(resp.body)
callback(null, resp, resp.body)
})
.catch((err) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(JSON.stringify(err))
}
callback(err, resp, body)
})
callback(err, null, null)
})
}
/**
@@ -309,14 +359,18 @@ export const httpPost = (url, data, options, callback) => {
options.data = data
debugRequest && console.log(`\n---send request-------${url}------------`)
return fetchData(url, 'post', options, function (err, resp, body) {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(body)
if (err) {
fetchData(url, 'post', options)
.then((resp) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(resp.body)
callback(null, resp, resp.body)
})
.catch((err) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(JSON.stringify(err))
}
callback(err, resp, body)
})
callback(err, null, null)
})
}
/**
@@ -335,20 +389,28 @@ export const http_jsonp = (url, options, callback) => {
if (url.indexOf('?') < 0) url += '?'
url += `&${options.jsonpCallback}=${jsonpCallback}`
options.format = 'script'
options.format = 'text'
debugRequest && console.log(`\n---send request-------${url}------------`)
return fetchData(url, 'get', options, function (err, resp, body) {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(body)
if (err) {
debugRequest && console.log(JSON.stringify(err))
} else {
body = JSON.parse(body.replace(new RegExp(`^${jsonpCallback}\\(({.*})\\)$`), '$1'))
}
callback(err, resp, body)
})
fetchData(url, 'get', options)
.then((resp) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(resp.body)
try {
const body = JSON.parse(
resp.body.replace(new RegExp(`^${jsonpCallback}\\(({.*})\\)$`), '$1')
)
callback(null, resp, body)
} catch (err) {
callback(err, resp, null)
}
})
.catch((err) => {
debugRequest && console.log(`\n---response------${url}------------`)
debugRequest && console.log(JSON.stringify(err))
callback(err, null, null)
})
}
/**
@@ -358,13 +420,16 @@ export const http_jsonp = (url, options, callback) => {
*/
export const checkUrl = (url, options = {}) => {
return new Promise((resolve, reject) => {
fetchData(url, 'head', options, (err, resp) => {
if (err) return reject(err)
if (resp.statusCode === 200) {
resolve()
} else {
reject(new Error(resp.statusCode))
}
})
fetchData(url, 'head', options)
.then((resp) => {
if (resp.statusCode === 200) {
resolve()
} else {
reject(new Error(resp.statusCode))
}
})
.catch((err) => {
reject(err)
})
})
}

View File

@@ -1,5 +1,5 @@
import { ElectronAPI } from '@electron-toolkit/preload'
import {MainApi,MethodParams} from '../main/services/musicSdk/index'
import { MainApi, MethodParams } from '../main/services/musicSdk/index'
// 自定义 API 接口
interface CustomAPI {
minimize: () => void
@@ -11,9 +11,12 @@ interface CustomAPI {
music: {
request: (api: string, args: any) => Promise<any>
requestSdk:<T extends keyof MainApi>(method: T, args: {
source: any;
} & (MethodParams<T> extends object ? MethodParams<T> : { [key: string]: any })) => ReturnType<MainApi[T]>
requestSdk: <T extends keyof MainApi>(
method: T,
args: {
source: any
} & (MethodParams<T> extends object ? MethodParams<T> : { [key: string]: any })
) => ReturnType<MainApi[T]>
}
ai: {

View File

@@ -26,7 +26,8 @@ const api = {
music: {
request: (api: string, args: any) => ipcRenderer.invoke('service-music-request', api, args),
requestSdk:(api: string, args: any) => ipcRenderer.invoke('service-music-sdk-request', api, args)
requestSdk: (api: string, args: any) =>
ipcRenderer.invoke('service-music-sdk-request', api, args)
},
plugins: {
selectAndAddPlugin: (type: 'lx' | 'cr') =>

View File

@@ -18,13 +18,13 @@ declare module 'vue' {
RouterView: typeof import('vue-router')['RouterView']
SearchComponent: typeof import('./src/components/Search/SearchComponent.vue')['default']
ShaderBackground: typeof import('./src/components/Play/ShaderBackground.vue')['default']
SongVirtualList: typeof import('./src/components/Music/SongVirtualList.vue')['default']
TAlert: typeof import('tdesign-vue-next')['Alert']
TAside: typeof import('tdesign-vue-next')['Aside']
TButton: typeof import('tdesign-vue-next')['Button']
TCard: typeof import('tdesign-vue-next')['Card']
TContent: typeof import('tdesign-vue-next')['Content']
TDialog: typeof import('tdesign-vue-next')['Dialog']
TIcon: typeof import('tdesign-vue-next')['Icon']
TImage: typeof import('tdesign-vue-next')['Image']
TInput: typeof import('tdesign-vue-next')['Input']
TitleBarControls: typeof import('./src/components/TitleBarControls.vue')['default']
TLayout: typeof import('tdesign-vue-next')['Layout']
@@ -32,7 +32,6 @@ declare module 'vue' {
TRadioButton: typeof import('tdesign-vue-next')['RadioButton']
TRadioGroup: typeof import('tdesign-vue-next')['RadioGroup']
TSlider: typeof import('tdesign-vue-next')['Slider']
TTooltip: typeof import('tdesign-vue-next')['Tooltip']
Versions: typeof import('./src/components/Versions.vue')['default']
}
}

View File

@@ -0,0 +1,632 @@
<template>
<div class="song-virtual-list">
<!-- 表头 -->
<div class="list-header">
<div class="col-index" v-if="showIndex"></div>
<div class="col-title">标题</div>
<div class="col-album" v-if="showAlbum">专辑</div>
<div class="col-like">喜欢</div>
<div class="col-duration" v-if="showDuration">时长</div>
</div>
<!-- 虚拟滚动容器 -->
<div ref="scrollContainer" class="virtual-scroll-container" @scroll="onScroll">
<div class="virtual-scroll-spacer" :style="{ height: totalHeight + 'px' }">
<div class="virtual-scroll-content" :style="{ transform: `translateY(${offsetY}px)` }">
<div
v-for="(song, index) in visibleItems"
:key="song.id || song.songmid"
class="song-item"
@mouseenter="hoveredSong = song.id || song.songmid"
@mouseleave="hoveredSong = null"
>
<!-- 序号或播放状态图标 -->
<div class="col-index" v-if="showIndex">
<span v-if="hoveredSong !== (song.id || song.songmid)" class="track-number">
{{ String(visibleStartIndex + index + 1).padStart(2, '0') }}
</span>
<button v-else class="play-btn" title="播放" @click.stop="handlePlay(song)">
<i class="icon-play"></i>
</button>
</div>
<!-- 歌曲信息 -->
<div class="col-title" @dblclick="handleAddToPlaylist(song)">
<div v-if="song.img" class="song-cover">
<img :src="song.img" loading="lazy" alt="封面" />
</div>
<div class="song-info">
<div class="song-title" :title="song.name">{{ song.name }}</div>
<div class="song-artist" :title="song.singer">
<span v-if="song.types && song.types.length > 0" class="quality-tag">
{{ getQualityDisplayName(song.types[song.types.length - 1]) }}
</span>
{{ song.singer }}
</div>
</div>
</div>
<!-- 专辑信息 -->
<div class="col-album" v-if="showAlbum">
<span class="album-name" :title="song.albumName">
{{ song.albumName || '-' }}
</span>
</div>
<!-- 喜欢按钮 -->
<div class="col-like">
<button class="action-btn like-btn" @click.stop>
<i class="icon-heart"></i>
</button>
</div>
<!-- 时长 -->
<div class="col-duration" v-if="showDuration">
<div class="duration-wrapper">
<span v-if="hoveredSong !== (song.id || song.songmid)" class="duration">
{{ formatDuration(song.interval) }}
</span>
<div v-else class="action-buttons">
<button
class="action-btn download-btn"
title="下载"
@click.stop="$emit('download', song)"
>
<DownloadIcon />
</button>
<button
class="action-btn playlist-btn"
title="添加到播放列表"
@click.stop="$emit('addToPlaylist', song)"
>
<i class="iconfont icon-zengjia"></i>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, computed, onMounted, nextTick } from 'vue'
import { DownloadIcon } from 'tdesign-icons-vue-next'
interface Song {
id?: number
songmid: number
singer: string
name: string
albumName: string
albumId: number
source: string
interval: string | number
img: string
lrc: null | string
types: any[]
_types: Record<string, any>
typeUrl: Record<string, any>
}
interface Props {
songs: Song[]
currentSong?: Song | null
isPlaying?: boolean
showIndex?: boolean
showAlbum?: boolean
showDuration?: boolean
}
const props = withDefaults(defineProps<Props>(), {
currentSong: null,
isPlaying: false,
showIndex: true,
showAlbum: true,
showDuration: true
})
const emit = defineEmits(['play', 'pause', 'addToPlaylist', 'download','scroll'])
// 虚拟滚动相关状态
const scrollContainer = ref<HTMLElement>()
const hoveredSong = ref<number | null>(null)
const itemHeight = 64
const buffer = 5
const scrollTop = ref(0)
const visibleStartIndex = ref(0)
const visibleEndIndex = ref(0)
// 计算总高度
const totalHeight = computed(() => props.songs.length * itemHeight)
// 计算偏移量
const offsetY = computed(() => visibleStartIndex.value * itemHeight)
// 计算可见项目
const visibleItems = computed(() => {
const totalItems = props.songs.length
if (totalItems === 0) return []
if (!scrollContainer.value) return props.songs.slice(0, Math.min(10, totalItems))
const containerRect = scrollContainer.value.getBoundingClientRect()
const containerHeight = containerRect.height || 400
const visibleCount = Math.ceil(containerHeight / itemHeight)
const startIndex = Math.floor(scrollTop.value / itemHeight)
const endIndex = Math.min(startIndex + visibleCount + buffer * 2, totalItems)
visibleStartIndex.value = Math.max(0, startIndex - buffer)
visibleEndIndex.value = endIndex
return props.songs.slice(visibleStartIndex.value, visibleEndIndex.value)
})
// 判断是否为当前歌曲
const isCurrentSong = (song: Song) => {
return (
props.currentSong &&
(song.id === props.currentSong.id || song.songmid === props.currentSong.songmid)
)
}
// 处理播放
const handlePlay = (song: Song) => {
if (isCurrentSong(song) && props.isPlaying) {
emit('pause')
} else {
emit('play', song)
}
}
// 处理添加到播放列表
const handleAddToPlaylist = (song: Song) => {
emit('addToPlaylist', song)
}
// 格式化时长
const formatDuration = (duration: string | number) => {
if (!duration) return '--:--'
let seconds: number
if (typeof duration === 'string') {
// 如果已经是 "mm:ss" 格式,直接返回
if (duration.includes(':')) return duration
seconds = parseInt(duration)
} else {
seconds = duration
}
if (isNaN(seconds)) return '--:--'
const minutes = Math.floor(seconds / 60)
const remainingSeconds = Math.floor(seconds % 60)
return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`
}
// 获取音质显示名称
const qualityMap: Record<string, string> = {
'128k': '标准',
'192k': '高品',
'320k': '超高',
flac: '无损',
flac24bit: '超高解析',
hires: '高清',
atmos: '全景',
master: '母带'
}
const getQualityDisplayName = (quality: any) => {
if (typeof quality === 'object' && quality.type) {
return qualityMap[quality.type] || quality.type
}
return qualityMap[quality] || quality || ''
}
// 处理滚动事件
const onScroll = (event: Event) => {
const target = event.target as HTMLElement
scrollTop.value = target.scrollTop
emit('scroll', event)
}
onMounted(() => {
// 组件挂载后触发一次重新计算
nextTick(() => {
if (scrollContainer.value) {
// 触发一次重新计算可见项目
const event = new Event('scroll')
onScroll(event)
}
})
})
</script>
<style scoped>
.song-virtual-list {
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
}
.list-header {
display: grid;
grid-template-columns: 60px 1fr 200px 60px 80px;
padding: 8px 20px;
background: #fafafa;
border-bottom: 1px solid #e9e9e9;
font-size: 12px;
color: #999;
flex-shrink: 0;
height: 40px;
box-sizing: border-box;
align-items: center;
.col-index {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.col-title {
padding-left: 10px;
display: flex;
align-items: center;
}
.col-album {
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0 10px;
}
.col-like {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.col-duration {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
}
.virtual-scroll-container {
background: #fff;
overflow-y: auto;
position: relative;
flex: 1;
min-height: 0;
.virtual-scroll-spacer {
position: relative;
}
.virtual-scroll-content {
position: absolute;
top: 0;
left: 0;
right: 0;
}
.song-item {
display: grid;
grid-template-columns: 60px 1fr 200px 60px 80px;
padding: 8px 20px;
border-bottom: 1px solid #f5f5f5;
cursor: pointer;
transition: background-color 0.2s ease;
height: 64px;
&:hover,
&.is-hovered {
background: #f5f5f5;
}
&.is-current {
background: #f0f7ff;
color: #507daf;
}
&.is-playing {
background: #e6f7ff;
color: #507daf;
}
.col-index {
display: flex;
align-items: center;
justify-content: center;
width: 60px;
.track-number {
font-size: 14px;
color: #999;
font-variant-numeric: tabular-nums;
width: 100%;
text-align: center;
}
.play-btn {
background: none;
border: none;
cursor: pointer;
color: #507daf;
font-size: 16px;
padding: 8px;
border-radius: 50%;
transition: all 0.2s;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
font-style: none;
&:hover {
background: rgba(80, 125, 175, 0.1);
color: #3a5d8f;
}
i {
display: block;
line-height: 1;
}
}
}
.col-title {
display: flex;
align-items: center;
padding-left: 10px;
min-width: 0;
overflow: hidden;
.song-cover {
width: 40px;
height: 40px;
margin-right: 10px;
border-radius: 4px;
overflow: hidden;
flex-shrink: 0;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
.song-info {
min-width: 0;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
overflow: hidden;
.song-title {
font-size: 14px;
color: #333;
margin-bottom: 4px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.2;
&:hover {
color: #507daf;
}
}
.song-artist {
font-size: 12px;
color: #999;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.2;
display: flex;
align-items: center;
gap: 4px;
.quality-tag {
background: #fff7e6;
color: #fa8c16;
padding: 1px 4px;
border-radius: 2px;
font-size: 10px;
line-height: 1;
}
}
}
}
.col-album {
display: flex;
align-items: center;
padding: 0 10px;
overflow: hidden;
.album-name {
font-size: 12px;
color: #999;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
&:hover {
color: #507daf;
cursor: pointer;
}
}
}
.col-like {
display: flex;
align-items: center;
justify-content: center;
width: 60px;
.like-btn {
background: none;
border: none;
cursor: pointer;
color: #ccc;
padding: 8px;
border-radius: 50%;
transition: all 0.2s;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
&:hover {
color: #507daf;
background: rgba(80, 125, 175, 0.1);
}
i {
display: block;
line-height: 1;
font-size: 16px;
}
}
}
.col-duration {
display: flex;
align-items: center;
justify-content: center;
width: 80px;
.duration-wrapper {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
.duration {
font-size: 12px;
color: #999;
font-variant-numeric: tabular-nums;
min-width: 35px;
text-align: center;
}
.action-buttons {
display: flex;
gap: 2px;
justify-content: center;
align-items: center;
.action-btn {
background: none;
border: none;
cursor: pointer;
color: #ccc;
padding: 6px;
border-radius: 50%;
transition: all 0.2s;
width: 28px;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
&:hover {
color: #507daf;
background: rgba(80, 125, 175, 0.1);
}
i {
display: block;
line-height: 1;
font-size: 14px;
}
}
}
}
}
}
}
/* 图标样式 */
.icon-play::before {
content: '▶';
font-style: normal;
}
.icon-pause::before {
content: '⏸';
font-style: normal;
}
.icon-download::before {
content: '⬇';
font-style: normal;
}
.icon-heart::before {
content: '♡';
font-style: normal;
}
/* 响应式设计 */
@media (max-width: 768px) {
.list-header {
grid-template-columns: 50px 1fr 50px 60px;
.col-album {
display: none;
}
}
.song-item {
grid-template-columns: 50px 1fr 50px 60px;
.col-album {
display: none;
}
.col-title {
.song-cover {
width: 35px;
height: 35px;
}
}
.col-index {
width: 50px;
}
.col-like {
width: 50px;
}
.col-duration {
width: 60px;
.duration-wrapper {
.action-buttons {
gap: 2px;
.action-btn {
padding: 2px;
font-size: 12px;
}
}
}
}
}
}
</style>

View File

@@ -10,23 +10,20 @@ import {
} from '@applemusic-like-lyrics/vue'
import type { SongList } from '@renderer/types/audio'
import type { LyricLine } from '@applemusic-like-lyrics/core'
import { ref, computed, onMounted, watch, reactive, onBeforeUnmount } from 'vue'
import { ref, computed, onMounted, watch, reactive, onBeforeUnmount, toRaw } from 'vue'
import { shouldUseBlackText } from '@renderer/utils/contrastColor'
import { ControlAudioStore } from '@renderer/store/ControlAudio'
import { Fullscreen1Icon, FullscreenExit1Icon, ChevronDownIcon } from 'tdesign-icons-vue-next'
// 导入歌词请求函数
import musicService from '@renderer/services/music'
// 直接从包路径导入,避免 WebAssembly 导入问题
import { parseYrc, parseLrc, parseTTML } from '@applemusic-like-lyrics/lyric/pkg/amll_lyric.js'
import _ from 'lodash'
import { storeToRefs } from 'pinia'
interface Props {
show?: boolean
coverImage?: string
songId?: string|null
songInfo: SongList|{songmid:number|null}
songId?: string | null
songInfo: SongList | { songmid: number | null }
}
const props = withDefaults(defineProps<Props>(), {
@@ -53,8 +50,6 @@ const toggleFullscreen = () => {
onMounted(async () => {
// 添加事件监听器检测全屏状态变化
document.addEventListener('fullscreenchange', handleFullscreenChange)
})
onBeforeUnmount(() => {
@@ -88,46 +83,86 @@ const state = reactive({
watch(
() => props.songId,
async (newId) => {
if (!newId) return
if (!newId || !props.songInfo) return
let lyricText = ''
let parsedLyrics: LyricLine[] = []
// 创建一个符合 MusicItem 接口的对象,只包含必要的基本属性
try {
// 请求歌词数据设置yv=true获取逐字歌词
try {
const res = (await (
await fetch(`https://amll.bikonoo.com/ncm-lyrics/${newId}.ttml`)
).text()) as any
if (!res || res.length < 100) throw new Error('ttml 无歌词')
parsedLyrics = parseTTML(res).lines
console.log('搜索到ttml歌词', parsedLyrics)
} catch {
const lyricData = await musicService.request('getLyric', {
id: newId,
yv: true,
lv: true,
tv: true
})
console.log(lyricData)
// 优先使用逐字歌词(yrc),如果没有则回退到普通歌词(lrc)
// 检查是否为网易云音乐只有网易云才使用ttml接口
const isNetease =
props.songInfo && 'source' in props.songInfo && props.songInfo.source === 'wy'
const songinfo: any = _.cloneDeep(toRaw(props.songInfo))
console.log(songinfo)
if (isNetease) {
// 网易云音乐优先尝试ttml接口
try {
const res = (await (
await fetch(`https://amll.bikonoo.com/ncm-lyrics/${newId}.ttml`)
).text()) as any
if (!res || res.length < 100) throw new Error('ttml 无歌词')
parsedLyrics = parseTTML(res).lines
console.log('搜索到ttml歌词', parsedLyrics)
} catch {
// ttml失败后使用新的歌词API
const lyricData = await window.api.music.requestSdk('getLyric', {
source: 'wy',
songInfo: songinfo
})
console.log('网易云歌词数据:', lyricData)
if (lyricData.yrc?.lyric) {
lyricText = lyricData.yrc.lyric
parsedLyrics = parseYrc(lyricText)
console.log('使用逐字歌词', parsedLyrics)
} else if (lyricData.lrc?.lyric) {
lyricText = lyricData.lrc.lyric
parsedLyrics = parseLrc(lyricText)
console.log('使用普通歌词', parsedLyrics)
}
if (lyricData.tlyric && lyricData.tlyric.lyric) {
const translatedline = parseLrc(lyricData.tlyric.lyric)
console.log(translatedline)
for (let i = 0; i < parsedLyrics.length; i++) {
parsedLyrics[i].translatedLyric = translatedline[i].words[0].word
if (lyricData.crlyric) {
// 使用逐字歌词
lyricText = lyricData.crlyric
console.log('网易云逐字歌词', lyricText)
parsedLyrics = parseYrc(lyricText)
console.log('使用网易云逐字歌词', parsedLyrics)
} else if (lyricData.lyric) {
lyricText = lyricData.lyric
parsedLyrics = parseLrc(lyricText)
console.log('使用网易云普通歌词', parsedLyrics)
}
if (lyricData.tlyric) {
const translatedline = parseLrc(lyricData.tlyric)
console.log('网易云翻译歌词:', translatedline)
for (let i = 0; i < parsedLyrics.length; i++) {
if (translatedline[i] && translatedline[i].words[0]) {
parsedLyrics[i].translatedLyric = translatedline[i].words[0].word
}
}
}
}
} else {
// 其他音乐平台直接使用新的歌词API
const source = props.songInfo && 'source' in props.songInfo ? props.songInfo.source : 'kg'
// 创建一个纯净的对象避免Vue响应式对象序列化问题
const cleanSongInfo = JSON.parse(JSON.stringify(toRaw(props.songInfo)))
const lyricData = await window.api.music.requestSdk('getLyric', {
source: source,
songInfo: cleanSongInfo
})
console.log(`${source}歌词数据:`, lyricData)
if (lyricData.crlyric) {
// 使用逐字歌词
lyricText = lyricData.crlyric
parsedLyrics = parseYrc(lyricText)
console.log(`使用${source}逐字歌词`, parsedLyrics)
} else if (lyricData.lyric) {
lyricText = lyricData.lyric
parsedLyrics = parseLrc(lyricText)
console.log(`使用${source}普通歌词`, parsedLyrics)
}
if (lyricData.tlyric) {
const translatedline = parseLrc(lyricData.tlyric)
console.log(`${source}翻译歌词:`, translatedline)
for (let i = 0; i < parsedLyrics.length; i++) {
if (translatedline[i] && translatedline[i].words[0]) {
parsedLyrics[i].translatedLyric = translatedline[i].words[0].word
}
}
console.log('使用翻译歌词', translatedline)
}
}
@@ -212,20 +247,39 @@ watch(
<template>
<div class="full-play" :class="{ active: props.show, 'use-black-text': useBlackText }">
<!-- <ShaderBackground :cover-image="actualCoverImage" /> -->
<BackgroundRender ref="bgRef" :album="actualCoverImage" :album-is-video="false" :fps="30" :flow-speed="4"
:low-freq-volume="1" :has-lyric="state.lyricLines.length > 10"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1" />
<BackgroundRender
ref="bgRef"
:album="actualCoverImage"
:album-is-video="false"
:fps="30"
:flow-speed="4"
:low-freq-volume="1"
:has-lyric="state.lyricLines.length > 10"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1"
/>
<!-- 全屏按钮 -->
<button class="fullscreen-btn" :class="{ 'black-text': useBlackText }" @click="toggleFullscreen">
<button
class="fullscreen-btn"
:class="{ 'black-text': useBlackText }"
@click="toggleFullscreen"
>
<Fullscreen1Icon v-if="!isFullscreen" class="icon" />
<FullscreenExit1Icon v-else class="icon" />
</button>
<button class="putawayscreen-btn" :class="{ 'black-text': useBlackText }" @click="emit('toggle-fullscreen')">
<button
class="putawayscreen-btn"
:class="{ 'black-text': useBlackText }"
@click="emit('toggle-fullscreen')"
>
<ChevronDownIcon class="icon" />
</button>
<Transition name="fade-nav">
<TitleBarControls v-if="props.show" class="top" style="-webkit-app-region: drag"
:color="useBlackText ? 'black' : 'white'" />
<TitleBarControls
v-if="props.show"
class="top"
style="-webkit-app-region: drag"
:color="useBlackText ? 'black' : 'white'"
/>
</Transition>
<div class="playbox">
<!-- 播放控件内容
@@ -234,27 +288,43 @@ watch(
<p>这里将显示歌曲信息</p>
</div> -->
<div class="left" :style="state.lyricLines.length <= 0 && 'width:100vw'">
<div class="box" :style="!Audio.isPlay
? 'animation-play-state: paused;'
: '' +
(state.lyricLines.length <= 0
? 'width:70vh;height:70vh; transition: width 0.3s ease, height 0.3s ease; transition-delay: 0.8s;'
: '')
">
<t-image :src="coverImage" :style="state.lyricLines.length > 0
? 'width: min(20vw, 380px); height: min(20vw, 380px)'
: 'width: 45vh; height: 45vh;transition: width 0.3s ease, height 0.3s ease; transition-delay: 1s;'
" shape="circle" class="cover" />
<div
class="box"
:style="
!Audio.isPlay
? 'animation-play-state: paused;'
: '' +
(state.lyricLines.length <= 0
? 'width:70vh;height:70vh; transition: width 0.3s ease, height 0.3s ease; transition-delay: 0.8s;'
: '')
"
>
<t-image
:src="coverImage"
:style="
state.lyricLines.length > 0
? 'width: min(20vw, 380px); height: min(20vw, 380px)'
: 'width: 45vh; height: 45vh;transition: width 0.3s ease, height 0.3s ease; transition-delay: 1s;'
"
shape="circle"
class="cover"
/>
</div>
</div>
<div v-show="state.lyricLines.length > 0" class="right">
<LyricPlayer ref="lyricPlayerRef" :lyric-lines="props.show ? state.lyricLines : []"
:current-time="state.currentTime" :align-position="0.38" style="mix-blend-mode: plus-lighter"
class="lyric-player" @line-click="
<LyricPlayer
ref="lyricPlayerRef"
:lyric-lines="props.show ? state.lyricLines : []"
:current-time="state.currentTime"
:align-position="0.38"
style="mix-blend-mode: plus-lighter"
class="lyric-player"
@line-click="
(e) => {
if (Audio.audio) Audio.audio.currentTime = e.line.getLine().startTime / 1000
}
">
"
>
<template #bottom-line> Test Bottom Line </template>
</LyricPlayer>
</div>
@@ -364,7 +434,7 @@ watch(
position: relative;
:deep(.lyric-player) {
--amll-lyric-player-font-size: max(2vw, 38px);
--amll-lyric-player-font-size: max(2vw, 29px);
box-sizing: border-box;
width: 100%;
height: 100%;

View File

@@ -223,7 +223,7 @@ const playSong = async (song: SongList) => {
}
} catch (error: any) {
console.error('播放歌曲失败:', error)
MessagePlugin.error('播放失败,原因:'+error.message)
MessagePlugin.error('播放失败,原因:' + error.message)
}
}
@@ -664,7 +664,7 @@ const handleProgressDragStart = (event: MouseEvent) => {
}
// 歌曲信息
const songInfo = ref<Omit<SongList,'songmid'>&{songmid:null|number}>({
const songInfo = ref<Omit<SongList, 'songmid'> & { songmid: null | number }>({
songmid: null,
hash: '',
singer: 'CeruMusic',
@@ -805,7 +805,7 @@ watch(songInfo, setColor, { deep: true, immediate: true })
</div>
<div class="fullbox">
<FullPlay
:song-id="songInfo.songmid?songInfo.songmid.toString():null"
:song-id="songInfo.songmid ? songInfo.songmid.toString() : null"
:show="showFullPlay"
:cover-image="songInfo.img"
@toggle-fullscreen="toggleFullPlay"
@@ -846,7 +846,13 @@ watch(songInfo, setColor, { deep: true, immediate: true })
<div class="song-name">{{ song.name }}</div>
<div class="song-artist">{{ song.singer }}</div>
</div>
<div class="song-duration">{{ song.interval.includes(':') ? song.interval : formatTime(parseInt(song.interval) / 1000) }}</div>
<div class="song-duration">
{{
song.interval.includes(':')
? song.interval
: formatTime(parseInt(song.interval) / 1000)
}}
</div>
<button class="song-remove" @click.stop="localUserStore.removeSong(song.songmid)">
<span class="iconfont icon-xuanxiangshanchu"></span>
</button>

View File

@@ -191,7 +191,10 @@ const updatePlaylistStats = () => {
// 处理歌手信息
if (song.singer) {
// 如果歌手名包含分隔符,分割处理
const singers = song.singer.split(/[\/、&]/).map(s => s.trim()).filter(s => s)
const singers = song.singer
.split(/[\/、&]/)
.map((s) => s.trim())
.filter((s) => s)
singers.forEach((singer) => stats.artists.add(singer))
}
})

View File

@@ -34,6 +34,11 @@ const routes: RouteRecordRaw[] = [
path: 'search',
name: 'search',
component: () => import('@renderer/views/music/search.vue')
},
{
path: 'list/:id',
name: 'list',
component: () => import('@renderer/views/music/list.vue')
}
]
},

View File

@@ -14,7 +14,17 @@ const emitter = mitt<PlaylistEvents>()
// 将事件总线挂载到全局
;(window as any).musicEmitter = emitter
const qualityMap: Record<string, string> = {
'128k': '标准音质',
'192k': '高品音质',
'320k': '超高品质',
flac: '无损音质',
flac24bit: '超高解析',
hires: '高清臻音',
atmos: '全景环绕',
master: '超清母带'
}
const qualityKey = Object.keys(qualityMap)
/**
* 获取歌曲真实播放URL
* @param song 歌曲对象
@@ -25,19 +35,27 @@ export async function getSongRealUrl(song: SongList): Promise<string> {
// 获取当前用户的信息
const LocalUserDetail = LocalUserDetailStore()
// 通过统一的request方法获取真实的播放URL
const urlData = await window.api.music.requestSdk('getMusicUrl',{
pluginId:(LocalUserDetail.userSource.pluginId as unknown as string),
let quality = LocalUserDetail.userSource.quality as string
if (
qualityKey.indexOf(quality) >
qualityKey.indexOf((song.types[song.types.length - 1] as unknown as { type: any }).type)
) {
quality = (song.types[song.types.length - 1] as unknown as { type: any }).type
}
console.log(quality)
const urlData = await window.api.music.requestSdk('getMusicUrl', {
pluginId: LocalUserDetail.userSource.pluginId as unknown as string,
source: song.source,
songInfo:song,
quality: LocalUserDetail.userSource.quality as string
songInfo: song,
quality
})
console.log(urlData)
if (typeof urlData === 'object'&&urlData.error) {
if (typeof urlData === 'object' && urlData.error) {
throw new Error(urlData.error)
}else{
} else {
return urlData as string
}
} catch (error:any) {
} catch (error: any) {
console.error('获取歌曲URL失败:', error)
throw new Error('获取歌曲播放链接失败' + error.message)
}
@@ -55,22 +73,23 @@ export async function addToPlaylistAndPlay(
playSongCallback: (song: SongList) => Promise<void>
) {
try {
// 获取真实播放URL
await getSongRealUrl(song)
const playResult = playSongCallback(song)
// 使用store的方法添加歌曲到第一位
localUserStore.addSongToFirst(song)
// 获取真实播放URL
await getSongRealUrl(song)
// 播放歌曲 - 确保正确处理Promise
const playResult = playSongCallback(song)
if (playResult && typeof playResult.then === 'function') {
await playResult
}
await MessagePlugin.success('已添加到播放列表并开始播放')
} catch (error) {
console.error('添加到播放列表并播放失败:', error)
await MessagePlugin.error('播放失败,请重试')
console.error('播放失败:', error)
await MessagePlugin.error('播放失败了,可能还没有版权')
}
}
@@ -82,7 +101,9 @@ export async function addToPlaylistAndPlay(
export async function addToPlaylistEnd(song: SongList, localUserStore: any) {
try {
// 检查歌曲是否已在播放列表中
const existingIndex = localUserStore.list.findIndex((item: SongList) => item.songmid === song.songmid)
const existingIndex = localUserStore.list.findIndex(
(item: SongList) => item.songmid === song.songmid
)
if (existingIndex !== -1) {
await MessagePlugin.warning('歌曲已在播放列表中')
@@ -92,14 +113,6 @@ export async function addToPlaylistEnd(song: SongList, localUserStore: any) {
// 使用store的方法添加歌曲
localUserStore.addSong(song)
// 预加载歌曲URL可选提升用户体验
try {
await getSongRealUrl(song)
} catch (error) {
console.warn('预加载歌曲URL失败:', error)
// 预加载失败不影响添加到播放列表
}
await MessagePlugin.success('已添加到播放列表')
} catch (error) {
console.error('添加到播放列表失败:', error)

View File

@@ -1,11 +1,26 @@
<script setup lang="ts">
import PlayMusic from '@renderer/components/Play/PlayMusic.vue'
import TitleBarControls from '@renderer/components/TitleBarControls.vue'
import { ref } from 'vue'
import { onMounted, ref, watchEffect } from 'vue'
import { SearchIcon } from 'tdesign-icons-vue-next'
import { useRouter } from 'vue-router'
import { searchValue } from '@renderer/store/search'
import { LocalUserDetailStore } from '@renderer/store/LocalUserDetail'
onMounted(() => {
const LocalUserDetail = LocalUserDetailStore()
watchEffect(() => {
source.value = sourceicon[LocalUserDetail.userSource.source || 'wy']
})
})
const sourceicon = {
kg: 'kugouyinle',
wy: 'wangyiyun',
mg: 'mg',
tx: 'tx',
kw: 'kw'
}
const source = ref('kugouyinle')
interface MenuItem {
name: string
icon: string
@@ -104,7 +119,7 @@ const handleKeyDown = () => {
</div>
</t-aside>
<t-layout>
<t-layout style="flex: 1">
<t-content>
<div class="content">
<!-- Header -->
@@ -119,10 +134,7 @@ const handleKeyDown = () => {
<div class="search-container">
<div class="search-input">
<svg class="icon" aria-hidden="true">
<use
xlink:href="#icon-wangyiyun
"
></use>
<use :xlink:href="`#icon-${source}`"></use>
</svg>
<t-input
v-model="keyword"
@@ -143,6 +155,7 @@ const handleKeyDown = () => {
</template>
</t-input>
</div>
<TitleBarControls :color="'#000'"></TitleBarControls>
</div>
</div>
@@ -175,6 +188,7 @@ const handleKeyDown = () => {
width: 15rem;
background-color: #fff;
border-right: 0.0625rem solid #e5e7eb;
flex-shrink: 0;
.sidebar-content {
padding: 1rem;
@@ -189,7 +203,7 @@ const handleKeyDown = () => {
.logo-icon {
width: 2rem;
height: 2rem;
background-color: #f97316;
background-color: #4cd47c;
border-radius: 0.625rem;
display: flex;
align-items: center;
@@ -207,7 +221,7 @@ const handleKeyDown = () => {
color: #111827;
span {
font-weight: 500;
color: #f54a00;
color: #b8f0cc;
}
}
}
@@ -231,11 +245,11 @@ const handleKeyDown = () => {
}
&.active {
background-color: #f97316;
color: white;
background-color: #4cd47c;
color: rgb(255, 255, 255);
&:hover {
background-color: #ea580c;
background-color: #44ff85;
}
}
@@ -324,7 +338,6 @@ const handleKeyDown = () => {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
width: 100%;
height: 0; /* 确保flex子元素能够正确计算高度 */
&::-webkit-scrollbar {

View File

@@ -1,54 +1,76 @@
<script setup lang="ts">
import { ref } from 'vue'
import { ref, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { LocalUserDetailStore } from '@renderer/store/LocalUserDetail'
// 路由实例
const router = useRouter()
// 推荐歌单数据
const recommendPlaylists = ref([
{
id: 1,
title: '热门流行',
description: '最新最热的流行音乐',
cover: 'https://via.placeholder.com/200x200/f97316/ffffff?text=热门流行',
playCount: '1.2万'
},
{
id: 2,
title: '经典老歌',
description: '怀旧经典,永恒旋律',
cover: 'https://via.placeholder.com/200x200/3b82f6/ffffff?text=经典老歌',
playCount: '8.5万'
},
{
id: 3,
title: '轻音乐',
description: '放松心情的轻柔音乐',
cover: 'https://via.placeholder.com/200x200/10b981/ffffff?text=轻音乐',
playCount: '3.7万'
},
{
id: 4,
title: '摇滚精选',
description: '激情澎湃的摇滚乐',
cover: 'https://via.placeholder.com/200x200/ef4444/ffffff?text=摇滚精选',
playCount: '2.1万'
}
])
const recommendPlaylists: any = ref([])
const loading = ref(true)
const error = ref('')
// 热门歌曲数据
const hotSongs = ref([
{ id: 1, title: '夜曲', artist: '周杰伦', album: '十一月的萧邦', duration: '3:37' },
{ id: 2, title: '青花瓷', artist: '周杰伦', album: '我很忙', duration: '3:58' },
{ id: 3, title: '稻香', artist: '周杰伦', album: '魔杰座', duration: '3:43' },
{ id: 4, title: '告白气球', artist: '周杰伦', album: '周杰伦的床边故事', duration: '3:34' },
{ id: 5, title: '七里香', artist: '周杰伦', album: '七里香', duration: '4:05' }
])
const hotSongs:any = ref([])
// 获取热门歌单数据
const fetchHotSonglist = async () => {
const LocalUserDetail = LocalUserDetailStore()
try {
loading.value = true
error.value = ''
// 调用真实 API 获取热门歌单
const result = await window.api.music.requestSdk('getHotSonglist', {
source: LocalUserDetail.userSource.source
})
if (result && result.list) {
recommendPlaylists.value = result.list.map((item: any) => ({
id: item.id,
title: item.name,
description: item.desc || '精选歌单',
cover: item.img || 'https://via.placeholder.com/200x200/f97316/ffffff?text=歌单',
playCount: item.play_count, // 直接使用返回的格式化字符串
author: item.author,
total: item.total,
time: item.time,
source: item.source
}))
}
} catch (err) {
console.error('获取热门歌单失败:', err)
error.value = '获取数据失败,请稍后重试'
// 使用备用数据
recommendPlaylists.value = []
} finally {
loading.value = false
}
}
const playPlaylist = (playlist: any): void => {
console.log('播放歌单:', playlist.title)
// 跳转到歌曲列表页面传递歌单ID和其他必要信息
router.push({
name: 'list',
params: { id: playlist.id },
query: {
title: playlist.title,
source: playlist.source,
author: playlist.author,
cover: playlist.cover,
total: playlist.total
}
})
}
const playSong = (song: any): void => {
console.log('播放歌曲:', song.title)
}
// 组件挂载时获取数据
onMounted(() => {
fetchHotSonglist()
})
</script>
<template>
@@ -61,8 +83,23 @@ const playSong = (song: any): void => {
<!-- 推荐歌单 -->
<div class="section">
<h3 class="section-title">推荐歌单</h3>
<div class="playlist-grid">
<h3 class="section-title">热门歌单Top{{ recommendPlaylists.length }}</h3>
<!-- 加载状态 -->
<div v-if="loading" class="loading-container">
<t-loading size="large" text="正在加载热门歌单..." />
</div>
<!-- 错误状态 -->
<div v-else-if="error" class="error-container">
<t-alert theme="error" :message="error" />
<t-button theme="primary" @click="fetchHotSonglist" style="margin-top: 1rem">
重新加载
</t-button>
</div>
<!-- 歌单列表 -->
<div v-else class="playlist-grid">
<div
v-for="playlist in recommendPlaylists"
:key="playlist.id"
@@ -71,19 +108,18 @@ const playSong = (song: any): void => {
>
<div class="playlist-cover">
<img :src="playlist.cover" :alt="playlist.title" />
<div class="play-overlay">
<t-button shape="circle" theme="primary" size="large">
<i class="iconfont icon-a-tingzhiwukuang"></i>
</t-button>
</div>
</div>
<div class="playlist-info">
<h4 class="playlist-title">{{ playlist.title }}</h4>
<p class="playlist-desc">{{ playlist.description }}</p>
<span class="play-count">
<i class="iconfont icon-a-tingzhiwukuang"></i>
{{ playlist.playCount }}
</span>
<div class="playlist-meta">
<span class="play-count">
<i class="iconfont icon-bofang"></i>
{{ playlist.playCount }}
</span>
<span class="song-count" v-if="playlist.total">{{ playlist.total }}</span>
</div>
<!-- <div class="playlist-author">by {{ playlist.author }}</div> -->
</div>
</div>
</div>
@@ -119,7 +155,7 @@ const playSong = (song: any): void => {
<style lang="scss" scoped>
.find-container {
padding: 2rem;
max-width: 1200px;
width: 100%;
margin: 0 auto;
}
@@ -150,9 +186,21 @@ const playSong = (song: any): void => {
}
}
.loading-container {
display: flex;
justify-content: center;
align-items: center;
padding: 4rem 0;
}
.error-container {
text-align: center;
padding: 2rem;
}
.playlist-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 1.5rem;
}
@@ -177,26 +225,11 @@ const playSong = (song: any): void => {
position: relative;
aspect-ratio: 1;
overflow: hidden;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
.play-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
transition: opacity 0.3s ease;
}
}
.playlist-info {
@@ -222,6 +255,13 @@ const playSong = (song: any): void => {
overflow: hidden;
}
.playlist-meta {
display: flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 0.5rem;
}
.play-count {
font-size: 0.75rem;
color: #9ca3af;
@@ -233,6 +273,17 @@ const playSong = (song: any): void => {
font-size: 0.75rem;
}
}
.song-count {
font-size: 0.75rem;
color: #9ca3af;
}
.playlist-author {
font-size: 0.75rem;
color: #6b7280;
font-style: italic;
}
}
}

View File

@@ -1,407 +1,319 @@
<script setup lang="ts">
import { ref } from 'vue'
import { ref, onMounted, toRaw } from 'vue'
import { useRoute } from 'vue-router'
import { LocalUserDetailStore } from '@renderer/store/LocalUserDetail'
import { downloadSingleSong } from '@renderer/utils/download'
import SongVirtualList from '@renderer/components/Music/SongVirtualList.vue'
interface MusicItem {
singer: string
name: string
albumName: string
albumId: number
source: string
interval: string
songmid: number
img: string
lrc: null | string
types: string[]
_types: Record<string, any>
typeUrl: Record<string, any>
}
// 路由实例
const route = useRoute()
const LocalUserDetail = LocalUserDetailStore()
// 响应式状态
const hoveredSong = ref<number | null>(null)
const songs = ref<MusicItem[]>([])
const loading = ref(true)
const currentSong = ref<MusicItem | null>(null)
const isPlaying = ref(false)
const playlistInfo = ref({
id: '',
title: '',
author: '',
cover: '',
total: 0,
source: ''
})
// 模拟歌曲数据
const mockSongs = ref([
{
id: 1,
index: 1,
title: '别让我担心',
artist: '刘若英',
album: '我等你',
duration: '4:32',
albumArt: '../../assets/images/cover.png',
isPlaying: true,
tags: [
{ label: 'VIP', theme: 'warning' },
{ label: '原唱', theme: 'success' }
]
},
{
id: 2,
index: 2,
title: '后来',
artist: '刘若英',
album: '我等你',
duration: '4:18',
albumArt: '/placeholder.svg',
isPlaying: false,
tags: [
{ label: '原唱', theme: 'success' },
{ label: 'Hot', theme: 'danger' }
]
},
{
id: 3,
index: 3,
title: '为爱痴狂',
artist: '刘若英',
album: '年华',
duration: '3:45',
albumArt: '/placeholder.svg',
isPlaying: false,
tags: [{ label: 'VIP', theme: 'warning' }]
},
{
id: 4,
index: 4,
title: '很爱很爱你',
artist: '刘若英',
album: '年华',
duration: '4:12',
albumArt: '/placeholder.svg',
isPlaying: false,
tags: []
},
{
id: 5,
index: 5,
title: '原来你也在这里',
artist: '刘若英',
album: '我等你',
duration: '4:28',
albumArt: '/placeholder.svg',
isPlaying: false,
tags: [{ label: '原唱', theme: 'success' }]
},
{
id: 6,
index: 5,
title: '原来你也在这里',
artist: '刘若英',
album: '我等你',
duration: '4:28',
albumArt: '/placeholder.svg',
isPlaying: false,
tags: [
{ label: '原唱', theme: 'success' },
{ label: 'Hot', theme: 'danger' }
]
},
{
id: 7,
index: 5,
title: '原来你也在这里',
artist: '刘若英',
album: '我等你',
duration: '4:28',
albumArt: '/placeholder.svg',
isPlaying: false,
tags: [{ label: '原唱', theme: 'success' }]
// 获取歌单歌曲列表
const fetchPlaylistSongs = async () => {
try {
loading.value = true
// 从路由参数中获取歌单信息
playlistInfo.value = {
id: route.params.id as string,
title: (route.query.title as string) || '歌单',
author: (route.query.author as string) || '未知',
cover: (route.query.cover as string) || '',
total: Number(route.query.total) || 0,
source: (route.query.source as string) || (LocalUserDetail.userSource.source as any)
}
// 调用API获取歌单详情和歌曲列表
const result = await window.api.music.requestSdk('getPlaylistDetail', {
source: playlistInfo.value.source,
id: playlistInfo.value.id,
page: 1
}) as any
console.log(result)
if (result && result.list) {
songs.value = result.list
// 获取歌曲封面
setPic(0, playlistInfo.value.source)
// 如果API返回了歌单详细信息更新歌单信息
if (result.info) {
playlistInfo.value = {
...playlistInfo.value,
title: result.info.name || playlistInfo.value.title,
author: result.info.author || playlistInfo.value.author,
cover: result.info.img || playlistInfo.value.cover,
total: result.info.total || playlistInfo.value.total
}
}
}
} catch (error) {
console.error('获取歌单歌曲失败:', error)
} finally {
loading.value = false
}
])
}
// 获取歌曲封面
async function setPic(offset: number, source: string) {
for (let i = offset; i < songs.value.length; i++) {
const tempImg = songs.value[i].img
if (tempImg) continue
try {
const url = await window.api.music.requestSdk('getPic', {
source,
songInfo: toRaw(songs.value[i])
})
if (typeof url !== 'object') {
songs.value[i].img = url
} else {
songs.value[i].img = 'resources/logo.png'
}
} catch (e) {
songs.value[i].img = 'logo.svg'
console.log('获取封面失败 index' + i, e)
}
}
}
// 组件事件处理函数
const handlePlay = (song: MusicItem) => {
currentSong.value = song
isPlaying.value = true
console.log('播放歌曲:', song.name)
if ((window as any).musicEmitter) {
;(window as any).musicEmitter.emit('addToPlaylistAndPlay', toRaw(song))
}
}
const handlePause = () => {
isPlaying.value = false
if ((window as any).musicEmitter) {
;(window as any).musicEmitter.emit('pause')
}
}
const handleDownload = (song: MusicItem) => {
downloadSingleSong(song.songmid as unknown as string, song.name, song.albumName)
}
const handleAddToPlaylist = (song: MusicItem) => {
console.log('添加到播放列表:', song.name)
if ((window as any).musicEmitter) {
;(window as any).musicEmitter.emit('addToPlaylistEnd', toRaw(song))
}
}
// 组件挂载时获取数据
onMounted(() => {
fetchPlaylistSongs()
})
</script>
<template>
<div class="list-container">
<!-- 固定头部区域 -->
<div class="fixed-header">
<!-- 搜索结果标题 -->
<h2 class="search-title"><span class="search-keyword">别让我担心</span> 的搜索结果</h2>
<!-- 表格头部 -->
<div class="table-header">
<div class="header-item" style="justify-content: center">#</div>
<div class="header-item">标题</div>
<div class="header-item">专辑</div>
<div class="header-item">时长</div>
<!-- 歌单信息 -->
<div class="playlist-header">
<div class="playlist-cover">
<img :src="playlistInfo.cover" :alt="playlistInfo.title" />
</div>
<div class="playlist-details">
<h1 class="playlist-title">{{ playlistInfo.title }}</h1>
<p class="playlist-author">by {{ playlistInfo.author }}</p>
<p class="playlist-stats">{{ playlistInfo.total }} 首歌曲</p>
</div>
</div>
</div>
<!-- 可滚动的歌曲列表区域 -->
<div class="scrollable-content">
<div class="song-list">
<div
v-for="song in mockSongs"
:key="song.id"
class="song-item"
:class="{
'song-item--playing': song.isPlaying,
'song-item--hovered': hoveredSong === song.id
}"
@mouseenter="hoveredSong = song.id"
@mouseleave="hoveredSong = null"
>
<!-- Index/Play Icon -->
<div class="song-index">
<i v-if="song.isPlaying" class="iconfont icon-a-tingzhiwukuang playing-icon"></i>
<i
v-else-if="hoveredSong === song.id"
class="iconfont icon-a-tingzhiwukuang play-icon"
></i>
<span v-else class="index-number">{{ song.index }}</span>
</div>
<!-- Title and Artist -->
<div class="song-info">
<img :src="'/src/assets/images/cover.png'" :alt="song.title" class="album-art" />
<div class="song-details">
<div class="title-row">
<span class="song-title" :class="{ 'song-title--playing': song.isPlaying }">
{{ song.title }}
</span>
<div class="tags">
<t-tag
v-for="(tag, index) in song.tags"
:key="index"
:theme="tag.theme"
variant="light-outline"
size="small"
shape="round"
class="song-tab"
>
{{ tag.label }}
</t-tag>
</div>
</div>
<div class="artist-name">{{ song.artist }}</div>
</div>
</div>
<!-- Album -->
<div class="album-name">
<span>{{ song.album }}</span>
</div>
<!-- Duration and Actions -->
<div class="duration-actions">
<span class="duration">{{ song.duration }}</span>
<t-button
v-if="hoveredSong === song.id"
variant="text"
size="small"
class="more-button"
>
<i class="iconfont icon-gengduo"></i>
</t-button>
</div>
<div v-if="loading" class="loading-container">
<div class="loading-content">
<div class="loading-spinner"></div>
<p>加载中...</p>
</div>
</div>
<div v-else class="song-list-wrapper">
<SongVirtualList
:songs="songs"
:current-song="currentSong"
:is-playing="isPlaying"
:show-index="true"
:show-album="true"
:show-duration="true"
@play="handlePlay"
@pause="handlePause"
@download="handleDownload"
@add-to-playlist="handleAddToPlaylist"
/>
</div>
</div>
</div>
</template>
<style lang="scss" scoped>
.list-container {
background: #fafafa;
box-sizing: border-box;
width: 100%;
padding: 20px;
height: 100%;
display: flex;
flex-direction: column;
height: 100vh;
padding: 1.5rem;
padding-top: 0;
overflow: hidden;
.fixed-header {
margin-bottom: 20px;
flex-shrink: 0;
z-index: 10;
.search-title {
font-size: 1em;
font-weight: 500;
color: #9d9a9a;
margin-bottom: 1.2rem;
.search-keyword {
font-size: 1.6rem;
color: #f97316;
font-weight: 600;
line-height: 30px;
}
}
.table-header {
display: grid;
grid-template-columns: 2.5rem 1fr 1fr 5rem;
gap: 1rem;
padding: 0.5rem 1rem;
font-size: 0.875rem;
color: #6b7280;
border-radius: 0.5rem 0.5rem 0 0;
background-color: #efefef;
.header-item {
display: flex;
align-items: center;
}
}
}
.scrollable-content {
background: #fff;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
flex: 1;
overflow-y: auto;
padding-right: 0.25rem;
padding-bottom: 4rem;
/* 自定义滚动条样式 */
&::-webkit-scrollbar {
width: 0.375rem;
}
&::-webkit-scrollbar-track {
background: #f1f5f9;
border-radius: 0.1875rem;
}
&::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 0.1875rem;
transition: background-color 0.2s ease;
&:hover {
background: #94a3b8;
}
}
/* Firefox 滚动条样式 */
scrollbar-width: thin;
scrollbar-color: #cbd5e1 #f1f5f9;
min-height: 0;
display: flex;
flex-direction: column;
}
}
.song-list {
.loading-container {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
.loading-content {
text-align: center;
.loading-spinner {
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #507daf;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 0 auto 16px;
}
p {
font-size: 14px;
color: #666;
margin: 0;
}
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.playlist-header {
display: flex;
align-items: center;
gap: 1.5rem;
padding: 1.5rem;
background: #fff;
border-radius: 0.75rem;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
.playlist-cover {
width: 120px;
height: 120px;
border-radius: 0.5rem;
overflow: hidden;
flex-shrink: 0;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
.playlist-details {
flex: 1;
.playlist-title {
font-size: 1.5rem;
font-weight: 600;
color: #111827;
margin: 0 0 0.5rem 0;
}
.playlist-author {
font-size: 1rem;
color: #6b7280;
margin: 0 0 0.5rem 0;
}
.playlist-stats {
font-size: 0.875rem;
color: #9ca3af;
margin: 0;
}
}
}
.song-list-wrapper {
height: 100%;
display: flex;
flex-direction: column;
gap: 0.5rem;
padding-bottom: 1rem;
.song-item {
display: grid;
grid-template-columns: 2.5rem 1fr 1fr 5rem;
}
/* 响应式设计 */
@media (max-width: 768px) {
.list-container {
padding: 15px;
}
.playlist-header {
flex-direction: column;
text-align: center;
gap: 1rem;
padding: 0.75rem 1rem;
cursor: pointer;
transition: all 0.2s ease;
border-left: 0.1875rem solid transparent;
border-radius: 0.5rem;
background-color: #fff;
&:hover {
background-color: #f9fafb;
}
&--playing {
background-color: #fff7ed;
border-left-color: #f97316;
}
.song-index {
display: flex;
align-items: center;
justify-content: center;
.playing-icon {
color: #f97316;
font-size: 1rem;
}
.play-icon {
color: #6b7280;
font-size: 1rem;
}
.index-number {
font-size: 0.875rem;
color: #9ca3af;
}
}
.song-info {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
.album-art {
width: 3rem;
height: 3rem;
border-radius: 0.5rem;
object-fit: cover;
flex-shrink: 0;
box-shadow: 0 1px 10px rgba(0, 0, 0, 0.3);
}
.song-details {
min-width: 0;
flex: 1;
.title-row {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 0.25rem;
.song-title {
font-weight: 500;
color: #111827;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&--playing {
color: #ea580c;
}
}
.tags {
display: flex;
gap: 0.25rem;
flex-shrink: 0;
:deep(.t-tag) {
font-size: 0.7rem !important;
height: auto;
margin-right: 0.25rem;
padding: 0rem 0.5rem;
}
}
}
.artist-name {
font-size: 0.875rem;
color: #6b7280;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
.album-name {
display: flex;
align-items: center;
span {
font-size: 0.875rem;
color: #4b5563;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.duration-actions {
display: flex;
align-items: center;
justify-content: space-between;
.duration {
font-size: 0.875rem;
color: #9ca3af;
}
.more-button {
opacity: 0;
transition: opacity 0.2s ease;
.iconfont {
font-size: 1rem;
}
}
}
&:hover .more-button {
opacity: 1;
.playlist-cover {
width: 100px;
height: 100px;
}
}
}

View File

@@ -1,12 +1,13 @@
<script setup lang="ts">
import { ref, onMounted, computed, nextTick, onUnmounted, watch, toRaw } from 'vue'
import { PlayIcon, HeartIcon, DownloadIcon, MoreIcon } from 'tdesign-icons-vue-next'
import { ref, onMounted, computed, watch, toRaw } from 'vue'
import { searchValue } from '@renderer/store/search'
import { downloadSingleSong } from '@renderer/utils/download'
import { LocalUserDetailStore } from '@renderer/store/LocalUserDetail'
import { MessagePlugin } from 'tdesign-vue-next'
import SongVirtualList from '@renderer/components/Music/SongVirtualList.vue'
interface MusicItem {
id: number
singer: string
name: string
albumName: string
@@ -17,115 +18,30 @@ interface MusicItem {
img: string
lrc: null | string
types: string[]
_types: Record<string, any>;
_types: Record<string, any>
typeUrl: Record<string, any>
}
const keyword = ref('')
const searchResults = ref<MusicItem[]>([])
const hoveredSong = ref<any>(null)
const loading = ref(false)
const hasMore = ref(true)
const currentPage = ref(1)
const pageSize = 50
const totalItems = ref(0)
// 虚拟滚动配置
const virtualScrollConfig = ref({
containerHeight: 0, // 动态计算容器高度
itemHeight: 64, // 每个项目的高度
buffer: 5 // 缓冲区项目数量
})
// 虚拟滚动状态
const scrollContainer = ref<HTMLElement>()
const scrollTop = ref(0)
const visibleStartIndex = ref(0)
const visibleEndIndex = ref(0)
const visibleItems = ref<MusicItem[]>([])
const mainContent = document.querySelector('.mainContent')
// 计算容器高度
const calculateContainerHeight = () => {
if (typeof window !== 'undefined') {
console.log(mainContent?.clientHeight)
const listHeaderHeight = 40 // 表头高度
const pageHeaderHeight = 52 // 表头高度
const padding = 60 // 容器内边距
const availableHeight =
(mainContent?.clientHeight || document.body.offsetHeight) -
pageHeaderHeight -
listHeaderHeight -
padding
virtualScrollConfig.value.containerHeight = Math.max(400, availableHeight)
}
}
// 计算虚拟滚动的可见项目
const updateVisibleItems = () => {
const { containerHeight, itemHeight, buffer } = virtualScrollConfig.value
const totalItems = searchResults.value.length
if (totalItems === 0) {
visibleItems.value = []
return
}
const visibleCount = Math.ceil(containerHeight / itemHeight)
const startIndex = Math.floor(scrollTop.value / itemHeight)
const endIndex = Math.min(startIndex + visibleCount + buffer * 2, totalItems)
visibleStartIndex.value = Math.max(0, startIndex - buffer)
visibleEndIndex.value = endIndex
visibleItems.value = searchResults.value.slice(visibleStartIndex.value, visibleEndIndex.value)
}
// 处理滚动事件
const handleScroll = (event: Event) => {
const target = event.target as HTMLElement
scrollTop.value = target.scrollTop
updateVisibleItems()
// 检查是否需要加载更多
const { scrollTop: currentScrollTop, scrollHeight, clientHeight } = target
if (scrollHeight - currentScrollTop - clientHeight < 100) {
onScrollToBottom()
}
}
// 计算总高度
const totalHeight = computed(
() => searchResults.value.length * virtualScrollConfig.value.itemHeight
)
// 计算偏移量
const offsetY = computed(() => visibleStartIndex.value * virtualScrollConfig.value.itemHeight)
const currentSong = ref<MusicItem | null>(null)
const isPlaying = ref(false)
const search = searchValue()
// 从路由参数中获取搜索关键词和初始结果
onMounted(async () => {
// 计算容器高度
watch(
search,
async () => {
keyword.value = search.getValue
await performSearch(true)
// 确保初始渲染显示内容
await nextTick()
updateVisibleItems()
},
{ immediate: true }
)
calculateContainerHeight()
// 监听窗口大小变化
window.addEventListener('resize', calculateContainerHeight)
})
onUnmounted(() => {
if (scrollContainer.value) {
scrollContainer.value.removeEventListener('scroll', handleScroll)
}
window.removeEventListener('resize', calculateContainerHeight)
})
// 执行搜索
@@ -154,74 +70,87 @@ const performSearch = async (reset = false) => {
page: currentPage.value,
limit: pageSize
})
console.log(result)
totalItems.value = result.total || 0
const newSongs = (result.list || []).map((song: any, index: number) => ({
...song,
id: song.songmid || `${currentPage.value}-${index}` // 确保每首歌都有唯一ID
}))
if (reset) {
searchResults.value = result.list || []
searchResults.value = newSongs
} else {
searchResults.value = [...searchResults.value, ...(result.list || [])]
searchResults.value = [...searchResults.value, ...newSongs]
}
setPic((currentPage.value-1) * pageSize, source)
setPic((currentPage.value - 1) * pageSize, source)
currentPage.value += 1
hasMore.value = (result.list?.length || 0) >= pageSize
// 更新虚拟滚动
await nextTick()
updateVisibleItems()
hasMore.value = newSongs.length >= pageSize
} catch (error) {
console.error('搜索失败:', error)
} finally {
loading.value = false
}
}
async function setPic(offset:number, source:string) {
console.log('get',offset)
for(let i = offset;i<searchResults.value.length;i++){
async function setPic(offset: number, source: string) {
for (let i = offset; i < searchResults.value.length; i++) {
const tempImg = searchResults.value[i].img
if(tempImg) continue
try{
const url = await window.api.music.requestSdk('getPic',{source,songInfo:toRaw(searchResults.value[i])})
if(typeof url !== 'object'){
if (tempImg) continue
try {
const url = await window.api.music.requestSdk('getPic', {
source,
songInfo: toRaw(searchResults.value[i])
})
if (typeof url !== 'object') {
searchResults.value[i].img = url
}else{
console.log(url)
} else {
searchResults.value[i].img = 'resources/logo.png'
}
}catch(e){
searchResults.value[i].img = 'logo.svg'
console.log('获取失败 index'+i,e)
} catch (e) {
searchResults.value[i].img = 'logo.svg'
console.log('获取失败 index' + i, e)
}
}
}
// 虚拟滚动触底加载更多
const onScrollToBottom = async () => {
if (!loading.value && hasMore.value) {
await performSearch(false)
}
}
// 计算是否有搜索结果
const hasResults = computed(() => searchResults.value && searchResults.value.length > 0)
// 播放歌曲 - 点击背景时添加到播放列表第一项并播放
const playSong = (song: MusicItem): void => {
// 组件事件处理函数
const handlePlay = (song: MusicItem) => {
currentSong.value = song
isPlaying.value = true
console.log('播放歌曲:', song.name)
// 触发添加到播放列表并播放的事件
if ((window as any).musicEmitter) {
; (window as any).musicEmitter.emit('addToPlaylistAndPlay', toRaw(song))
;(window as any).musicEmitter.emit('addToPlaylistAndPlay', toRaw(song))
}
}
// 添加到播放列表末尾
const addToPlaylist = (song: any): void => {
console.log('添加到播放列表:', song.name)
// 触发添加到播放列表末尾的事件
const handlePause = () => {
isPlaying.value = false
if ((window as any).musicEmitter) {
; (window as any).musicEmitter.emit('addToPlaylistEnd', toRaw(song))
;(window as any).musicEmitter.emit('pause')
}
}
const handleDownload = (song: MusicItem) => {
downloadSingleSong(song.songmid as unknown as string, song.name, song.albumName)
}
const handleAddToPlaylist = (song: MusicItem) => {
console.log('添加到播放列表:', song.name)
if ((window as any).musicEmitter) {
;(window as any).musicEmitter.emit('addToPlaylistEnd', toRaw(song))
}
}
const handleScroll = (event: Event) => {
const target = event.target as HTMLElement
const { scrollTop, scrollHeight, clientHeight } = target
// 检查是否需要加载更多
if (scrollHeight - scrollTop - clientHeight < 100 && !loading.value && hasMore.value) {
performSearch(false)
}
}
</script>
@@ -231,94 +160,27 @@ const addToPlaylist = (song: any): void => {
<!-- 搜索结果标题 -->
<div class="search-header">
<h2 class="search-title">
搜索"<span class="keyword">{{ keyword }}</span>"
搜索"<span class="keyword">{{ keyword }}</span
>"
</h2>
<div v-if="hasResults" class="result-info">找到 {{ totalItems }} 首单曲</div>
</div>
<!-- 歌曲列表 -->
<div v-if="hasResults" class="song-list-wrapper">
<!-- 表头 -->
<div class="list-header">
<div class="col-index"></div>
<div class="col-title">标题</div>
<div class="col-album">专辑</div>
<div class="col-like">喜欢</div>
<div class="col-duration">时长</div>
</div>
<!-- 虚拟滚动列表 -->
<div ref="scrollContainer" class="virtual-scroll-container"
:style="{ height: virtualScrollConfig.containerHeight + 'px' }" @scroll="handleScroll">
<div class="virtual-scroll-spacer" :style="{ height: totalHeight + 'px' }">
<div class="virtual-scroll-content" :style="{ transform: `translateY(${offsetY}px)` }">
<div v-for="(song, index) in visibleItems" :key="song.songmid" class="song-item"
:class="{ 'is-playing': false, 'is-hovered': hoveredSong === song.songmid }"
@mouseenter="hoveredSong = song.songmid" @mouseleave="hoveredSong = null" @dblclick="playSong(song)">
<!-- 序号/播放按钮 -->
<div class="col-index">
<span v-if="hoveredSong !== song.songmid" class="track-number">
{{ String(visibleStartIndex + index + 1).padStart(2, '0') }}
</span>
<t-button v-else variant="text" size="small" class="play-btn" title="添加到播放列表"
@click.stop="addToPlaylist(song)">
<play-icon size="30" />
</t-button>
</div>
<!-- 歌曲信息 -->
<div class="col-title">
<div v-if="song.img" class="song-cover">
<img :src="song.img
" loading="lazy" alt="封面" />
</div>
<div class="song-info">
<div class="song-name" :title="song.name">{{ song.name }}</div>
<div class="artist-name" :title="song.singer ? song.singer : ''">
<template v-if="song.singer">
<span class="artist-link">
{{ song.singer }}
</span>
</template>
</div>
</div>
</div>
<!-- 专辑 -->
<div class="col-album">
<span class="album-name" :title="song.albumName">
{{ song.albumName || '-' }}
</span>
</div>
<!-- 喜欢按钮 -->
<div class="col-like">
<t-button variant="text" size="small" class="action-btn like-btn" @click.stop>
<heart-icon size="16" />
</t-button>
</div>
<!-- 时长和更多操作 -->
<div class="col-duration">
<div class="duration-wrapper">
<span v-if="hoveredSong !== song.songmid" class="duration">{{
song.interval
}}</span>
<div v-else class="action-buttons">
<t-button variant="text" size="small" class="action-btn" title="下载"
@click.stop="downloadSingleSong(song.songmid as unknown as string, song.name, song.albumName)">
<download-icon size="16" />
</t-button>
<t-button variant="text" size="small" class="action-btn" title="更多" @click.stop>
<more-icon size="16" />
</t-button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<SongVirtualList
:songs="searchResults"
:current-song="currentSong"
:is-playing="isPlaying"
:show-index="true"
:show-album="true"
:show-duration="true"
@play="handlePlay"
@pause="handlePause"
@download="handleDownload"
@add-to-playlist="handleAddToPlaylist"
@scroll="handleScroll"
/>
</div>
<!-- 空状态 -->
@@ -332,7 +194,10 @@ const addToPlaylist = (song: any): void => {
<!-- 加载状态 -->
<div v-else class="loading-state">
<t-loading size="large" text="搜索中..." />
<div class="loading-content">
<div class="loading-spinner"></div>
<p>搜索中...</p>
</div>
</div>
</div>
</template>
@@ -344,6 +209,8 @@ const addToPlaylist = (song: any): void => {
width: 100%;
padding: 20px;
height: 100%;
display: flex;
flex-direction: column;
}
.search-header {
@@ -371,237 +238,10 @@ const addToPlaylist = (song: any): void => {
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.list-header {
display: grid;
grid-template-columns: 60px 1fr 200px 60px 80px;
padding: 8px 20px;
background: #fafafa;
border-bottom: 1px solid #e9e9e9;
font-size: 12px;
color: #999;
.col-index {
text-align: center;
}
.col-title {
padding-left: 10px;
}
.col-like {
text-align: center;
}
.col-duration {
text-align: center;
}
}
.virtual-scroll-container {
background: #fff;
overflow-y: auto;
position: relative;
.virtual-scroll-spacer {
position: relative;
}
.virtual-scroll-content {
position: absolute;
top: 0;
left: 0;
right: 0;
}
.song-item {
display: grid;
grid-template-columns: 60px 1fr 200px 60px 80px;
padding: 8px 20px;
border-bottom: 1px solid #f5f5f5;
cursor: pointer;
transition: background-color 0.2s ease;
height: 64px;
/* 固定高度,与虚拟滚动配置一致 */
&:hover,
&.is-hovered {
background: #f5f5f5;
}
&.is-playing {
background: #f0f7ff;
color: #507daf;
}
.col-index {
display: flex;
align-items: center;
justify-content: center;
.track-number {
font-size: 14px;
color: #999;
font-variant-numeric: tabular-nums;
}
.play-btn {
color: #507daf;
&:hover {
color: #3a5d8f;
}
}
}
.col-title {
display: flex;
align-items: center;
padding-left: 10px;
min-width: 0;
overflow: hidden;
.song-cover {
width: 40px;
height: 40px;
margin-right: 10px;
border-radius: 4px;
overflow: hidden;
flex-shrink: 0;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
.song-info {
min-width: 0;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
overflow: hidden;
.song-name {
font-size: 14px;
color: #333;
margin-bottom: 4px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.2;
&:hover {
color: #507daf;
}
}
.artist-name {
font-size: 12px;
color: #999;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.2;
.artist-link {
&:hover {
color: #507daf;
cursor: pointer;
}
}
}
}
}
.col-album {
display: flex;
align-items: center;
padding: 0 10px;
overflow: hidden;
.album-name {
font-size: 12px;
color: #999;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
&:hover {
color: #507daf;
cursor: pointer;
}
}
}
.col-like {
display: flex;
align-items: center;
justify-content: center;
.like-btn {
color: #ccc;
&:hover {
color: #507daf;
background: rgba(80, 125, 175, 0.1);
}
}
}
.col-duration {
display: flex;
align-items: center;
justify-content: center;
.duration-wrapper {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
.duration {
font-size: 12px;
color: #999;
font-variant-numeric: tabular-nums;
min-width: 35px;
text-align: center;
}
.action-buttons {
display: flex;
gap: 4px;
justify-content: center;
.action-btn {
color: #ccc;
padding: 0 4px;
&:hover {
color: #507daf;
}
}
}
}
}
}
}
.load-more {
padding: 20px;
text-align: center;
border-top: 1px solid #f5f5f5;
background: #fafafa;
.load-more-tip,
.load-complete {
font-size: 12px;
color: #999;
}
flex: 1;
min-height: 0;
display: flex;
flex-direction: column;
}
.empty-state,
@@ -632,6 +272,35 @@ const addToPlaylist = (song: any): void => {
margin: 0;
}
}
.loading-content {
text-align: center;
.loading-spinner {
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #507daf;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 0 auto 16px;
}
p {
font-size: 14px;
color: #666;
margin: 0;
}
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
/* 响应式设计 */
@@ -639,21 +308,5 @@ const addToPlaylist = (song: any): void => {
.search-container {
padding: 15px;
}
.list-header,
.song-item {
grid-template-columns: 50px 1fr 50px 60px;
.col-album {
display: none;
}
.col-title {
.song-cover {
width: 35px;
height: 35px;
}
}
}
}
</style>

View File

@@ -4512,6 +4512,11 @@ hosted-git-info@^4.1.0:
dependencies:
lru-cache "^6.0.0"
hpagent@^1.2.0:
version "1.2.0"
resolved "https://registry.npmmirror.com/hpagent/-/hpagent-1.2.0.tgz#0ae417895430eb3770c03443456b8d90ca464903"
integrity sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==
http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
version "4.2.0"
resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz"
@@ -5303,6 +5308,11 @@ lodash@^4.17.15:
resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
log-symbols@^4.1.0:
version "4.1.0"
resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz"