mirror of
https://github.com/celogeek/piwigo-cli.git
synced 2025-05-25 18:22:37 +02:00
lookup for created at
This commit is contained in:
parent
2b9238885e
commit
3ef95cd07b
1
go.mod
1
go.mod
@ -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
2
go.sum
@ -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
46
internal/piwigo/exif.go
Normal 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
|
||||||
|
}
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user