feat(core): 优化媒体文件扫描和处理功能
- 添加跳过ffprobe相关文件的逻辑,避免处理临时释放文件 - 修复图片处理中的变量引用错误 - 实现大文件指纹复用机制,避免重复全量读取计算MD5 - 新增文件头尾采样指纹算法,提升大文件处理性能 - 重构ffprobe内嵌资源管理,支持多平台自动选择对应版本 - 添加媒体信息数据库的指纹索引和去向跟踪功能 - 优化程序启动流程,失败时跳过媒体整理但保留图片处理 - 更新文档说明多平台ffprobe支持和构建要求
This commit is contained in:
@@ -34,18 +34,25 @@ func main() {
|
||||
fmt.Println("=== 初始化数据库失败(继续整理, 不记录媒体信息):", err)
|
||||
}
|
||||
defer store.Close()
|
||||
// 释放内嵌ffprobe(按当前系统);失败只跳过媒体整理,图片照常处理
|
||||
ffprobeReady := true
|
||||
if len(vars.GlobalImagePathList) > 0 || len(vars.GlobalMediaPathList) > 0 {
|
||||
if err := util.ReleaseFFprobe(); err != nil {
|
||||
fmt.Println("=== 释放解码器失败, 5秒后将自动退出", err)
|
||||
time.Sleep(time.Second * 5)
|
||||
return
|
||||
fmt.Println("=== 释放解码器失败, 视频/音频整理将跳过(图片照常处理):", err)
|
||||
ffprobeReady = false
|
||||
}
|
||||
}
|
||||
defer util.RemoveFFprobe()
|
||||
if len(vars.GlobalImagePathList) > 0 {
|
||||
core.DoHandleImage(pickerDir)
|
||||
}
|
||||
if len(vars.GlobalMediaPathList) > 0 {
|
||||
if len(vars.GlobalMediaPathList) > 0 && ffprobeReady {
|
||||
core.DoHandleMedia(pickerDir)
|
||||
}
|
||||
util.RemoveFFprobe()
|
||||
// 所有移动完成后,回填文件的归类目录与去向
|
||||
for src, dest := range vars.GlobalPath2DestDirMap {
|
||||
if err := store.UpdateMediaDest(src, dest); err != nil {
|
||||
fmt.Printf("=== 更新媒体去向失败: %s, 错误: %v\n", src, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user