- Notifications
You must be signed in to change notification settings - Fork52
🎵 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