Skip to content

Commit

Permalink
feat: eat my own down food
Browse files Browse the repository at this point in the history
a.k.a. use my own tiff-parser library
  • Loading branch information
fedragon committed Dec 6, 2024
1 parent 720f04b commit 8c4691f
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 350 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ require (
github.com/dsoprea/go-iptc v0.0.0-20200610044640-bc9ca208b413 // indirect
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect
github.com/dsoprea/go-photoshop-info-format v0.0.0-20200610045659-121dd752914d // indirect
github.com/fedragon/tiff-parser v0.2.0 // indirect
github.com/go-errors/errors v1.5.1 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349/go.mod h1:KVK+/
github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e/go.mod h1:uAzdkPTub5Y9yQwXe8W4m2XuP0tK4a9Q/dantD0+uaU=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fedragon/tiff-parser v0.1.0 h1:Wu7FiKxfzvSflxBu4ymzqyPAtW05S0/3/FOjZQKzadQ=
github.com/fedragon/tiff-parser v0.1.0/go.mod h1:YBJnorsx1hBQkvw4r9VpFppMHuIcG/APTL22WGEUx/8=
github.com/fedragon/tiff-parser v0.2.0 h1:yvnoOa3u+Sp4E7BVq1TNIUDTsdB1fnNak8pDzxCRSWo=
github.com/fedragon/tiff-parser v0.2.0/go.mod h1:YBJnorsx1hBQkvw4r9VpFppMHuIcG/APTL22WGEUx/8=
github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
Expand Down
7 changes: 0 additions & 7 deletions internal/header/constants.go

This file was deleted.

23 changes: 16 additions & 7 deletions internal/header/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
heic "github.com/dsoprea/go-heic-exif-extractor"
jpeg "github.com/dsoprea/go-jpeg-image-structure"
image "github.com/dsoprea/go-utility/image"
"github.com/fedragon/tiff-parser/tiff"
)

var parsers = map[string]image.MediaParser{
Expand All @@ -19,7 +20,7 @@ var parsers = map[string]image.MediaParser{
".heic": heic.NewHeicExifMediaParser(),
}

var tiff = map[string]struct{}{
var tiffs = map[string]struct{}{
".cr2": {},
".orf": {},
".tiff": {},
Expand All @@ -44,21 +45,29 @@ func ParseCreatedAt(path string) (time.Time, error) {
return createdAt, nil
}

if _, ok := tiff[ext]; ok {
if _, ok := tiffs[ext]; ok {
var reader io.ReadSeekCloser
reader, err = os.Open(path)
if err != nil {
return time.Time{}, err
}
defer reader.Close()
createdAt, done, err = parseFromTiff(reader)

if err != nil && err.Error() != "no exif data" {
parser, err := tiff.NewParser(reader)
if err != nil {
return time.Time{}, err
}

entries, err := parser.Parse(tiff.DateTimeOriginal)
if err != nil {
return time.Time{}, err
}

if done {
return createdAt, nil
if en, ok := entries[tiff.DateTimeOriginal]; ok {
switch en.DataType {
case tiff.DataType_String:
return time.Parse("2006:01:02 15:04:05", *en.Value.String)
}
}
}

Expand All @@ -78,7 +87,7 @@ func parse(parser image.MediaParser, path string) (time.Time, error, bool) {
if err != nil {
return time.Time{}, err, false
}
tags, err := exif.FindTagWithId(dateTimeOriginal)
tags, err := exif.FindTagWithId(0x9003) // dateTimeOriginal
if err != nil {
return time.Time{}, err, false
}
Expand Down
211 changes: 0 additions & 211 deletions internal/header/tiff.go

This file was deleted.

Loading

0 comments on commit 8c4691f

Please sign in to comment.