From 618a1e1006a5a8874a02ad9d7514780627d0881a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E5=88=80=E9=B1=BC?= <9903082+qdyovo@user.noreply.gitee.com> Date: Wed, 16 Oct 2024 08:59:27 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=90=9E=20fix=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=9C=A8=E6=96=B0=E7=89=88API=E4=B8=ADCK=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E9=94=99=E8=AF=AF=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=9C=80=E9=AB=98=E9=9F=B3=E8=B4=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tools.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/tools.js b/apps/tools.js index 2392572..b34a57b 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -1508,9 +1508,10 @@ async neteaseStatus(e, reck) { const match = res.data.cookie.match(regex); if (match) { try { - await config.updateField("tools", "neteaseCookie", match[0]); + let ck = match[0] + '; os=pc' + await config.updateField("tools", "neteaseCookie", ck); // logger.info('ck------', match[0]); - this.neteaseStatus(e, match[0]) + this.neteaseStatus(e, ck) } catch (error) { logger.error('更新ck时出错:', error); e.reply('更新ck时出错,请稍后重试'); From abbaf2bdc9d239bcbe1fc5ea683e4cc1024cfc49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E5=88=80=E9=B1=BC?= <9903082+qdyovo@user.noreply.gitee.com> Date: Wed, 16 Oct 2024 10:58:52 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=8E=88pref=EF=BC=9A=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E6=9D=9C=E6=AF=94=E9=9F=B3=E8=B4=A8=E6=97=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8F=90=E7=A4=BA=E5=B9=B6=E4=B8=8D=E5=8F=91?= =?UTF-8?q?=E9=80=81=E7=BE=A4=E8=AF=AD=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tools.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/tools.js b/apps/tools.js index b34a57b..2cb9db2 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -1681,7 +1681,11 @@ async neteaseStatus(e, reck) { url = await this.musicTempApi(e, title, "网易云音乐"); } else { // 拥有ck,并且有效,直接进行解析 - e.reply([segment.image(coverUrl), `${this.identifyPrefix}识别:网易云音乐,${title}\n当前下载音质: ${AudioLevel}\n预估大小: ${AudioSize}MB`]); + let audioInfo = AudioLevel; + if (AudioLevel == '杜比全景声') { + audioInfo += '\n(杜比下载文件为MP4,编码格式为AC-4,需要设备支持才可播放)'; + } + e.reply([segment.image(coverUrl), `${this.identifyPrefix}识别:网易云音乐,${title}\n当前下载音质: ${audioInfo}\n预估大小: ${AudioSize}MB`]); } // 动态判断后缀名 const extensionPattern = /\.([a-zA-Z0-9]+)$/; @@ -1689,7 +1693,9 @@ async neteaseStatus(e, reck) { // 下载音乐 downloadAudio(url, this.getCurDownloadPath(e), title, 'follow', musicExt).then(async path => { // 发送语音 - await e.reply(segment.record(path)); + if (!musicExt == 'mp4') { + await e.reply(segment.record(path)); + } // 上传群文件 await this.uploadGroupFile(e, path); // 删除文件 From 59d2e272c5ed873bb87e6e770e8c491e55783194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E5=88=80=E9=B1=BC?= <9903082+qdyovo@user.noreply.gitee.com> Date: Wed, 16 Oct 2024 11:01:49 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=8E=88pref=EF=BC=9A=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=BE=8E=E5=8C=96=E6=94=AF=E6=8C=81=E5=9C=A8=E6=B2=A1=E6=9C=89?= =?UTF-8?q?vip=E6=83=85=E5=86=B5=E4=B8=8B=E6=AD=A3=E5=B8=B8=E8=BE=93?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tools.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/tools.js b/apps/tools.js index 2cb9db2..4af5e21 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -1440,7 +1440,16 @@ async neteaseStatus(e, reck) { // VIP 有效,不执行后续逻辑 } else { // 如果都已过期,发送 VIP 已过期信息 - e.reply([segment.image(`${userInfo.avatarUrl}?param=170y170`), `网易云已登录:\n${userInfo.nickname}\n会员等级:\nVIP已过期\n最高解析音质:\nstandard(标准)`]); + const neteaseData = await new NeteaseModel(e).getData({ + avatarUrl: `${userInfo.avatarUrl}?param=170y170`, + nickname: userInfo.nickname, + vipLevel: `${vipInfo.redplus.vipCode != 0 ? `SVIP${vipInfo.associator.vipLevel}(已过期)\n` : vipInfo.associator.vipCode != 0 ? `VIP${vipInfo.associator.vipLevel}(已过期)\n` : '未开通'}`, + musicQuality: 'standard(标准)', + expireDate: `未开通` + }); + // e.reply([segment.image(`${avatarUrl}?param=170y170`), `网易云已登录:\n${nickname}\n会员等级:\n${vipLevel}\n会员到期时间:\n${expireDate.toLocaleString()}`]); + let img = await puppeteer.screenshot("netease", neteaseData); + e.reply(img, true); } }) // e.reply([segment.image(userInfo.avatarUrl), `网易云已登录:${userInfo.nickname}\n会员等级:\n`,segment.image(vipInfo.iconUrl)]); From bdd382a3d956b736c5c4baba5aed70ac3c6e06b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E5=88=80=E9=B1=BC?= <9903082+qdyovo@user.noreply.gitee.com> Date: Wed, 16 Oct 2024 11:14:55 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=94=A7=20refactor=EF=BC=9A=E4=BB=85?= =?UTF-8?q?=E5=9C=A8=E5=BC=80=E5=90=AF=E8=87=AA=E5=BB=BA=E8=A7=A3=E6=9E=90?= =?UTF-8?q?API=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E5=8F=AF=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E9=AB=98=E9=9F=B3=E8=B4=A8=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tools.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/tools.js b/apps/tools.js index 4af5e21..c5562e5 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -1685,8 +1685,8 @@ async neteaseStatus(e, reck) { const song = res.data.songs[0]; return song?.al?.picUrl }); - // 一般这个情况是VIP歌曲 (如果没有url或者是国内,没有ck的走临时接口) - if (!isCkExpired || url == null) { + // 一般这个情况是VIP歌曲 (如果没有url或者是国内,公用接口暂时不可用,必须自建并且ck可用状态才能进行高质量解析) + if (!isCkExpired || !this.useLocalNeteaseAPI || url == null) { url = await this.musicTempApi(e, title, "网易云音乐"); } else { // 拥有ck,并且有效,直接进行解析 From dd46897eb2b122a7ad0e7205d1be595b04b59cce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E5=88=80=E9=B1=BC?= <9903082+qdyovo@user.noreply.gitee.com> Date: Wed, 16 Oct 2024 11:20:00 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=8E=88pref=EF=BC=9A=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=94=85=E5=B7=B4=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- constants/constant.js | 2 +- guoba.support.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/constants/constant.js b/constants/constant.js index da62f8f..911768f 100644 --- a/constants/constant.js +++ b/constants/constant.js @@ -202,7 +202,7 @@ export const NETEASECLOUD_QUALITY_LIST = Object.freeze([ { label: 'Hi-Res', value: 'hires' }, { label: '高清环绕声', value: 'jyeffect' }, { label: '沉浸环绕声', value: 'sky' }, - { label: '杜比全景声', value: 'dolby' }, + { label: '杜比全景声(不推荐)', value: 'dolby' }, { label: '超清母带', value: 'jymaster' }, ]); /** diff --git a/guoba.support.js b/guoba.support.js index 774a632..e00e4f6 100644 --- a/guoba.support.js +++ b/guoba.support.js @@ -242,7 +242,7 @@ export function supportGuoba() { field: "tools.neteaseCloudAPIServer", label: "自建网易云API地址", bottomHelpMessage: - "填入自建API地址,例:http://xxxxxxxx", + "填入自建API地址,例:http://localhost:3000", component: "Input", required: false, componentProps: { @@ -264,7 +264,7 @@ export function supportGuoba() { field: "tools.neteaseCloudAudioQuality", label: "网易云解析最高音质", bottomHelpMessage: - "网易云解析最高音质(需vip账号ck!!! 默认极高,更高请根据登陆的账号和服务器承载能力进行选择)", + "网易云解析最高音质(目前仅针对自建最新API服务器生效!!需vip账号ck!!默认极高,杜比全景声由于编码特殊需要设备支持,更高请根据登陆的账号和服务器承载能力进行选择)", component: "Select", componentProps: { options: NETEASECLOUD_QUALITY_LIST,