photoprism/pkg/fs/canonical.go

40 lines
780 B
Go

package fs
import (
"strings"
"time"
)
// NonCanonical returns true if the file basename is NOT canonical.
func NonCanonical(basename string) bool {
if len(basename) != 24 {
return true
}
if strings.Count(basename, "_") != 2 {
return true
}
if strings.ContainsAny(basename, "-~!@#$%^&*()+=<>?,.") {
return true
}
return false
}
// IsCanonical returns true if the file basename is canonical.
func IsCanonical(basename string) bool {
return !NonCanonical(basename)
}
// CanonicalName returns a canonical name based on time and CRC32 checksum.
func CanonicalName(date time.Time, checksum string) string {
if len(checksum) != 8 {
checksum = "EEEEEEEE"
} else {
checksum = strings.ToUpper(checksum)
}
return date.Format("20060102_150405_") + checksum
}