upd
This commit is contained in:
@@ -74,8 +74,9 @@ type ScanStatus struct {
|
||||
|
||||
// 应用级配置键。目前只存了两个:上次使用的存放目录、色情检测服务是否真的起来了。
|
||||
const (
|
||||
ConfigKeyScanDir = "scan.scanDir"
|
||||
ConfigKeyDestDir = "scan.destDir"
|
||||
ConfigKeyScanDir = "scan.scanDir"
|
||||
ConfigKeyDestDir = "scan.destDir"
|
||||
ConfigKeyOrganizeWorkers = "organize.workers"
|
||||
)
|
||||
|
||||
// nsfwDetectorReadyKey 记录最近一次扫描时色情检测服务是否真的起来了(python+nudenet 可用)。
|
||||
@@ -625,6 +626,14 @@ func sanitizeLine(line string) string {
|
||||
// 3. 准备解码器:把内嵌的 ffprobe 程序释放到当前目录(用它读视频/音频信息)
|
||||
// 4. 整理:给每个文件探测信息 → 判断是否重复 → 分到分类目录 → 搬进去
|
||||
func (s *ScanService) runScan(ctx context.Context, rootDir, destDir string) error {
|
||||
// 从数据库读取 organize.workers 配置(支持运行时修改,立即生效)
|
||||
if v := s.store.GetConfig(ConfigKeyOrganizeWorkers); v != "" {
|
||||
if w, err := strconv.Atoi(v); err == nil && w >= 0 {
|
||||
config.SetWorkers(w)
|
||||
fmt.Printf("=== 使用数据库配置 organize.workers=%d\n", w)
|
||||
}
|
||||
}
|
||||
|
||||
// 确定整理后文件的存放目录:统一都放进「KMP已整理」这一层——
|
||||
// 用户填了存放目录就放在它下面(存放目录/KMP已整理),没填就放在扫描目录下(扫描目录/KMP已整理)。
|
||||
pickerDir := filepath.Join(rootDir, DefaultPickerDirName)
|
||||
@@ -696,13 +705,19 @@ func (s *ScanService) runScan(ctx context.Context, rootDir, destDir string) erro
|
||||
threshold = t
|
||||
}
|
||||
}
|
||||
if d, err := nsfw.Start("", threshold); err != nil {
|
||||
workers := 4
|
||||
if v := s.store.GetConfig("nsfw.workers"); v != "" {
|
||||
if w, err := strconv.Atoi(v); err == nil && w > 0 {
|
||||
workers = w
|
||||
}
|
||||
}
|
||||
if d, err := nsfw.Start("", threshold, workers); err != nil {
|
||||
fmt.Printf("=== 色情识别未启用(图片照常处理): %v\n", err)
|
||||
} else {
|
||||
nsfwDet = d
|
||||
defer nsfwDet.Stop()
|
||||
s.setNsfwDetectorReady(true)
|
||||
fmt.Println("=== 色情识别已启用(NudeNet)")
|
||||
fmt.Printf("=== 色情识别已启用(NudeNet, workers=%d)\n", workers)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -715,12 +730,18 @@ func (s *ScanService) runScan(ctx context.Context, rootDir, destDir string) erro
|
||||
threshold = t
|
||||
}
|
||||
}
|
||||
if d, err := anime_nsfw.Start("", threshold); err != nil {
|
||||
workers := 2
|
||||
if v := s.store.GetConfig("anime.workers"); v != "" {
|
||||
if w, err := strconv.Atoi(v); err == nil && w > 0 {
|
||||
workers = w
|
||||
}
|
||||
}
|
||||
if d, err := anime_nsfw.Start("", threshold, workers); err != nil {
|
||||
fmt.Printf("=== 动漫色情识别未启用(图片照常处理): %v\n", err)
|
||||
} else {
|
||||
animeNsfwDet = d
|
||||
defer animeNsfwDet.Stop()
|
||||
fmt.Println("=== 动漫色情识别已启用(WD Tagger v3)")
|
||||
fmt.Printf("=== 动漫色情识别已启用(WD Tagger v3, workers=%d)\n", workers)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user