diff --git a/SpineThumbnailGenerateServer/js/library-watcher.js b/SpineThumbnailGenerateServer/js/library-watcher.js index 0432083..2b52311 100644 --- a/SpineThumbnailGenerateServer/js/library-watcher.js +++ b/SpineThumbnailGenerateServer/js/library-watcher.js @@ -16,6 +16,24 @@ const QUIET_MS = 1000; // fs.watch 在网络盘/外置盘上可能漏事件,用低频兜底扫描补上。 const FALLBACK_MS = 30000; +/** 删除指定目录中超过保留时间的本插件临时文件。 */ +function cleanupStaleFiles(directory, prefix, maxAgeMs, now = Date.now()) { + let names; + try { names = fs.readdirSync(directory); } catch (error) { return 0; } + let removed = 0; + for (const name of names) { + if (!name.startsWith(prefix)) continue; + const file = path.join(directory, name); + try { + const stat = fs.lstatSync(file); + if (!stat.isFile() || now - stat.mtimeMs < maxAgeMs) continue; + fs.unlinkSync(file); + removed += 1; + } catch (error) { /* 单个文件失败不影响其余清理和监听 */ } + } + return removed; +} + function createLibraryWatcher(options) { const onBatch = options.onBatch || (() => {}); const onLog = options.onLog || (() => {}); @@ -94,7 +112,7 @@ function createLibraryWatcher(options) { // 同时支持两种加载方式:Node 里用 require(跑测试),插件页面里用