fix: 修复全局扫描不下载预览图及强制覆盖失效的问题

- 修正全局扫描默认跳过媒体下载的问题,使其能正常获取预览图。

- 修正 --force-overwrite 未生效的问题,开启强制覆盖时将主动清理旧的自定义预览文件。

- 调整前端扫描向导按钮逻辑,默认指向全局扫描以避免遗漏非当前页面的模型。
This commit is contained in:
DemonGatanjieu
2026-07-26 21:17:02 +08:00
parent 17a82a593d
commit 4de6691137
3 changed files with 20 additions and 7 deletions
+4 -1
View File
@@ -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(
+15 -5
View File
@@ -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:
+1 -1
View File
@@ -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');