- Notifications
You must be signed in to change notification settings - Fork55
🎵 ID3 decoding and encoding library for Go
License
NotificationsYou must be signed in to change notification settings
n10v/id3v2
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Implementation of ID3 v2.3 and v2.4 in native Go.
go get -u github.com/bogem/id3v2/v2
https://pkg.go.dev/github.com/bogem/id3v2/v2
package mainimport ("fmt""log""github.com/bogem/id3v2/v2")funcmain() {tag,err:=id3v2.Open("file.mp3", id3v2.Options{Parse:true})iferr!=nil {log.Fatal("Error while opening mp3 file: ",err) }defertag.Close()// Read tagsfmt.Println(tag.Artist())fmt.Println(tag.Title())// Set tagstag.SetArtist("Aphex Twin")tag.SetTitle("Xtal")comment:= id3v2.CommentFrame{Encoding:id3v2.EncodingUTF8,Language:"eng",Description:"My opinion",Text:"I like this song!",}tag.AddCommentFrame(comment)// Write tag to file.mp3iferr=tag.Save();err!=nil {log.Fatal("Error while saving a tag: ",err)}}
pictures:=tag.GetFrames(tag.CommonID("Attached picture"))for_,f:=rangepictures {pic,ok:=f.(id3v2.PictureFrame)if!ok {log.Fatal("Couldn't assert picture frame")}// Do something with picture framefmt.Println(pic.Description)}
For example, if you want to set comment frame with custom encoding,you may do the following:
comment:= id3v2.CommentFrame{Encoding:id3v2.EncodingUTF16,Language:"ger",Description:"Tier",Text:"Der Löwe",}tag.AddCommentFrame(comment)
Text
field will be automatically encoded with UTF-16BE with BOM and written to w.
UTF-8 is default for v2.4, ISO-8859-1 - for v2.3.
About
🎵 ID3 decoding and encoding library for Go
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
Contributors12
Uh oh!
There was an error while loading.Please reload this page.