feat: 色情图片识别(NudeNet);明暗档位改为5档(20%~100%)

This commit is contained in:
2025-06-02 21:04:38 +08:00
parent ea88f3e766
commit a914b4be74
13 changed files with 450 additions and 25 deletions
+17
View File
@@ -24,6 +24,7 @@ import (
"time"
"kenaito-media-picker/internal/config"
"kenaito-media-picker/internal/nsfw"
"kenaito-media-picker/internal/organize"
"kenaito-media-picker/internal/probe"
"kenaito-media-picker/internal/scanner"
@@ -492,7 +493,23 @@ func (s *ScanService) runScan(ctx context.Context, rootDir, destDir string) erro
fmt.Printf("=== 使用 ffmpeg 转正图片EXIF旋转: %s\n", ffmpegPath)
}
}
// ---------- 第五步(可选):色情识别 ----------
// 用本机 python + NudeNet 起一个本地检测服务。没装 python/nudenet 时跳过,
// 不影响图片整理——检测结果只决定走普通目录还是「图片_敏感」目录。
nsfwDet := (*nsfw.Detector)(nil)
if cfg := config.GetAppConfig(); cfg.NSFWEnabled {
if d, err := nsfw.Start(cfg.NSFWPython, cfg.NSFWThreshold); err != nil {
fmt.Printf("=== 色情识别未启用(图片照常处理): %v\n", err)
} else {
nsfwDet = d
defer nsfwDet.Stop()
fmt.Println("=== 色情识别已启用(NudeNet)")
}
}
org := organize.New(pickerDir, ffprobePath, ffmpegPath, s.store, ctx)
org.SetNSFWDetector(nsfwDet)
// 整个"整理"分两个阶段,界面上共用一条进度条:
// 归类阶段:图片、视频/音频分两批处理。进度 = 已处理文件数 / 全部待整理文件数