ID3, MP4 and OGG/FLAC metadata parsing in Go
Go to file
David Howden 4c2b34fa94 Reorganised Vorbis Comment parsing into own type
- Added FileType to Metadata to distinguish between FLAC and OGG
- TODO: fix ALAC files being identified as AAC
2015-05-24 10:44:45 +10:00
check Added tool for checking tags over iTunes Library or path 2015-05-24 09:52:44 +10:00
sum Refactored Hash -> Sum and fixed infinite loop issue with SumAtoms 2015-04-03 15:13:39 +11:00
tag Reorganised Vorbis Comment parsing into own type 2015-05-24 10:44:45 +10:00
.editorconfig Add a basic editorconfig file 2015-05-01 22:44:59 +10:00
.travis.yml Added .travis.yml 2015-03-20 09:02:27 +11:00
flac.go Reorganised Vorbis Comment parsing into own type 2015-05-24 10:44:45 +10:00
id3v1.go Reorganised Vorbis Comment parsing into own type 2015-05-24 10:44:45 +10:00
id3v2_test.go Add license comment to unsynchroniser tests 2015-05-03 09:58:40 +10:00
id3v2.go Add support for lyrics. 2015-05-19 22:06:16 +10:00
id3v2frames.go Fix errors caused by incorrect delimiters 2015-05-19 22:09:51 +10:00
id3v2metadata_test.go Initial commit 2015-03-19 23:21:53 +11:00
id3v2metadata.go Reorganised Vorbis Comment parsing into own type 2015-05-24 10:44:45 +10:00
LICENSE Initial commit 2015-03-19 23:21:53 +11:00
mp4.go Reorganised Vorbis Comment parsing into own type 2015-05-24 10:44:45 +10:00
ogg.go Reorganised Vorbis Comment parsing into own type 2015-05-24 10:44:45 +10:00
README.md Updated README 2015-04-15 00:14:53 +10:00
sum.go Fixed godoc 2015-04-27 22:53:37 +10:00
tag.go Reorganised Vorbis Comment parsing into own type 2015-05-24 10:44:45 +10:00
util_test.go Add some basic tests for utils 2015-05-03 09:59:03 +10:00
util.go Implemented basic FLAC support (no artwork, yet!) 2015-04-15 00:12:37 +10:00
vorbis.go Reorganised Vorbis Comment parsing into own type 2015-05-24 10:44:45 +10:00

MP3/MP4/FLAC metadata parsing library

Build Status GoDoc

This package provides MP3 (ID3v1,2.{2,3,4}) and MP4 (ACC, M4A, ALAC) and FLAC metadata detection, parsing and artwork extraction.

Parsed metadata is exported via a single interface (giving a consistent API for all supported metadata formats).

// Metadata is an interface which is used to describe metadata retrieved by this package.
type Metadata interface {
	Format() Format

	Title() string
	Album() string
	Artist() string
	AlbumArtist() string
	Composer() string
	Year() int

	Track() (int, int) // Number, Total
	Disc() (int, int) // Number, Total

	Picture() *Picture // Artwork

	Raw() map[string]interface{} // NB: raw tag names are not consistent across formats.
}

Audio Data Checksum (SHA1)

This package also provides a metadata-invariant checksum for audio files: only the audio data is used to construct the checksum.

http://godoc.org/github.com/dhowden/tag#Sum

Example Usage

There are a simple command-line tools which demonstrate basic tag extraction and summing:

$ go get github.com/dhowden/tag/...
$ cd $GOPATH/bin
$ ./tag 11\ High\ Hopes.m4a
Metadata Format: MP4
 Title: High Hopes
 Album: The Division Bell
 Artist: Pink Floyd
 Composer: Abbey Road Recording Studios/David Gilmour/Polly Samson
 Year: 1994
 Track: 11 of 11
 Disc: 1 of 1
 Picture: Picture{Ext: jpeg, MIMEType: image/jpeg, Type: , Description: , Data.Size: 606109}

$ ./sum 11\ High\ Hopes.m4a
2ae208c5f00a1f21f5fac9b7f6e0b8e52c06da29