mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 08:09:19 +00:00
✨ feat: 新增哔哩哔哩下载分辨率设置
- 在 config/tools.yaml 中添加哔哩哔哩下载分辨率配置项 - 在 guoba.support.js 中新增哔哩哔哩下载分辨率选择项 - 在 utils/bilibili.js 中实现分辨率标签拼接功能 - 在 apps/tools.js 中加载哔哩哔哩最高分辨率配置 - 在 utils/bbdown-util.js 中添加分辨率参数到 BBDown 命令 - 在 constants/constant.js 中定义哔哩哔哩下载分辨率列表
This commit is contained in:
parent
78db32133d
commit
7aa487b13a
@ -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`);
|
||||
|
@ -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-不压缩;是否使用压缩视频格式的抖音(默认使用),使用后加速视频发送
|
||||
|
@ -1,11 +1,11 @@
|
||||
- {
|
||||
version: 1.8.1,
|
||||
version: 1.8.2,
|
||||
data:
|
||||
[
|
||||
新增<span class="cmd">哔哩哔哩下载分辨率设置</span>功能,
|
||||
新增<span class="cmd">自定义识别</span>功能,
|
||||
修正<span class="cmd">油管分辨率降低到720P</span>功能,
|
||||
新增<span class="cmd">小飞机解析 Beta</span>功能,
|
||||
新增<span class="cmd">BBDown更换CDN</span>功能,
|
||||
支持<span class="cmd">锅巴</span>插件,方便查看和修改配置,
|
||||
输入<span class="cmd">#R帮助</span>获取插件帮助,
|
||||
输入<span class="cmd">#R更新</span>更新插件,
|
||||
|
@ -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}
|
||||
|
@ -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",
|
||||
|
@ -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,因为它已经在系统路径中
|
||||
|
@ -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(', ');
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user