fix: 未知 MIME 文件不再被移入忽略目录

- scanner: 新增 IsExplicitMediaMime 判断明确媒体 MIME
- organize: 仅 video/audio MIME 文件移入异常/忽略目录
- octet-stream/空 MIME 且 ffprobe 无法确认的文件原地忽略,不移动
This commit is contained in:
2025-04-10 21:05:14 +08:00
parent c266da2858
commit 39fe02b424
2 changed files with 19 additions and 3 deletions
+14 -3
View File
@@ -150,13 +150,18 @@ func (o *Organizer) ProcessMedia(media []scanner.File) {
for _, f := range media {
res, err := probe.ProbeMediaFile(o.ffprobePath, f.Path)
if err != nil {
// 仅 MIME 明确为视频/音频的文件才移入异常/忽略目录;
// octet-stream/空 MIME 且 ffprobe 无法确认的原地忽略,不移动
if strings.HasPrefix(f.Mime, "video/") {
fail++
o.add(f, dirVideoErr)
fmt.Printf("=== 异常视频: %s \n", f.Path)
} else {
} else if scanner.IsExplicitMediaMime(f.Mime) {
ignore++
o.add(f, dirVideoIgnored)
} else {
ignore++
fmt.Printf("=== 无法确认的非媒体文件, 原地忽略: %s \n", f.Path)
}
continue
}
@@ -170,8 +175,14 @@ func (o *Organizer) ProcessMedia(media []scanner.File) {
o.record(f, "audio", res)
o.add(f, dirAudio)
default:
ignore++
o.add(f, dirVideoIgnored)
// ffprobe 无音视频流:MIME 明确为媒体的归入忽略目录,其余原地不动
if scanner.IsExplicitMediaMime(f.Mime) {
ignore++
o.add(f, dirVideoIgnored)
} else {
ignore++
fmt.Printf("=== 无法确认的非媒体文件, 原地忽略: %s \n", f.Path)
}
}
}
fmt.Printf("=== 媒体处理完毕,视频: %d, 音频: %d, 读取异常: %d, 忽略: %d \n\n", video, audio, fail, ignore)
+5
View File
@@ -104,6 +104,11 @@ func detectMime(filePath string) string {
return mt.String()
}
// IsExplicitMediaMime 判断 MIME 是否明确属于视频/音频(区别于 octet-stream/空 等无法确定的情况)
func IsExplicitMediaMime(fileMime string) bool {
return strings.HasPrefix(fileMime, "video/") || strings.HasPrefix(fileMime, "audio/")
}
// isPotentialMedia 判断是否可能是媒体文件(交由 ffprobe 进一步确认)
func isPotentialMedia(fileMime string) bool {
if fileMime == "" || fileMime == "application/octet-stream" {