From 9cbc3f72ed039393ec5f1f0f1c84df46d671cb6b Mon Sep 17 00:00:00 2001 From: RrOrange <542716863@qq.com> Date: Tue, 11 Apr 2023 20:50:54 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20data=E6=B8=85=E7=90=86?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tools.js | 15 +++++++-------- utils/file.js | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/apps/tools.js b/apps/tools.js index 2b756b1..f01c66a 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -6,7 +6,7 @@ import axios from "axios"; import _ from "lodash"; import tunnel from "tunnel"; import HttpProxyAgent from "https-proxy-agent"; -import { mkdirIfNotExists, checkAndRemoveFile } from "../utils/file.js"; +import { mkdirIfNotExists, checkAndRemoveFile, deleteFolderRecursive } from "../utils/file.js"; import { downloadBFile, getDownloadUrl, mergeFileToMp4 } from "../utils/bilibili.js"; import { parseUrl, parseM3u8, downloadM3u8Videos, mergeAcFileToMp4 } from "../utils/acfun.js"; import { transMap, douyinTypeMap, XHS_CK, TEN_THOUSAND, PROMPT_MAP } from "../utils/constant.js"; @@ -889,23 +889,22 @@ export class tools extends plugin { // 清理垃圾文件 async clearTrash(e) { const dataDirectory = "./data/"; - const tempDirectory = this.toolsConfig.defaultPath; + try { const files = await fs.promises.readdir(dataDirectory); + let dataClearFileLen = 0; for (const file of files) { // 如果文件名符合规则,执行删除操作 if (/^[0-9a-f]{32}$/.test(file)) { await fs.promises.unlink(dataDirectory + file); + dataClearFileLen++; } } - const tempFiles = await fs.promises.readdir(tempDirectory); - for (let file of tempDirectory) { - dataDirectory - } + const rTempFileLen = await deleteFolderRecursive(this.toolsConfig.defaultPath) e.reply( `数据统计:\n`+ - `当前清理了data下垃圾文件总计:${files.length}\n`+ - `` + `- 当前清理了${dataDirectory}下垃总计:${dataClearFileLen} 个垃圾文件\n`+ + `- 当前清理了${ this.toolsConfig.defaultPath}下文件夹:${rTempFileLen} 个群的所有临时文件` ); } catch (err) { logger.error(err); diff --git a/utils/file.js b/utils/file.js index 3816dda..9381f80 100644 --- a/utils/file.js +++ b/utils/file.js @@ -1,4 +1,5 @@ import fs from "node:fs"; +import path from "path"; /** * 检查文件是否存在并且删除 @@ -34,4 +35,34 @@ async function mkdirIfNotExists(dir) { } } -export { checkAndRemoveFile, mkdirIfNotExists } \ No newline at end of file +/** + * 删除文件夹下所有文件 + * @returns {Promise} + * @param folderPath + */ +async function deleteFolderRecursive(folderPath) { + try { + const files = await fs.promises.readdir(folderPath); + const filePromises = files.map(async (file) => { + const curPath = path.join(folderPath, file); + const stat = await fs.promises.lstat(curPath); + + if (stat.isDirectory()) { + // recurse + await deleteFolderRecursive(curPath); + } else { + // delete file + await fs.promises.unlink(curPath); + } + }); + + await Promise.all(filePromises); + await fs.promises.rmdir(folderPath); + return files.length; + } catch (error) { + logger.error(error); + return 0; + } +} + +export { checkAndRemoveFile, mkdirIfNotExists, deleteFolderRecursive } \ No newline at end of file