diff options
Diffstat (limited to 'storage.go')
-rw-r--r-- | storage.go | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/storage.go b/storage.go deleted file mode 100644 index 28637da..0000000 --- a/storage.go +++ /dev/null @@ -1,68 +0,0 @@ -package main - -import ( - "crypto/sha256" - "fmt" - "io" - "os" - - "github.com/barasher/go-exiftool" -) - -type File struct { - Path string - SHA256 string - Time string -} - -type Storage interface { - Upsert(file *File) error - LoadByPath(path string) *File -} - -func NewFile(path string) *File { - return &File{Path: path} -} - -func (file *File) CalculateSHA256() error { - f, err := os.Open(file.Path) - if err != nil { - return err - } - defer f.Close() - - h := sha256.New() - if _, err := io.Copy(h, f); err != nil { - return err - } - - file.SHA256 = fmt.Sprintf("%x", h.Sum(nil)) - - return nil -} - -func (file *File) SetTime() error { - - et, err := exiftool.NewExiftool() - if err != nil { - return err - } - defer et.Close() - - fileInfos := et.ExtractMetadata(file.Path) - - for _, fileInfo := range fileInfos { - if fileInfo.Err != nil { - fmt.Printf("Error concerning %v: %v\n", fileInfo.File, fileInfo.Err) - continue - } - - v, ok := fileInfo.Fields["DateTimeOriginal"] - if ok { - t, _ := v.(string) - file.Time = t - } - } - - return nil -} |