Popularity
5.5
Growing
Activity
0.0
Declining
191
7
30

Programming language: Go
License: MIT License
Tags: Audio/Music    
Latest version: v1.2.0

id3v2 alternatives and similar packages

Based on the "Audio/Music" category.
Alternatively, view id3v2 alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of id3v2 or a related project?

Add another 'Audio/Music' Package

README

id3v2

Supported ID3 versions: 2.3, 2.4

Installation

go get -u github.com/bogem/id3v2

Usage example

package main

import (
    "fmt"
    "log"

    "github.com/bogem/id3v2"
)

func main() {
    tag, err := id3v2.Open("file.mp3", id3v2.Options{Parse: true})
    if err != nil {
        log.Fatal("Error while opening mp3 file: ", err)
    }
    defer tag.Close()

    // Read tags.
    fmt.Println(tag.Artist())
    fmt.Println(tag.Title())

    // Set tags.
    tag.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.mp3.
    if err = tag.Save(); err != nil {
        log.Fatal("Error while saving a tag: ", err)
    }
}

Read multiple frames

pictures := tag.GetFrames(tag.CommonID("Attached picture"))
for _, f := range pictures {
    pic, ok := f.(id3v2.PictureFrame)
    if !ok {
        log.Fatal("Couldn't assert picture frame")
    }

    // Do something with picture frame.
    fmt.Println(pic.Description)
}

Encodings

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.