rc-plugin/utils/bbdown-util.js
2024-08-07 11:35:02 +08:00

63 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { exec } from 'child_process';
import os from 'os';
/**
* 检测 BBDown 是否存在
* @param callback
*/
export function checkBBDown(callback) {
// 根据操作系统选择命令
return new Promise((resolve, reject) => {
const command = os.platform() === 'win32' ? 'where BBDown' : 'which BBDown';
exec(command, (error, stdout, stderr) => {
if (error) {
logger.error(`[R插件][BBDown]未找到: ${stderr || error.message}`);
resolve(false);
return;
}
logger.info(`[R插件][BBDown]找到: ${stdout.trim()}`);
resolve(true);
});
});
}
/**
* 使用BBDown下载
* @param videoUrl 视频链接
* @param downloadDir 下载目录
* @param biliSessData cookie
*/
export function startBBDown(videoUrl, downloadDir, biliSessData) {
return new Promise((resolve, reject) => {
// logger.info(videoUrl);
// 解析URL并提取参数p页数
const urlObj = new URL(videoUrl);
const params = urlObj.searchParams;
const newParams = new URLSearchParams();
const pageParam = params.get('p');
// 这里提取p参数防止丢失
if (params.has('p')) {
newParams.set('p', pageParam);
}
// 这里如果有p参数就放置到url上没有就相当于作了一次去跟踪参数的清除也方便BBDown下载
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`;
// logger.info(command);
// 直接调用BBDown因为它已经在系统路径中
exec(command, (error, stdout, stderr) => {
if (error) {
reject(`[R插件][BBDown]执行出错: ${error.message}`);
return;
}
if (stderr) {
reject(`[R插件][BBDown]错误信息: ${stderr}`);
return;
}
// logger.info(`[R插件][BBDown]输出结果: ${stdout}`);
resolve(stdout);
});
});
}