feat: Aria2 添加多线程能力

This commit is contained in:
zhiyu1998 2024-08-07 16:27:54 +08:00
parent 090bd09e1a
commit 05b49f4b74
2 changed files with 15 additions and 9 deletions

View File

@ -1807,7 +1807,8 @@ export class tools extends plugin {
}), }),
1000, 1000,
), ),
this.biliUseAria2 this.biliUseAria2,
this.videoDownloadConcurrency
), ),
downloadBFile( downloadBFile(
audioUrl, audioUrl,
@ -1819,7 +1820,8 @@ export class tools extends plugin {
}), }),
1000, 1000,
), ),
this.biliUseAria2 this.biliUseAria2,
this.videoDownloadConcurrency
), ),
]).then(data => { ]).then(data => {
return mergeFileToMp4(data[0].fullFileName, data[1].fullFileName, `${ title }.mp4`); return mergeFileToMp4(data[0].fullFileName, data[1].fullFileName, `${ title }.mp4`);

View File

@ -22,15 +22,16 @@ const biliHeaders = {
/** /**
* 下载单个bili文件 * 下载单个bili文件
* @param url * @param url 下载链接
* @param fullFileName * @param fullFileName 文件名
* @param progressCallback * @param progressCallback 下载进度
* @param isAria2 * @param isAria2 是否使用aria2
* @param videoDownloadConcurrency 视频下载并发
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
export async function downloadBFile(url, fullFileName, progressCallback, isAria2 = false) { export async function downloadBFile(url, fullFileName, progressCallback, isAria2 = false, videoDownloadConcurrency = 1) {
if (isAria2) { if (isAria2) {
return aria2DownloadBFile(url, fullFileName, progressCallback); return aria2DownloadBFile(url, fullFileName, progressCallback, videoDownloadConcurrency);
} else { } else {
return normalDownloadBFile(url, fullFileName, progressCallback); return normalDownloadBFile(url, fullFileName, progressCallback);
} }
@ -78,9 +79,10 @@ async function normalDownloadBFile(url, fullFileName, progressCallback) {
* @param url * @param url
* @param fullFileName * @param fullFileName
* @param progressCallback * @param progressCallback
* @param videoDownloadConcurrency
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async function aria2DownloadBFile(url, fullFileName, progressCallback) { async function aria2DownloadBFile(url, fullFileName, progressCallback, videoDownloadConcurrency) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
logger.info(`[R插件][Aria2下载] 正在使用Aria2进行下载!`); logger.info(`[R插件][Aria2下载] 正在使用Aria2进行下载!`);
// 构建aria2c命令 // 构建aria2c命令
@ -91,6 +93,8 @@ async function aria2DownloadBFile(url, fullFileName, progressCallback) {
'--console-log-level=warn', // 减少日志 verbosity '--console-log-level=warn', // 减少日志 verbosity
'--download-result=hide', // 隐藏下载结果概要 '--download-result=hide', // 隐藏下载结果概要
'--header', 'referer: https://www.bilibili.com', // 添加自定义标头 '--header', 'referer: https://www.bilibili.com', // 添加自定义标头
`--max-connection-per-server=${videoDownloadConcurrency}`, // 每个服务器的最大连接数
`--split=${videoDownloadConcurrency}`, // 分成 6 个部分进行下载
url url
]; ];