From ac341e5c6a0eafd57c72498fbaf123ac5a39c2d8 Mon Sep 17 00:00:00 2001 From: MiX1024 <116636746+MiX1024@users.noreply.github.com> Date: Tue, 14 May 2024 12:10:09 +0800 Subject: [PATCH 1/2] Update tools.yaml --- config/tools.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/tools.yaml b/config/tools.yaml index e72f5a2..50ab878 100644 --- a/config/tools.yaml +++ b/config/tools.yaml @@ -15,4 +15,6 @@ queueConcurrency: 1 # 【目前只涉及哔哩哔哩的下载】根据服务器 videoDownloadConcurrency: 1 # 下载视频是否使用多线程,如果不使用默认是1,如果使用根据服务器进行选择,如果不确定是否可以用4即可,高性能服务器随意4~12都可以,看CPU的实力 -lagrangeForwardWebSocket: 'ws://127.0.0.1:9091/' # 格式:ws://地址:端口/,拉格朗日正向连接地址,用于适配拉格朗日上传群文件,解决部分用户无法查看视频问题 \ No newline at end of file +lagrangeForwardWebSocket: 'ws://127.0.0.1:9091/' # 格式:ws://地址:端口/,拉格朗日正向连接地址,用于适配拉格朗日上传群文件,解决部分用户无法查看视频问题 + +autoclearTrashtime: '0 0 8 * * ?' #每天早上8点自动清理视频缓存,cron可自定义时间 From a0f8b0b911dfc5c31cda8512dd9696cf70b0e1ce Mon Sep 17 00:00:00 2001 From: MiX1024 <116636746+MiX1024@users.noreply.github.com> Date: Tue, 14 May 2024 12:12:24 +0800 Subject: [PATCH 2/2] Update switchers.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加自动清理垃圾 --- apps/switchers.js | 89 ++++++++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/apps/switchers.js b/apps/switchers.js index 048e507..1dd7130 100644 --- a/apps/switchers.js +++ b/apps/switchers.js @@ -1,13 +1,18 @@ import config from "../model/index.js"; +import schedule from 'node-schedule'; import { REDIS_YUNZAI_ISOVERSEA, REDIS_YUNZAI_LAGRANGE } from "../constants/constant.js"; import { deleteFolderRecursive, readCurrentDir } from "../utils/file.js"; +//自动清理定时 +const autotime = config.getConfig("tools").autoclearTrashtime +// 视频保存路径 +const defaultPath = config.getConfig("tools").defaultPath + export class switchers extends plugin { constructor() { super({ name: "R插件开关类", dsc: "内含一些和Redis相关的开关类", - event: "message.group", priority: 300, rule: [ { @@ -21,16 +26,12 @@ export class switchers extends plugin { permission: "master", }, { - reg: "^清理data垃圾$", + reg: "^清理垃圾$", fnc: "clearTrash", permission: "master", }, ] - }); - // 配置文件 - this.toolsConfig = config.getConfig("tools"); - // 视频保存路径 - this.defaultPath = this.toolsConfig.defaultPath; + }); } /** @@ -74,35 +75,59 @@ export class switchers extends plugin { return true; } - /** + //手动清理垃圾 + async clearTrash(e) { + try { + const { dataClearFileLen, rTempFileLen } = await autoclearTrash(); + e.reply(`手动清理垃圾完成:\n` + + `- 清理了${dataClearFileLen}个垃圾文件\n` + + `- 清理了${rTempFileLen}个群临时文件`); + } catch (err) { + e.reply(`手动清理垃圾时发生错误: ${err.message}`); + } + } +} + + + /** * 清理垃圾文件 * @param e * @returns {Promise} */ - async clearTrash(e) { - const dataDirectory = "./data/"; - - // 删除Yunzai遗留问题的合成视频垃圾文件 - try { - const files = await readCurrentDir(dataDirectory); - let dataClearFileLen = 0; - for (const file of files) { - // 如果文件名符合规则,执行删除操作 - if (/^[0-9a-f]{32}$/.test(file)) { - await fs.promises.unlink(dataDirectory + file); - dataClearFileLen++; - } +async function autoclearTrash(e) { + const dataDirectory = "./data/"; + try { + const files = await readCurrentDir(dataDirectory); + let dataClearFileLen = 0; + for (const file of files) { + if (/^[0-9a-f]{32}$/.test(file)) { + await fs.promises.unlink(dataDirectory + file); + dataClearFileLen++; } - // 删除R插件临时文件 - const rTempFileLen = await deleteFolderRecursive(this.defaultPath) - e.reply( - `数据统计:\n` + - `- 当前清理了${ dataDirectory }下总计:${ dataClearFileLen } 个垃圾文件\n` + - `- 当前清理了${ this.toolsConfig.defaultPath }下文件夹:${ rTempFileLen } 个群的所有临时文件` - ); - } catch (err) { - logger.error(err); - await e.reply("清理失败,重试或者手动清理即可"); } + const rTempFileLen = await deleteFolderRecursive(defaultPath); + return { + dataClearFileLen, + rTempFileLen + }; + } catch (err) { + logger.error(err); + throw err; } -} \ No newline at end of file +} + +function autoclear(time) { + schedule.scheduleJob(time, async function() { + try { + const { dataClearFileLen, rTempFileLen } = await autoclearTrash(); + console.log(`自动清理垃圾完成:\n` + + `- 清理了${dataClearFileLen}个垃圾文件\n` + + `- 清理了${rTempFileLen}个群临时文件`); + } catch (err) { + console.error(`自动清理垃圾时发生错误: ${err.message}`); +} +}) +} + +//自动清理垃圾 +autoclear(autotime)