id3ed

package module
v0.0.0-...-8b1d50a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 24, 2021 License: MIT Imports: 4 Imported by: 0

README

∙ ID3ED (ID3 - Encoder - Decoder)

⚬ Library for encoding/decoding ID3 tags


Status of the package

ID3v1. can:

  • read
  • write

ID3v1 Enhanced. can:

  • read
  • write

ID3v2. can:

  • read
  • write

∙ Installation

To download package source:

go get github.com/Unbewohnte/id3ed/...

will be deprecated in 1.17 as far as I know

To donwload and compile package:

go install github.com/Unbewohnte/id3ed/...

∙ Example

⚬ Read/Write v1&&v2 tags

package main

import(
    "fmt"
    "github.com/Unbewohnte/id3ed"
    id3v1 "github.com/Unbewohnte/id3ed/v1"
    id3v2 "github.com/Unbewohnte/id3ed/v2"
)

func main() {
    f, err := id3ed.Open("/path/to/mp3/myMP3.mp3")
    if err != nil {
        panic(err)
    }
    
    // reading and writing tags is easy and done by one struct !

    // print all v2 frames
    if f.ContainsID3v2 {
        for_, frame := range f.ID3v2Tag.Frames{
           fmt.Printf("%s\n", frame.Header.ID)
        }
    }

    // create your own v2 tag from custom frames
    myframe, _ := id3v2.NewFrame("TXXX", []byte("Very important data (ᗜˬᗜ)") ,true)
    v2tag := id3v2.NewTAG([]id3v2.Frame{*myframe})

    // replace v2 tag of the file
    f.WriteID3v2(v2tag)
    


    // create your own ID3v1 tag 
    tag := &id3v1.ID3v1Tag{
            SongName: "mysong",
            Artist:   "me",
            Album:    "my album",
            Year:     2021,
            Comment:  "Cool song",
            Track:    1,
            Genre:    "Christian Gangsta Rap", // for list of genres see: "./v1/genres.go"
	}

    // write your v1 tag
    err = f.WriteID3v1(tag)
    if err != nil {
        panic(err)
    }
    
    // etc. 
}

∙ Testing

To test everything

go test ./...

or

go test -v ./...

to get a verbose output

OR

go test ./package_name_here

to test a specific package


∙ License

MIT LICENSE

∙ Note

This is NOT a fully tested and it is NOT a flawlessly working and edge-cases-covered package.

I work on it alone and I am NOT a professional who knows what he does.

Please, use with caution !

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type File

type File struct {
	ContainsID3v1 bool
	ContainsID3v2 bool
	ID3v1Tag      *v1.ID3v1Tag
	ID3v2Tag      *v2.ID3v2Tag
	// contains filtered or unexported fields
}

func Open

func Open(path string) (*File, error)

Opens file specified by `path`, reads all ID3 tags that it can find and returns a *File

func (*File) WriteID3v1

func (f *File) WriteID3v1(tag *v1.ID3v1Tag) error

Writes given ID3v1 tag to file

func (*File) WriteID3v2

func (f *File) WriteID3v2(tag *v2.ID3v2Tag) error

Writes given ID3v2 tag to file

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL