feat(core): 添加PSD/PSB图片格式支持并重构媒体文件处理

- 新增ReadPsdImage函数支持PSD/PSB格式图片信息读取
- 修改文件扫描逻辑,将视频处理改为媒体候选处理,使用ffprobe统一判定
- 添加对PSB格式的支持,与PSD共享相同8BPS文件头处理
- 重构handle_image.go中的图片处理逻辑,优化错误处理和记录保存
- 更新文件扫描过滤规则,支持更多图片格式并跳过数据库文件
- 添加文件MD5计算功能用于文件唯一性标识
- 修改媒体处理流程,支持音频文件识别和分类处理
- 移除废弃的视频时长转换函数和相关依赖
- 更新依赖版本并添加SQLite支持用于媒体信息存储
This commit is contained in:
2025-03-18 21:04:15 +08:00
parent f5e3f6b4ef
commit b276e8c56f
16 changed files with 770 additions and 311 deletions
+17 -2
View File
@@ -7,6 +7,8 @@ import (
_ "image/jpeg" // 导入jpeg支持
_ "image/png" // 导入png支持
"kenaito-media-picker/core"
"kenaito-media-picker/store"
"kenaito-media-picker/util"
"kenaito-media-picker/vars"
"os"
"path/filepath"
@@ -27,10 +29,23 @@ func main() {
scanner := core.FileScanner{}
scanner.DoScan(rootDir)
scanner.DoFilter()
// 初始化媒体信息数据库(失败不影响整理,仅无法记录)
if err := store.Init(filepath.Join(rootDir, store.DBFileName)); err != nil {
fmt.Println("=== 初始化数据库失败(继续整理, 不记录媒体信息):", err)
}
defer store.Close()
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
}
}
if len(vars.GlobalImagePathList) > 0 {
core.DoHandleImage(pickerDir)
}
if len(vars.GlobalVideoPathList) > 0 {
core.DoHandleVideo(pickerDir)
if len(vars.GlobalMediaPathList) > 0 {
core.DoHandleMedia(pickerDir)
}
util.RemoveFFprobe()
}