mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 16:19:18 +00:00
✨ feat: 支持BBDown
强行更换CDN
1. feat: 支持 `BBDown`强行更换CDN 2. chore: 清理 `tiktok`
This commit is contained in:
parent
291157c51f
commit
210259824a
@ -23,12 +23,12 @@ import {
|
||||
} from "../utils/bilibili.js";
|
||||
import { downloadM3u8Videos, mergeAcFileToMp4, parseM3u8, parseUrl } from "../utils/acfun.js";
|
||||
import {
|
||||
BILI_CDN_SELECT_LIST,
|
||||
BILI_DEFAULT_INTRO_LEN_LIMIT,
|
||||
COMMON_USER_AGENT,
|
||||
DIVIDING_LINE,
|
||||
douyinTypeMap,
|
||||
HELP_DOC,
|
||||
IMAGE_TRANSLATION_PROMPT,
|
||||
REDIS_YUNZAI_ISOVERSEA,
|
||||
REDIS_YUNZAI_LAGRANGE,
|
||||
SUMMARY_PROMPT,
|
||||
@ -43,7 +43,8 @@ import {
|
||||
downloadImg,
|
||||
estimateReadingTime,
|
||||
formatBiliInfo,
|
||||
retryAxiosReq, saveJsonToFile,
|
||||
retryAxiosReq,
|
||||
saveJsonToFile,
|
||||
secondsToTime,
|
||||
testProxy,
|
||||
truncateString
|
||||
@ -73,7 +74,6 @@ import {
|
||||
WEISHI_VIDEO_INFO,
|
||||
XHS_REQ_LINK
|
||||
} from "../constants/tools.js";
|
||||
import { processTikTokUrl } from "../utils/tiktok.js";
|
||||
import { getDS } from "../utils/mihoyo.js";
|
||||
import GeneralLinkAdapter from "../utils/general-link-adapter.js";
|
||||
import { mid2id } from "../utils/weibo.js";
|
||||
@ -207,6 +207,8 @@ export class tools extends plugin {
|
||||
this.biliDuration = this.toolsConfig.biliDuration;
|
||||
// 加载哔哩哔哩是否使用BBDown
|
||||
this.biliUseBBDown = this.toolsConfig.biliUseBBDown;
|
||||
// 加载 BBDown 的CDN配置
|
||||
this.biliCDN = this.toolsConfig.biliCDN;
|
||||
// 加载哔哩哔哩是否使用Aria2
|
||||
this.biliUseAria2 = this.toolsConfig.biliUseAria2;
|
||||
// 加载抖音Cookie
|
||||
@ -625,7 +627,11 @@ export class tools extends plugin {
|
||||
// 删除之前的文件
|
||||
await checkAndRemoveFile(`${ tempPath }.mp4`);
|
||||
// 下载视频
|
||||
await startBBDown(url, path, this.biliSessData, this.biliUseAria2);
|
||||
await startBBDown(url, path, {
|
||||
biliSessData: this.biliSessData,
|
||||
biliUseAria2: this.biliUseAria2,
|
||||
biliCDN: BILI_CDN_SELECT_LIST.find(item => item.value === this.biliCDN)?.sign,
|
||||
});
|
||||
// 发送视频
|
||||
return this.sendVideoToUpload(e, `${ tempPath }.mp4`);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ biliSessData: '' # 哔哩哔哩的SESSDATA
|
||||
biliIntroLenLimit: 50 # 哔哩哔哩简介长度限制,填 0 或者 -1 可以不做任何限制,显示完整简介
|
||||
biliDuration: 480 # 哔哩哔哩限制的最大视频时长(默认8分钟),单位:秒
|
||||
biliUseBBDown: false # 是否使用BBDown,默认不开启,开启后使用强劲的BBDown下载最高画质
|
||||
biliCDN: 0 # 哔哩哔哩 CDN,默认为0表示不使用
|
||||
biliUseAria2: false # 是否使用Aria2下载
|
||||
|
||||
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;
|
||||
|
@ -1,10 +1,10 @@
|
||||
- {
|
||||
version: 1.7.3,
|
||||
version: 1.7.4,
|
||||
data:
|
||||
[
|
||||
新增<span class="cmd">BBDown更换CDN</span>功能,
|
||||
新增<span class="cmd">Aria2下载选项</span>功能,
|
||||
新增<span class="cmd">最大上传限制选项</span>功能,
|
||||
新增<span class="cmd">BBDown下载方式</span>功能,
|
||||
支持<span class="cmd">锅巴</span>插件,方便查看和修改配置,
|
||||
输入<span class="cmd">#R帮助</span>获取插件帮助,
|
||||
输入<span class="cmd">#R更新</span>更新插件,
|
||||
|
@ -117,3 +117,12 @@ export const SUMMARY_CONTENT_ESTIMATOR_PATTERNS = [
|
||||
{ reg: /(?:https?:\/\/)?www\.bilibili\.com\/read\/[A-Za-z\d._?%&+\-=\/#]*/, name: '哔哩哔哩专栏' },
|
||||
{ reg: /(?:https?:\/\/)?(www\.)chinadaily.com.cn\/a\/[a-zA-Z0-9\d._?%&+\-=\/#]*/, name: 'ChinaDaily' }
|
||||
];
|
||||
|
||||
export const BILI_CDN_SELECT_LIST = Object.freeze([
|
||||
{ label: '不使用', value: 0, sign: '' },
|
||||
{ label: '腾讯CDN【推荐】', value: 1, sign: 'upos-sz-mirrorcos.bilivideo.com' },
|
||||
{ label: '百度CDN', value: 2, sign: 'upos-sz-mirrorbd.bilivideo.com' },
|
||||
{ label: '华为CDN', value: 3, sign: 'upos-sz-mirrorhw.bilivideo.com' },
|
||||
{ label: '阿卡迈(海外)', value: 4 , sign: 'upos-sz-mirrorakamai.bilivideo.com'},
|
||||
{ label: 'HK-CDN', value: 5, sign: 'upos-sz-mirroraliov.bilivideo.com' }
|
||||
]);
|
@ -1,6 +1,7 @@
|
||||
import path from "path";
|
||||
import model from "./model/index.js";
|
||||
import _ from "lodash";
|
||||
import { BILI_CDN_SELECT_LIST } from "./constants/constant.js";
|
||||
|
||||
const _path = process.cwd() + "/plugins/rconsole-plugin";
|
||||
export function supportGuoba() {
|
||||
@ -129,6 +130,15 @@ export function supportGuoba() {
|
||||
component: "Switch",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
field: "tools.biliCDN",
|
||||
label: "强制使用CDN",
|
||||
bottomHelpMessage: "BBDown强制使用CDN:【只影响开启后的BBDown,一定程度可以影响BBDown速度】哔哩哔哩的CDN地址更换,如果不需要默认不使用,如果选择了其他的CDN将会使用",
|
||||
component: "Select",
|
||||
componentProps: {
|
||||
options: BILI_CDN_SELECT_LIST,
|
||||
}
|
||||
},
|
||||
{
|
||||
field: "tools.biliUseAria2",
|
||||
label: "使用Aria2下载",
|
||||
|
@ -25,10 +25,11 @@ export function checkBBDown() {
|
||||
* 使用BBDown下载
|
||||
* @param videoUrl 视频链接
|
||||
* @param downloadDir 下载目录
|
||||
* @param biliSessData cookie
|
||||
* @param biliUseAria2 使用Aria2
|
||||
* @param BBDownOptions BBDown选项(目前仅支持session登录、使用Aria2下载、CDN)
|
||||
*/
|
||||
export function startBBDown(videoUrl, downloadDir, biliSessData, biliUseAria2) {
|
||||
export function startBBDown(videoUrl, downloadDir, BBDownOptions) {
|
||||
const { biliSessData, biliUseAria2, biliCDN } = BBDownOptions;
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
// logger.info(videoUrl);
|
||||
// 解析URL并提取参数p(页数)
|
||||
@ -44,7 +45,8 @@ export function startBBDown(videoUrl, downloadDir, biliSessData, biliUseAria2) {
|
||||
urlObj.search = newParams.toString();
|
||||
videoUrl = urlObj.toString();
|
||||
// 说明:-F 自定义名称,-c 自定义Cookie, --work-dir 设置下载目录,-M 多p下载的时候命名
|
||||
const command = `BBDown ${videoUrl} --work-dir ${downloadDir} ${biliSessData ? '-c SESSDATA=' + biliSessData : ''} ${pageParam ? '-p ' + pageParam + ' -M \"temp\"' : '-p 1' + ' -M \"temp\"'} -F temp --skip-subtitle --skip-cover ${biliUseAria2 ? '--use-aria2c' : ''}`;
|
||||
const command = `BBDown ${videoUrl} --work-dir ${downloadDir} ${biliSessData ? '-c SESSDATA=' + biliSessData : ''} ${pageParam ? '-p ' + pageParam + ' -M \"temp\"' : '-p 1' + ' -M \"temp\"'} -F temp --skip-subtitle --skip-cover ${biliUseAria2 ? '--use-aria2c' : ''} ${biliCDN ? '--upos-host ' + biliCDN : ''}`;
|
||||
logger.info(command);
|
||||
// logger.info(command);
|
||||
// 直接调用BBDown,因为它已经在系统路径中
|
||||
exec(command, (error, stdout, stderr) => {
|
||||
|
@ -1,45 +0,0 @@
|
||||
import { HttpsProxyAgent } from 'https-proxy-agent';
|
||||
|
||||
/**
|
||||
* Tiktok专属解析链接的Fetch
|
||||
* @param url 地址
|
||||
* @param isOversea 是否是海外
|
||||
* @param proxy 梯子
|
||||
*/
|
||||
const fetchTiktokUrl = async (url, isOversea, proxy) => {
|
||||
// 处理特殊情况 & 非特殊情况的header
|
||||
const headers = url.includes("vm.tiktok") || url.includes("tiktok.com/t")
|
||||
? { "User-Agent": "facebookexternalhit/1.1" }
|
||||
: {};
|
||||
|
||||
return fetch(url, {
|
||||
headers,
|
||||
redirect: "follow",
|
||||
follow: 10,
|
||||
timeout: 10000,
|
||||
agent: isOversea ? undefined : new HttpsProxyAgent(proxy),
|
||||
}).then(resp => resp.url);
|
||||
};
|
||||
|
||||
/**
|
||||
* 处理Tiktok链接
|
||||
* @param url 用户发送的链接,可能存在一些问题,需要正则匹配处理
|
||||
* @param isOversea 是否是海外
|
||||
* @param proxy 梯子
|
||||
*/
|
||||
export const processTikTokUrl = async (url, isOversea, proxy) => {
|
||||
// 合并正则表达式
|
||||
// const urlShortRex = /(http:|https:)\/\/vt.tiktok.com\/[A-Za-z\d._?%&+\-=\/#]*/g;
|
||||
// const urlShortRex2 = /(http:|https:)\/\/vm.tiktok.com\/[A-Za-z\d._?%&+\-=\/#]*/g;
|
||||
// const urlShortRex3 = /(http:|https:)\/\/www.tiktok.com\/t\/[A-Za-z\d._?%&+\-=\/#]*/g;
|
||||
const tikTokRegex = /(http:|https:)\/\/(www\.tiktok\.com\/|vt\.tiktok\.com\/|vm\.tiktok\.com\/www\.tiktok\.com\/t\/)[A-Za-z\d._?%&+\-=\/#@]*/g;
|
||||
const match = tikTokRegex.exec(url);
|
||||
|
||||
if (match) {// 如果URL匹配任何TikTok相关的模式,则进行处理
|
||||
url = await fetchTiktokUrl(match[0], isOversea, proxy);
|
||||
}
|
||||
|
||||
// 这里可以处理其他逻辑,例如更新URL、记录日志等
|
||||
// 或者其他处理结果
|
||||
return url;
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user