群晖的 Synology Photos 备份 Live Photo 后会在同目录下生成一个同名的 MOV 文件。
若直接备份到其他相册易造成重复,因此我修改了 syncthing 代码:当文件为 MOV 格式时,判断同目录是否存在同名 HEIC 文件,若存在则不同步该 MOV 文件。
diff --git a/lib/model/folder.go b/lib/model/folder.go
index 70fe941f2..c333b5fd3 100644
--- a/lib/model/folder.go
+++ b/lib/model/folder.go
@@ -695,7 +695,27 @@ func (f *folder) scanSubdirsChangedAndNew(ctx context.Context, subDirs []string,
}
return changes, err
}
-
+
+ // 判断并忽略属于 Live Photo 的 .mov 视频文件
+ fileName := res.File.Name
+ // 检查文件扩展名
+ if strings.HasSuffix(strings.ToLower(fileName), ".mov") {
+ // 去掉扩展名
+ baseName := fileName[:len(fileName)-4]
+
+ // 构建同名的 .heic 文件路径
+ heicPath := baseName + ".heic"
+ heicPathUpper := baseName + ".HEIC"
+
+ _, err1 := f.mtimefs.Stat(heicPath)
+ _, err2 := f.mtimefs.Stat(heicPathUpper)
+ if err1 == nil || err2 == nil {
+ // 找到了同名的 HEIC 文件,忽略
+ f.sl.DebugContext(ctx, "Ignoring Live Photo video", slog.String("file", fileName))
+ continue
+ }
+ }
+
if ok, err := batch.Update(res.File); err != nil {
return 0, err
} else if ok {
编译使用
GOFLAGS=-buildvcs=false CGO_ENABLED=0 go run build.go \
-no-upgrade \
-version=v2.3.3 \
build syncthing