lookup for created at

This commit is contained in:
Celogeek 2021-12-23 09:06:44 +01:00
parent 2b9238885e
commit 3ef95cd07b
Signed by: celogeek
GPG Key ID: E6B7BDCFC446233A
5 changed files with 60 additions and 7 deletions

1
go.mod
View File

@ -9,6 +9,7 @@ require (
) )
require ( require (
github.com/barasher/go-exiftool v1.7.0 // indirect
github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
github.com/rivo/uniseg v0.2.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect

2
go.sum
View File

@ -1,3 +1,5 @@
github.com/barasher/go-exiftool v1.7.0 h1:EOGb5D6TpWXmqsnEjJ0ai6+tIW2gZFwIoS9O/33Nixs=
github.com/barasher/go-exiftool v1.7.0/go.mod h1:F9s/a3uHSM8YniVfwF+sbQUtP8Gmh9nyzigNF+8vsWo=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

46
internal/piwigo/exif.go Normal file
View File

@ -0,0 +1,46 @@
package piwigo
import (
"fmt"
"time"
"github.com/barasher/go-exiftool"
)
type ExifResult struct {
CreatedAt *TimeResult
}
func Exif(filename string) (*ExifResult, error) {
et, err := exiftool.NewExiftool()
if err != nil {
return nil, err
}
defer et.Close()
resp := &ExifResult{}
fileInfos := et.ExtractMetadata(filename)
for _, fileInfo := range fileInfos {
if fileInfo.Err != nil {
fmt.Printf("Error concerning %v: %v\n", fileInfo.File, fileInfo.Err)
continue
}
for k, v := range fileInfo.Fields {
switch k {
case "CreateDate", "CreationDate":
switch v := v.(type) {
case string:
t, err := time.Parse("2006:01:02 15:04:05-07:00", v)
if err == nil {
if resp.CreatedAt == nil || time.Time(*resp.CreatedAt).After(t) {
r := TimeResult(t)
resp.CreatedAt = &r
}
}
}
}
}
}
return resp, nil
}

View File

@ -36,8 +36,8 @@ func (p *Piwigo) UploadChunks(filename string, nbJobs int) (*FileUploadResult, e
if p.FileExists(md5) { if p.FileExists(md5) {
return nil, errors.New("file already exists") return nil, errors.New("file already exists")
} }
st, _ := os.Stat(filename)
st, _ := os.Stat(filename)
wg := &sync.WaitGroup{} wg := &sync.WaitGroup{}
chunks, err := Base64Chunker(filename) chunks, err := Base64Chunker(filename)
errout := make(chan error) errout := make(chan error)
@ -67,12 +67,16 @@ func (p *Piwigo) UploadChunks(filename string, nbJobs int) (*FileUploadResult, e
return nil, errors.New(errstring) return nil, errors.New(errstring)
} }
exif, _ := Exif(filename)
var resp *FileUploadResult var resp *FileUploadResult
err = p.Post("pwg.images.add", &url.Values{ data := &url.Values{}
"original_sum": []string{md5}, data.Set("original_sum", md5)
"original_filename": []string{filename}, data.Set("original_filename", filename)
"check_uniqueness": []string{"true"}, data.Set("check_uniqueness", "true")
}, &resp) if exif != nil && exif.CreatedAt != nil {
data.Set("date_creation", exif.CreatedAt.String())
}
err = p.Post("pwg.images.add", data, &resp)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -36,7 +36,7 @@ func (c TimeResult) String() string {
if t.IsZero() { if t.IsZero() {
return "" return ""
} else { } else {
return t.Format(time.RFC3339) return t.Format("2006-01-02 15:04:05")
} }
} }