🐛 Fix analyzer again...

This commit is contained in:
LittleSheep 2025-01-21 20:07:49 +08:00
parent 4cecbd8e4b
commit 1a9e670d3d

View File

@ -99,16 +99,27 @@ func ScanUnanalyzedFileFromDatabase() {
}() }()
} }
func parseExifOrientation(output string) (int, error) { func parseExifOrientation(src string) int {
parts := strings.Fields(output) switch src {
if len(parts) < 2 { case "Horizontal":
return 0, fmt.Errorf("unexpected format: %s", output) return 1
case "Mirror horizontal":
return 2
case "Rotate 180":
return 3
case "Mirror vertical":
return 4
case "Mirror horizontal and rotate 270 CW":
return 5
case "Rotate 90 CW":
return 6
case "Mirror horizontal and rotate 90 CW":
return 7
case "Rotate 270 CW":
return 8
default:
return 0
} }
orientation, err := strconv.Atoi(parts[len(parts)-1])
if err != nil {
return 0, fmt.Errorf("invalid orientation value: %s", parts[len(parts)-1])
}
return orientation, nil
} }
func calculateAspectRatio(width, height int, orientation int) float64 { func calculateAspectRatio(width, height int, orientation int) float64 {
@ -186,7 +197,7 @@ func AnalyzeAttachment(file models.Attachment) error {
for _, data := range exif { for _, data := range exif {
for k := range data.Fields { for k := range data.Fields {
if k == "Orientation" { if k == "Orientation" {
ori, _ := parseExifOrientation(data.Fields[k].(string)) ori := parseExifOrientation(data.Fields[k].(string))
file.Metadata["ratio"] = calculateAspectRatio(width, height, ori) file.Metadata["ratio"] = calculateAspectRatio(width, height, ori)
} }
if strings.HasPrefix(k, "GPS") { if strings.HasPrefix(k, "GPS") {
@ -231,7 +242,7 @@ func AnalyzeAttachment(file models.Attachment) error {
for _, data := range exif { for _, data := range exif {
for k := range data.Fields { for k := range data.Fields {
if k == "Orientation" { if k == "Orientation" {
ori, _ := parseExifOrientation(data.Fields[k].(string)) ori := parseExifOrientation(data.Fields[k].(string))
file.Metadata["ratio"] = calculateAspectRatio(stream.Width, stream.Height, ori) file.Metadata["ratio"] = calculateAspectRatio(stream.Width, stream.Height, ori)
} }
if strings.HasPrefix(k, "GPS") { if strings.HasPrefix(k, "GPS") {