GitHub - barasher/go-exiftool: Golang wrapper for Exiftool : extract as much metadata as possible (EXIF, ...) from files (pictures, pdf, office documents, ...) (original) (raw)

go-exiftool

Mentioned in Awesome Go Build Status go report card GoDoc codecov

go-exiftool is a golang library that wraps ExifTool.

ExifTool's purpose is to extract and update as much metadata as possible (EXIF, IPTC, XMP, GPS, ...) from a lots of differents file types (Office documents, pictures, movies, PDF, ...).

go-exiftool uses ExifTool's stayopen feature to optimize performance.

Requirements

go-exiftool needs ExifTool to be installed.

By default, go-exiftool binary will look for exiftool binary in $PATH, but another location can be specified (see SetExiftoolBinaryPath functional option).

Usage

Metadata extraction

et, err := exiftool.NewExiftool() if err != nil { fmt.Printf("Error when intializing: %v\n", err) return } defer et.Close()

fileInfos := et.ExtractMetadata("testdata/20190404_131804.jpg")

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 {
    fmt.Printf("[%v] %v\n", k, v)
}

}

Output :

[FOV] 69.4 deg
[Orientation] Rotate 90 CW
[ColorSpace] sRGB
[Compression] JPEG (old-style)
[YCbCrSubSampling] YCbCr4:2:2 (2 1)
[Aperture] 1.7
[ColorComponents] 3
[SubSecCreateDate] 2019:04:04 13🔞03.0937
[FileSize] 26 kB
[FileAccessDate] 2019:05:17 22:44:26+02:00
[DateTimeOriginal] 2019:04:04 13🔞03
[CreateDate] 2019:04:04 13🔞03
(...)

Metadata update

See example function ExampleExiftool_Write in exiftool_sample_test.go

Changelog