mirror of
https://github.com/timeshiftsauce/CeruMusic.git
synced 2025-11-24 19:12:53 +08:00
add: 添加了首页热门歌单&支持多平台歌词
This commit is contained in:
28
.github/workflows/main.yml
vendored
28
.github/workflows/main.yml
vendored
@@ -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
|
||||
|
||||
@@ -2,4 +2,4 @@ singleQuote: true
|
||||
semi: false
|
||||
printWidth: 100
|
||||
trailingComma: none
|
||||
endOfLine: "auto"
|
||||
endOfLine: 'auto'
|
||||
|
||||
@@ -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']
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}`)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
ipcMain.handle('service-music-sdk-request', request)
|
||||
|
||||
@@ -1,27 +1,35 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
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
|
||||
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
|
||||
})
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
export interface sdkArg {
|
||||
source: string
|
||||
[key:string]: any
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
export interface SearchSongArg {
|
||||
keyword: string
|
||||
page: number
|
||||
limit: number
|
||||
}
|
||||
// 可以添加到 src/main/services/music/service-base.ts 文件中
|
||||
}
|
||||
|
||||
// 单首歌曲的类型定义
|
||||
export interface MusicItem {
|
||||
@@ -48,4 +47,45 @@ 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
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ const pluginService = {
|
||||
}
|
||||
},
|
||||
|
||||
getPluginById(pluginId: string): CeruMusicPluginHost | null{
|
||||
getPluginById(pluginId: string): CeruMusicPluginHost | null {
|
||||
if (!Object.hasOwn(loadedPlugins, pluginId)) {
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ class Logger {
|
||||
error(...args: any[]): void {
|
||||
this.write(`error ${parseArgs(args)}\n`)
|
||||
}
|
||||
|
||||
|
||||
group(...args: any[]): void {
|
||||
args.unshift('groupStart---------')
|
||||
this.write(`start ${parseArgs(args)}\n`)
|
||||
@@ -88,20 +88,22 @@ class Logger {
|
||||
groupEnd(...args: any[]): void {
|
||||
this.write(`end ${parseArgs(args)}\n`)
|
||||
}
|
||||
|
||||
|
||||
private write(msg: string): void {
|
||||
writeLog(this.logFilePath, msg, WriteMode.APPEND).then()
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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}`))
|
||||
|
||||
@@ -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'))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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('')
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
11
src/preload/index.d.ts
vendored
11
src/preload/index.d.ts
vendored
@@ -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: {
|
||||
|
||||
@@ -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') =>
|
||||
|
||||
5
src/renderer/components.d.ts
vendored
5
src/renderer/components.d.ts
vendored
@@ -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']
|
||||
}
|
||||
}
|
||||
|
||||
632
src/renderer/src/components/Music/SongVirtualList.vue
Normal file
632
src/renderer/src/components/Music/SongVirtualList.vue
Normal 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>
|
||||
@@ -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%;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -187,11 +187,14 @@ const updatePlaylistStats = () => {
|
||||
stats.totalDuration += duration / 1000
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 处理歌手信息
|
||||
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))
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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')
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
10
yarn.lock
10
yarn.lock
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user