From 4de66911370beea9761fa1ed19dc488ecd2fb638 Mon Sep 17 00:00:00 2001 From: DemonGatanjieu <1027066412@qq.com> Date: Sun, 26 Jul 2026 21:17:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E6=89=AB=E6=8F=8F=E4=B8=8D=E4=B8=8B=E8=BD=BD=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E5=9B=BE=E5=8F=8A=E5=BC=BA=E5=88=B6=E8=A6=86=E7=9B=96=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修正全局扫描默认跳过媒体下载的问题,使其能正常获取预览图。 - 修正 --force-overwrite 未生效的问题,开启强制覆盖时将主动清理旧的自定义预览文件。 - 调整前端扫描向导按钮逻辑,默认指向全局扫描以避免遗漏非当前页面的模型。 --- api/scanner.py | 5 ++++- scraper.py | 20 +++++++++++++++----- web/main.js | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/api/scanner.py b/api/scanner.py index 2501e0f..4003e9c 100644 --- a/api/scanner.py +++ b/api/scanner.py @@ -151,6 +151,7 @@ async def api_scan_all(request): virtual_rename = data.get("virtual_rename", False) physical_rename = data.get("physical_rename", False) force_overwrite = data.get("force_overwrite", False) + skip_media = data.get("skip_media", False) try: with open(marker_file, 'w') as f: f.write('1') @@ -165,7 +166,7 @@ async def api_scan_all(request): for base_dir in paths: if not os.path.exists(base_dir): continue print(f"[Anomalous Browser] Global scan processing: {base_dir}") - cmd = [sys.executable, scraper_path, base_dir, "--skip-media"] + cmd = [sys.executable, scraper_path, base_dir] if offline_only: cmd.append("--offline-only") if skip_rename: @@ -176,6 +177,8 @@ async def api_scan_all(request): cmd.append("--physical-rename") if force_overwrite: cmd.append("--force-overwrite") + if skip_media: + cmd.append("--skip-media") if not use_local_metadata: cmd.append("--skip-local-metadata") subprocess.run( diff --git a/scraper.py b/scraper.py index 36637bd..969623d 100644 --- a/scraper.py +++ b/scraper.py @@ -408,14 +408,24 @@ def main(): print(f"[+] 媒体下载成功 -> {os.path.basename(saved_path)}") # Promote to .preview if no custom cover exists has_custom = False - for c_ext in ['.preview.png', '.preview.jpg', '.preview.jpeg', '.preview.webp', '.preview.gif', '.preview.avif', '.preview.mp4', '.preview.webm', '.preview.mov', '.preview.avi', '.png', '.jpg', '.jpeg', '.webp', '.gif', '.avif', '.mp4', '.webm', '.mov', '.avi']: - p = old_base + c_ext - if os.path.exists(p) and not p.endswith('.civitai_bak' + c_ext): - has_custom = True - break + if not args.force_overwrite: + for c_ext in ['.preview.png', '.preview.jpg', '.preview.jpeg', '.preview.webp', '.preview.gif', '.preview.avif', '.preview.mp4', '.preview.webm', '.preview.mov', '.preview.avi', '.png', '.jpg', '.jpeg', '.webp', '.gif', '.avif', '.mp4', '.webm', '.mov', '.avi']: + p = old_base + c_ext + if os.path.exists(p) and not p.endswith('.civitai_bak' + c_ext): + has_custom = True + break if not has_custom: ext = os.path.splitext(saved_path)[1] import shutil + if args.force_overwrite: + for c_ext in ['.preview.png', '.preview.jpg', '.preview.jpeg', '.preview.webp', '.preview.gif', '.preview.avif', '.preview.mp4', '.preview.webm', '.preview.mov', '.preview.avi', '.png', '.jpg', '.jpeg', '.webp', '.gif', '.avif', '.mp4', '.webm', '.mov', '.avi']: + p = old_base + c_ext + if os.path.exists(p) and not p.endswith('.civitai_bak' + c_ext): + try: + os.remove(p) + print(f"[*] 强制覆盖: 已删除旧预览文件 {os.path.basename(p)}") + except: + pass preview_ext = ext if ext.startswith('.preview.') else f".preview{ext}" shutil.copy2(saved_path, old_base + preview_ext) else: diff --git a/web/main.js b/web/main.js index a18d340..d0cc894 100644 --- a/web/main.js +++ b/web/main.js @@ -887,7 +887,7 @@ class AnomalousBrowser { document.body.appendChild(wizard); }; - scanBtn.onclick = () => createWizardModal(); + scanBtn.onclick = () => createWizardModal(true); this.sidebarActions.appendChild(scanBtn); const energyBtn = document.createElement('button');