diff --git a/apps/tools.js b/apps/tools.js index 9fe3b5c..7088b9a 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -250,6 +250,8 @@ export class tools extends plugin { this.biliCDN = this.toolsConfig.biliCDN; // 加载哔哩哔哩是否使用Aria2 this.biliDownloadMethod = this.toolsConfig.biliDownloadMethod; + // 加载哔哩哔哩最高分辨率 + this.biliResolution = this.toolsConfig.biliResolution; // 加载抖音Cookie this.douyinCookie = this.toolsConfig.douyinCookie; // 加载抖音是否压缩 @@ -735,6 +737,7 @@ export class tools extends plugin { biliSessData: this.biliSessData, biliUseAria2: this.biliDownloadMethod === 1, biliCDN: BILI_CDN_SELECT_LIST.find(item => item.value === this.biliCDN)?.sign, + biliResolution: this.biliResolution, }); // 发送视频 return this.sendVideoToUpload(e, `${ tempPath }.mp4`); diff --git a/config/tools.yaml b/config/tools.yaml index a61cb2e..c5d51cd 100644 --- a/config/tools.yaml +++ b/config/tools.yaml @@ -17,6 +17,7 @@ biliDisplaySummary: false # 是否显示哔哩哔哩的总结 biliUseBBDown: false # 是否使用BBDown,默认不开启,开启后使用强劲的BBDown下载最高画质 biliCDN: 0 # 哔哩哔哩 CDN,默认为0表示不使用 biliDownloadMethod: 0 # 哔哩哔哩的下载方式:0默认使用原生稳定的下载方式,如果你在乎内存可以使用轻量的wget和axel下载方式,如果在乎性能可以使用Aria2下载 +biliResolution: 1 # 哔哩哔哩的下载画质,0为原画,1为清晰画,2为流畅画(默认为0) douyinCookie: '' # douyin's cookie, 格式:odin_tt=xxx;passport_fe_beating_status=xxx;sid_guard=xxx;uid_tt=xxx;uid_tt_ss=xxx;sid_tt=xxx;sessionid=xxx;sessionid_ss=xxx;sid_ucp_v1=xxx;ssid_ucp_v1=xxx;passport_assist_user=xxx;ttwid=xxx; douyinCompression: true # true-压缩,false-不压缩;是否使用压缩视频格式的抖音(默认使用),使用后加速视频发送 diff --git a/config/version.yaml b/config/version.yaml index 7baf2bc..1311791 100644 --- a/config/version.yaml +++ b/config/version.yaml @@ -1,11 +1,11 @@ - { - version: 1.8.1, + version: 1.8.2, data: [ + 新增哔哩哔哩下载分辨率设置功能, 新增自定义识别功能, 修正油管分辨率降低到720P功能, 新增小飞机解析 Beta功能, - 新增BBDown更换CDN功能, 支持锅巴插件,方便查看和修改配置, 输入#R帮助获取插件帮助, 输入#R更新更新插件, diff --git a/constants/constant.js b/constants/constant.js index c4a9e51..91bb2e7 100644 --- a/constants/constant.js +++ b/constants/constant.js @@ -177,6 +177,16 @@ export const BILI_DOWNLOAD_METHOD = Object.freeze([ { label: '轻量(axel/wget)', value: 2 } ]); +export const BILI_RESOLUTION_LIST = Object.freeze([ + { label: '4K 超清', value: 0 }, + { label: '1080P 60帧', value: 1 }, + { label: '1080P 高码率', value: 2 }, + { label: '1080P 高清', value: 3 }, + { label: '720P 高清', value: 4 }, + { label: '480P 清晰', value: 5 }, + { label: '360P 流畅', value: 6 }, +]); + /** * 消息撤回时间 * @type {number} diff --git a/guoba.support.js b/guoba.support.js index 3e41a4a..6918e70 100644 --- a/guoba.support.js +++ b/guoba.support.js @@ -1,6 +1,6 @@ import _ from "lodash"; import path from "path"; -import { BILI_CDN_SELECT_LIST, BILI_DOWNLOAD_METHOD } from "./constants/constant.js"; +import { BILI_CDN_SELECT_LIST, BILI_DOWNLOAD_METHOD, BILI_RESOLUTION_LIST } from "./constants/constant.js"; import model from "./model/config.js"; const pluginName = `rconsole-plugin`; @@ -191,6 +191,16 @@ export function supportGuoba() { options: BILI_DOWNLOAD_METHOD, } }, + { + field: "tools.biliResolution", + label: "bili最高分辨率", + bottomHelpMessage: + "哔哩哔哩的最高分辨率(目前仅适用于开启BBDown后),默认为1080p,可以自行根据服务器进行调整", + component: "Select", + componentProps: { + options: BILI_RESOLUTION_LIST, + } + }, { field: "tools.douyinCookie", label: "抖音的Cookie", diff --git a/utils/bbdown-util.js b/utils/bbdown-util.js index 32ec3a9..e8b3526 100644 --- a/utils/bbdown-util.js +++ b/utils/bbdown-util.js @@ -1,4 +1,5 @@ import { exec } from 'child_process'; +import { getResolutionLabels } from "./bilibili.js"; /** * 使用BBDown下载 @@ -7,7 +8,7 @@ import { exec } from 'child_process'; * @param BBDownOptions BBDown选项(目前仅支持session登录、使用Aria2下载、CDN) */ export function startBBDown(videoUrl, downloadDir, BBDownOptions) { - const { biliSessData, biliUseAria2, biliCDN } = BBDownOptions; + const { biliSessData, biliUseAria2, biliCDN, biliResolution } = BBDownOptions; return new Promise((resolve, reject) => { // logger.info(videoUrl); @@ -28,8 +29,10 @@ export function startBBDown(videoUrl, downloadDir, BBDownOptions) { if (!(videoUrl.includes("play\/ep") || videoUrl.includes("play\/ss"))) { pParam = pageParam ? '-p ' + pageParam + ' -M \"temp\"' : '-p 1' + ' -M \"temp\"'; } + // 构造 -q 参数 (画质优先级,用逗号分隔 例: "8K 超高清, 1080P 高码率, HDR 真彩, 杜比视界") + const qParam = `-q \"${getResolutionLabels(biliResolution)}\"`; // 说明:-F 自定义名称,-c 自定义Cookie, --work-dir 设置下载目录,-M 多p下载的时候命名 - const command = `BBDown ${videoUrl} -e \"hevc,av1,avc\" --work-dir ${downloadDir} ${biliSessData ? '-c SESSDATA=' + biliSessData : ''} ${pParam} -F temp --skip-subtitle --skip-cover ${biliUseAria2 ? '--use-aria2c' : ''} ${biliCDN ? '--upos-host ' + biliCDN : ''}`; + const command = `BBDown ${videoUrl} -e \"hevc,av1,avc\" ${qParam} --work-dir ${downloadDir} ${biliSessData ? '-c SESSDATA=' + biliSessData : ''} ${pParam} -F temp --skip-subtitle --skip-cover ${biliUseAria2 ? '--use-aria2c' : ''} ${biliCDN ? '--upos-host ' + biliCDN : ''}`; logger.info(command); // logger.info(command); // 直接调用BBDown,因为它已经在系统路径中 diff --git a/utils/bilibili.js b/utils/bilibili.js index 20881ad..4c6da22 100644 --- a/utils/bilibili.js +++ b/utils/bilibili.js @@ -5,6 +5,7 @@ import fs from "node:fs"; import path from "path"; import qrcode from "qrcode" import util from "util"; +import { BILI_RESOLUTION_LIST } from "../constants/constant.js"; import { BILI_BVID_TO_CID, BILI_DYNAMIC, @@ -543,3 +544,16 @@ function replaceP2PUrl(url) { return url; } } + +/** + * 拼接分辨率,例如:"720P 高清, 480P 清晰, 360P 流畅" + * @param selectedValue + * @returns {*} + */ +export function getResolutionLabels(selectedValue) { + // 过滤出 value 大于等于 selectedValue 的所有对象 + const filteredResolutions = BILI_RESOLUTION_LIST.filter(resolution => resolution.value >= selectedValue); + + // 将这些对象的 label 拼接成一个字符串 + return filteredResolutions.map(resolution => resolution.label).join(', '); +}