v2

package
v0.0.0-...-2c6ab3b Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2019 License: MIT Imports: 5 Imported by: 34

Documentation

Overview

Copyright 2013 Michael Yang. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Copyright 2013 Michael Yang. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Copyright 2013 Michael Yang. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Copyright 2013 Michael Yang. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Copyright 2013 Michael Yang. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Index

Constants

View Source
const (
	FrameHeaderSize = 10
)
View Source
const (
	HeaderSize = 10
)
View Source
const (
	V22FrameHeaderSize = 6
)

Variables

View Source
var (
	// Common frame IDs
	V22CommonFrame = map[string]FrameType{
		"Title":    V22FrameTypeMap["TT2"],
		"Artist":   V22FrameTypeMap["TP1"],
		"Album":    V22FrameTypeMap["TAL"],
		"Year":     V22FrameTypeMap["TYE"],
		"Genre":    V22FrameTypeMap["TCO"],
		"Comments": V22FrameTypeMap["COM"],
	}

	// V22FrameTypeMap specifies the frame IDs and constructors allowed in ID3v2.2
	V22FrameTypeMap = map[string]FrameType{
		"BUF": FrameType{/* contains filtered or unexported fields */},
		"CNT": FrameType{/* contains filtered or unexported fields */},
		"COM": FrameType{/* contains filtered or unexported fields */},
		"CRA": FrameType{/* contains filtered or unexported fields */},
		"CRM": FrameType{/* contains filtered or unexported fields */},
		"ETC": FrameType{/* contains filtered or unexported fields */},
		"EQU": FrameType{/* contains filtered or unexported fields */},
		"GEO": FrameType{/* contains filtered or unexported fields */},
		"IPL": FrameType{/* contains filtered or unexported fields */},
		"LNK": FrameType{/* contains filtered or unexported fields */},
		"MCI": FrameType{/* contains filtered or unexported fields */},
		"MLL": FrameType{/* contains filtered or unexported fields */},
		"PIC": FrameType{/* contains filtered or unexported fields */},
		"POP": FrameType{/* contains filtered or unexported fields */},
		"REV": FrameType{/* contains filtered or unexported fields */},
		"RVA": FrameType{/* contains filtered or unexported fields */},
		"SLT": FrameType{/* contains filtered or unexported fields */},
		"STC": FrameType{/* contains filtered or unexported fields */},
		"TAL": FrameType{/* contains filtered or unexported fields */},
		"TBP": FrameType{/* contains filtered or unexported fields */},
		"TCM": FrameType{/* contains filtered or unexported fields */},
		"TCO": FrameType{/* contains filtered or unexported fields */},
		"TCR": FrameType{/* contains filtered or unexported fields */},
		"TDA": FrameType{/* contains filtered or unexported fields */},
		"TDY": FrameType{/* contains filtered or unexported fields */},
		"TEN": FrameType{/* contains filtered or unexported fields */},
		"TFT": FrameType{/* contains filtered or unexported fields */},
		"TIM": FrameType{/* contains filtered or unexported fields */},
		"TKE": FrameType{/* contains filtered or unexported fields */},
		"TLA": FrameType{/* contains filtered or unexported fields */},
		"TLE": FrameType{/* contains filtered or unexported fields */},
		"TMT": FrameType{/* contains filtered or unexported fields */},
		"TOA": FrameType{/* contains filtered or unexported fields */},
		"TOF": FrameType{/* contains filtered or unexported fields */},
		"TOL": FrameType{/* contains filtered or unexported fields */},
		"TOR": FrameType{/* contains filtered or unexported fields */},
		"TOT": FrameType{/* contains filtered or unexported fields */},
		"TP1": FrameType{/* contains filtered or unexported fields */},
		"TP2": FrameType{/* contains filtered or unexported fields */},
		"TP3": FrameType{/* contains filtered or unexported fields */},
		"TP4": FrameType{/* contains filtered or unexported fields */},
		"TPA": FrameType{/* contains filtered or unexported fields */},
		"TPB": FrameType{/* contains filtered or unexported fields */},
		"TRC": FrameType{/* contains filtered or unexported fields */},
		"TRD": FrameType{/* contains filtered or unexported fields */},
		"TRK": FrameType{/* contains filtered or unexported fields */},
		"TSI": FrameType{/* contains filtered or unexported fields */},
		"TSS": FrameType{/* contains filtered or unexported fields */},
		"TT1": FrameType{/* contains filtered or unexported fields */},
		"TT2": FrameType{/* contains filtered or unexported fields */},
		"TT3": FrameType{/* contains filtered or unexported fields */},
		"TXT": FrameType{/* contains filtered or unexported fields */},
		"TXX": FrameType{/* contains filtered or unexported fields */},
		"TYE": FrameType{/* contains filtered or unexported fields */},
		"UFI": FrameType{/* contains filtered or unexported fields */},
		"ULT": FrameType{/* contains filtered or unexported fields */},
		"WAF": FrameType{/* contains filtered or unexported fields */},
		"WAR": FrameType{/* contains filtered or unexported fields */},
		"WAS": FrameType{/* contains filtered or unexported fields */},
		"WCM": FrameType{/* contains filtered or unexported fields */},
		"WCP": FrameType{/* contains filtered or unexported fields */},
		"WPB": FrameType{/* contains filtered or unexported fields */},
		"WXX": FrameType{/* contains filtered or unexported fields */},
	}
)
View Source
var (
	// Common frame IDs
	V23CommonFrame = map[string]FrameType{
		"Title":    V23FrameTypeMap["TIT2"],
		"Artist":   V23FrameTypeMap["TPE1"],
		"Album":    V23FrameTypeMap["TALB"],
		"Year":     V23FrameTypeMap["TYER"],
		"Genre":    V23FrameTypeMap["TCON"],
		"Comments": V23FrameTypeMap["COMM"],
	}

	// V23DeprecatedTypeMap contains deprecated frame IDs from ID3v2.2
	V23DeprecatedTypeMap = map[string]string{
		"BUF": "RBUF", "COM": "COMM", "CRA": "AENC", "EQU": "EQUA",
		"ETC": "ETCO", "GEO": "GEOB", "MCI": "MCDI", "MLL": "MLLT",
		"PIC": "APIC", "POP": "POPM", "REV": "RVRB", "RVA": "RVAD",
		"SLT": "SYLT", "STC": "SYTC", "TAL": "TALB", "TBP": "TBPM",
		"TCM": "TCOM", "TCO": "TCON", "TCR": "TCOP", "TDA": "TDAT",
		"TDY": "TDLY", "TEN": "TENC", "TFT": "TFLT", "TIM": "TIME",
		"TKE": "TKEY", "TLA": "TLAN", "TLE": "TLEN", "TMT": "TMED",
		"TOA": "TOPE", "TOF": "TOFN", "TOL": "TOLY", "TOR": "TORY",
		"TOT": "TOAL", "TP1": "TPE1", "TP2": "TPE2", "TP3": "TPE3",
		"TP4": "TPE4", "TPA": "TPOS", "TPB": "TPUB", "TRC": "TSRC",
		"TRD": "TRDA", "TRK": "TRCK", "TSI": "TSIZ", "TSS": "TSSE",
		"TT1": "TIT1", "TT2": "TIT2", "TT3": "TIT3", "TXT": "TEXT",
		"TXX": "TXXX", "TYE": "TYER", "UFI": "UFID", "ULT": "USLT",
		"WAF": "WOAF", "WAR": "WOAR", "WAS": "WOAS", "WCM": "WCOM",
		"WCP": "WCOP", "WPB": "WPB", "WXX": "WXXX",
	}

	// V23FrameTypeMap specifies the frame IDs and constructors allowed in ID3v2.3
	V23FrameTypeMap = map[string]FrameType{
		"AENC": FrameType{/* contains filtered or unexported fields */},
		"APIC": FrameType{/* contains filtered or unexported fields */},
		"COMM": FrameType{/* contains filtered or unexported fields */},
		"COMR": FrameType{/* contains filtered or unexported fields */},
		"ENCR": FrameType{/* contains filtered or unexported fields */},
		"EQUA": FrameType{/* contains filtered or unexported fields */},
		"ETCO": FrameType{/* contains filtered or unexported fields */},
		"GEOB": FrameType{/* contains filtered or unexported fields */},
		"GRID": FrameType{/* contains filtered or unexported fields */},
		"IPLS": FrameType{/* contains filtered or unexported fields */},
		"LINK": FrameType{/* contains filtered or unexported fields */},
		"MCDI": FrameType{/* contains filtered or unexported fields */},
		"MLLT": FrameType{/* contains filtered or unexported fields */},
		"OWNE": FrameType{/* contains filtered or unexported fields */},
		"PRIV": FrameType{/* contains filtered or unexported fields */},
		"PCNT": FrameType{/* contains filtered or unexported fields */},
		"POPM": FrameType{/* contains filtered or unexported fields */},
		"POSS": FrameType{/* contains filtered or unexported fields */},
		"RBUF": FrameType{/* contains filtered or unexported fields */},
		"RVAD": FrameType{/* contains filtered or unexported fields */},
		"RVRB": FrameType{/* contains filtered or unexported fields */},
		"SYLT": FrameType{/* contains filtered or unexported fields */},
		"SYTC": FrameType{/* contains filtered or unexported fields */},
		"TALB": FrameType{/* contains filtered or unexported fields */},
		"TBPM": FrameType{/* contains filtered or unexported fields */},
		"TCOM": FrameType{/* contains filtered or unexported fields */},
		"TCON": FrameType{/* contains filtered or unexported fields */},
		"TCOP": FrameType{/* contains filtered or unexported fields */},
		"TDAT": FrameType{/* contains filtered or unexported fields */},
		"TDLY": FrameType{/* contains filtered or unexported fields */},
		"TENC": FrameType{/* contains filtered or unexported fields */},
		"TEXT": FrameType{/* contains filtered or unexported fields */},
		"TFLT": FrameType{/* contains filtered or unexported fields */},
		"TIME": FrameType{/* contains filtered or unexported fields */},
		"TIT1": FrameType{/* contains filtered or unexported fields */},
		"TIT2": FrameType{/* contains filtered or unexported fields */},
		"TIT3": FrameType{/* contains filtered or unexported fields */},
		"TKEY": FrameType{/* contains filtered or unexported fields */},
		"TLAN": FrameType{/* contains filtered or unexported fields */},
		"TLEN": FrameType{/* contains filtered or unexported fields */},
		"TMED": FrameType{/* contains filtered or unexported fields */},
		"TOAL": FrameType{/* contains filtered or unexported fields */},
		"TOFN": FrameType{/* contains filtered or unexported fields */},
		"TOLY": FrameType{/* contains filtered or unexported fields */},
		"TOPE": FrameType{/* contains filtered or unexported fields */},
		"TORY": FrameType{/* contains filtered or unexported fields */},
		"TOWN": FrameType{/* contains filtered or unexported fields */},
		"TPE1": FrameType{/* contains filtered or unexported fields */},
		"TPE2": FrameType{/* contains filtered or unexported fields */},
		"TPE3": FrameType{/* contains filtered or unexported fields */},
		"TPE4": FrameType{/* contains filtered or unexported fields */},
		"TPOS": FrameType{/* contains filtered or unexported fields */},
		"TPUB": FrameType{/* contains filtered or unexported fields */},
		"TRCK": FrameType{/* contains filtered or unexported fields */},
		"TRDA": FrameType{/* contains filtered or unexported fields */},
		"TRSN": FrameType{/* contains filtered or unexported fields */},
		"TRSO": FrameType{/* contains filtered or unexported fields */},
		"TSIZ": FrameType{/* contains filtered or unexported fields */},
		"TSRC": FrameType{/* contains filtered or unexported fields */},
		"TSSE": FrameType{/* contains filtered or unexported fields */},
		"TYER": FrameType{/* contains filtered or unexported fields */},
		"TXXX": FrameType{/* contains filtered or unexported fields */},
		"UFID": FrameType{/* contains filtered or unexported fields */},
		"USER": FrameType{/* contains filtered or unexported fields */},
		"TCMP": FrameType{/* contains filtered or unexported fields */},
		"USLT": FrameType{/* contains filtered or unexported fields */},
		"WCOM": FrameType{/* contains filtered or unexported fields */},
		"WCOP": FrameType{/* contains filtered or unexported fields */},
		"WOAF": FrameType{/* contains filtered or unexported fields */},
		"WOAR": FrameType{/* contains filtered or unexported fields */},
		"WOAS": FrameType{/* contains filtered or unexported fields */},
		"WORS": FrameType{/* contains filtered or unexported fields */},
		"WPAY": FrameType{/* contains filtered or unexported fields */},
		"WPUB": FrameType{/* contains filtered or unexported fields */},
		"WXXX": FrameType{/* contains filtered or unexported fields */},
	}
)

Functions

func V22Bytes

func V22Bytes(f Framer) []byte

func V23Bytes

func V23Bytes(f Framer) []byte

Types

type DataFrame

type DataFrame struct {
	FrameHead
	// contains filtered or unexported fields
}

DataFrame is the default frame for binary data

func NewDataFrame

func NewDataFrame(ft FrameType, data []byte) *DataFrame

func (DataFrame) Bytes

func (f DataFrame) Bytes() []byte

func (DataFrame) Data

func (f DataFrame) Data() []byte

func (*DataFrame) SetData

func (f *DataFrame) SetData(b []byte)

func (DataFrame) String

func (f DataFrame) String() string

type DescTextFrame

type DescTextFrame struct {
	TextFrame
	// contains filtered or unexported fields
}

func NewDescTextFrame

func NewDescTextFrame(ft FrameType, desc, text string) *DescTextFrame

func (DescTextFrame) Bytes

func (f DescTextFrame) Bytes() []byte

func (DescTextFrame) Description

func (f DescTextFrame) Description() string

func (*DescTextFrame) SetDescription

func (f *DescTextFrame) SetDescription(description string) error

func (*DescTextFrame) SetEncoding

func (f *DescTextFrame) SetEncoding(encoding string) error

func (DescTextFrame) String

func (f DescTextFrame) String() string

type FrameHead

type FrameHead struct {
	FrameType
	// contains filtered or unexported fields
}

FrameHead represents the header of each frame Additional metadata is kept through the embedded frame type These do not usually need to be manually created

func (FrameHead) FormatFlags

func (h FrameHead) FormatFlags() byte

func (FrameHead) Size

func (h FrameHead) Size() uint

func (FrameHead) StatusFlags

func (h FrameHead) StatusFlags() byte

type FrameType

type FrameType struct {
	// contains filtered or unexported fields
}

FrameType holds frame id metadata and constructor method A set number of these are created in the version specific files

func (FrameType) Id

func (ft FrameType) Id() string

type Framer

type Framer interface {
	Id() string
	Size() uint
	StatusFlags() byte
	FormatFlags() byte
	String() string
	Bytes() []byte
	// contains filtered or unexported methods
}

Framer provides a generic interface for frames This is the default type returned when creating frames

func ParseDataFrame

func ParseDataFrame(head FrameHead, data []byte) Framer

func ParseDescTextFrame

func ParseDescTextFrame(head FrameHead, data []byte) Framer

DescTextFrame represents frames that contain encoded text and descriptions

func ParseIdFrame

func ParseIdFrame(head FrameHead, data []byte) Framer

func ParseImageFrame

func ParseImageFrame(head FrameHead, data []byte) Framer

func ParseTextFrame

func ParseTextFrame(head FrameHead, data []byte) Framer

func ParseUnsynchTextFrame

func ParseUnsynchTextFrame(head FrameHead, data []byte) Framer

func ParseV22Frame

func ParseV22Frame(reader io.Reader) Framer

func ParseV23Frame

func ParseV23Frame(reader io.Reader) Framer
type Header struct {
	// contains filtered or unexported fields
}

Header represents the data of the header of the entire tag

func ParseHeader

func ParseHeader(reader io.Reader) *Header

func (Header) Bytes

func (h Header) Bytes() []byte

func (Header) Size

func (h Header) Size() int

func (Header) Version

func (h Header) Version() string

type IdFrame

type IdFrame struct {
	FrameHead
	// contains filtered or unexported fields
}

IdFrame represents identification tags

func NewIdFrame

func NewIdFrame(ft FrameType, ownerId string, id []byte) *IdFrame

func (IdFrame) Bytes

func (f IdFrame) Bytes() []byte

func (IdFrame) Identifier

func (f IdFrame) Identifier() []byte

func (IdFrame) OwnerIdentifier

func (f IdFrame) OwnerIdentifier() string

func (*IdFrame) SetIdentifier

func (f *IdFrame) SetIdentifier(id []byte) error

func (*IdFrame) SetOwnerIdentifier

func (f *IdFrame) SetOwnerIdentifier(ownerId string)

func (IdFrame) String

func (f IdFrame) String() string

type ImageFrame

type ImageFrame struct {
	DataFrame
	// contains filtered or unexported fields
}

ImageFrame represent frames that have media attached

func (ImageFrame) Bytes

func (f ImageFrame) Bytes() []byte

func (ImageFrame) Encoding

func (f ImageFrame) Encoding() string

func (ImageFrame) MIMEType

func (f ImageFrame) MIMEType() string

func (*ImageFrame) SetEncoding

func (f *ImageFrame) SetEncoding(encoding string) error

func (*ImageFrame) SetMIMEType

func (f *ImageFrame) SetMIMEType(mimeType string)

func (ImageFrame) String

func (f ImageFrame) String() string

type Tag

type Tag struct {
	*Header
	// contains filtered or unexported fields
}

Tag represents an ID3v2 tag

func NewTag

func NewTag(version byte) *Tag

Creates a new tag

func ParseTag

func ParseTag(readSeeker io.ReadSeeker) *Tag

Parses a new tag

func (*Tag) AddFrames

func (t *Tag) AddFrames(frames ...Framer)

Add frames

func (Tag) Album

func (t Tag) Album() string

func (Tag) AllFrames

func (t Tag) AllFrames() []Framer

All frames

func (Tag) Artist

func (t Tag) Artist() string

func (Tag) Bytes

func (t Tag) Bytes() []byte

func (Tag) Comments

func (t Tag) Comments() []string

func (*Tag) DeleteFrames

func (t *Tag) DeleteFrames(id string) []Framer

Delete and return all frames with specified ID

func (Tag) Dirty

func (t Tag) Dirty() bool

Modified status of the tag

func (Tag) Frame

func (t Tag) Frame(id string) Framer

First frame with specified ID

func (Tag) Frames

func (t Tag) Frames(id string) []Framer

All frames with specified ID

func (Tag) Genre

func (t Tag) Genre() string

func (Tag) Padding

func (t Tag) Padding() uint

The amount of padding in the tag

func (Tag) RealSize

func (t Tag) RealSize() int

Real size of the tag

func (*Tag) SetAlbum

func (t *Tag) SetAlbum(text string)

func (*Tag) SetArtist

func (t *Tag) SetArtist(text string)

func (*Tag) SetGenre

func (t *Tag) SetGenre(text string)

func (*Tag) SetTitle

func (t *Tag) SetTitle(text string)

func (*Tag) SetYear

func (t *Tag) SetYear(text string)

func (Tag) Title

func (t Tag) Title() string

func (Tag) Year

func (t Tag) Year() string

type TextFrame

type TextFrame struct {
	FrameHead
	// contains filtered or unexported fields
}

TextFrame represents frames that contain encoded text

func NewTextFrame

func NewTextFrame(ft FrameType, text string) *TextFrame

func (TextFrame) Bytes

func (f TextFrame) Bytes() []byte

func (TextFrame) Encoding

func (f TextFrame) Encoding() string

func (*TextFrame) SetEncoding

func (f *TextFrame) SetEncoding(encoding string) error

func (*TextFrame) SetText

func (f *TextFrame) SetText(text string) error

func (TextFrame) String

func (f TextFrame) String() string

func (TextFrame) Text

func (f TextFrame) Text() string

type TextFramer

type TextFramer interface {
	Framer
	Encoding() string
	SetEncoding(string) error
	Text() string
	SetText(string) error
}

TextFramer represents frames that contain encoded text

type UnsynchTextFrame

type UnsynchTextFrame struct {
	DescTextFrame
	// contains filtered or unexported fields
}

UnsynchTextFrame represents frames that contain unsynchronized text

func NewUnsynchTextFrame

func NewUnsynchTextFrame(ft FrameType, desc, text string) *UnsynchTextFrame

func (UnsynchTextFrame) Bytes

func (f UnsynchTextFrame) Bytes() []byte

func (UnsynchTextFrame) Language

func (f UnsynchTextFrame) Language() string

func (*UnsynchTextFrame) SetLanguage

func (f *UnsynchTextFrame) SetLanguage(language string) error

func (UnsynchTextFrame) String

func (f UnsynchTextFrame) String() string

Jump to

Keyboard shortcuts

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