kopia lustrzana https://github.com/jcs/id3-go
Rename constructors to Go conventions
rodzic
f04d3d3cd0
commit
56c3353775
10
frame.go
10
frame.go
|
@ -81,7 +81,7 @@ type DataFrame struct {
|
|||
data []byte
|
||||
}
|
||||
|
||||
func NewDataFrame(head FrameHead, data []byte) Framer {
|
||||
func ParseDataFrame(head FrameHead, data []byte) Framer {
|
||||
return &DataFrame{head, data}
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,7 @@ type TextFrame struct {
|
|||
text string
|
||||
}
|
||||
|
||||
func NewTextFrame(head FrameHead, data []byte) Framer {
|
||||
func ParseTextFrame(head FrameHead, data []byte) Framer {
|
||||
var err error
|
||||
f := &TextFrame{FrameHead: head}
|
||||
rd := newReader(data)
|
||||
|
@ -191,7 +191,7 @@ type DescTextFrame struct {
|
|||
}
|
||||
|
||||
// DescTextFrame represents frames that contain encoded text and descriptions
|
||||
func NewDescTextFrame(head FrameHead, data []byte) Framer {
|
||||
func ParseDescTextFrame(head FrameHead, data []byte) Framer {
|
||||
var err error
|
||||
f := &DescTextFrame{FrameHead: head}
|
||||
rd := newReader(data)
|
||||
|
@ -257,7 +257,7 @@ type UnsynchTextFrame struct {
|
|||
language string
|
||||
}
|
||||
|
||||
func NewUnsynchTextFrame(head FrameHead, data []byte) Framer {
|
||||
func ParseUnsynchTextFrame(head FrameHead, data []byte) Framer {
|
||||
var err error
|
||||
f := &UnsynchTextFrame{FrameHead: head}
|
||||
rd := newReader(data)
|
||||
|
@ -332,7 +332,7 @@ type ImageFrame struct {
|
|||
description string
|
||||
}
|
||||
|
||||
func NewImageFrame(head FrameHead, data []byte) Framer {
|
||||
func ParseImageFrame(head FrameHead, data []byte) Framer {
|
||||
var err error
|
||||
f := &ImageFrame{FrameHead: head}
|
||||
rd := newReader(data)
|
||||
|
|
2
id3.go
2
id3.go
|
@ -50,7 +50,7 @@ func Open(name string) (*File, error) {
|
|||
}
|
||||
|
||||
rd := bufio.NewReader(fi)
|
||||
tag := NewTag(rd)
|
||||
tag := ParseTag(rd)
|
||||
data, err := ioutil.ReadAll(rd)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
12
id3v2.go
12
id3v2.go
|
@ -24,9 +24,9 @@ type Tag struct {
|
|||
}
|
||||
|
||||
// Creates a new tag
|
||||
func NewTag(reader io.Reader) *Tag {
|
||||
func ParseTag(reader io.Reader) *Tag {
|
||||
t := &Tag{
|
||||
Header: NewHeader(reader),
|
||||
Header: ParseHeader(reader),
|
||||
frames: make(map[string][]Framer),
|
||||
}
|
||||
|
||||
|
@ -37,17 +37,17 @@ func NewTag(reader io.Reader) *Tag {
|
|||
switch t.Header.Version() {
|
||||
case "2.2.0":
|
||||
t.commonMap = V22CommonFrame
|
||||
t.frameConstructor = NewV22Frame
|
||||
t.frameConstructor = ParseV22Frame
|
||||
t.frameHeaderSize = V22FrameHeaderSize
|
||||
t.frameBytesConstructor = V22Bytes
|
||||
case "2.3.0":
|
||||
t.commonMap = V23CommonFrame
|
||||
t.frameConstructor = NewV23Frame
|
||||
t.frameConstructor = ParseV23Frame
|
||||
t.frameHeaderSize = FrameHeaderSize
|
||||
t.frameBytesConstructor = V23Bytes
|
||||
default:
|
||||
t.commonMap = V23CommonFrame
|
||||
t.frameConstructor = NewV23Frame
|
||||
t.frameConstructor = ParseV23Frame
|
||||
t.frameHeaderSize = FrameHeaderSize
|
||||
t.frameBytesConstructor = V23Bytes
|
||||
}
|
||||
|
@ -267,7 +267,7 @@ func (t *Tag) setTextFrameText(id, text string) {
|
|||
}
|
||||
}
|
||||
|
||||
func NewHeader(reader io.Reader) Header {
|
||||
func ParseHeader(reader io.Reader) Header {
|
||||
data := make([]byte, HeaderSize)
|
||||
n, err := io.ReadFull(reader, data)
|
||||
if n < HeaderSize || err != nil || string(data[:3]) != "ID3" {
|
||||
|
|
128
id3v22.go
128
id3v22.go
|
@ -24,73 +24,73 @@ var (
|
|||
|
||||
// V22FrameTypeMap specifies the frame IDs and constructors allowed in ID3v2.2
|
||||
V22FrameTypeMap = map[string]FrameType{
|
||||
"BUF": FrameType{id: "BUF", description: "Recommended buffer size", constructor: NewDataFrame},
|
||||
"CNT": FrameType{id: "CNT", description: "Play counter", constructor: NewDataFrame},
|
||||
"COM": FrameType{id: "COM", description: "Comments", constructor: NewUnsynchTextFrame},
|
||||
"CRA": FrameType{id: "CRA", description: "Audio encryption", constructor: NewDataFrame},
|
||||
"CRM": FrameType{id: "CRM", description: "Encrypted meta frame", constructor: NewDataFrame},
|
||||
"ETC": FrameType{id: "ETC", description: "Event timing codes", constructor: NewDataFrame},
|
||||
"EQU": FrameType{id: "EQU", description: "Equalization", constructor: NewDataFrame},
|
||||
"GEO": FrameType{id: "GEO", description: "General encapsulated object", constructor: NewDataFrame},
|
||||
"IPL": FrameType{id: "IPL", description: "Involved people list", constructor: NewDataFrame},
|
||||
"LNK": FrameType{id: "LNK", description: "Linked information", constructor: NewDataFrame},
|
||||
"MCI": FrameType{id: "MCI", description: "Music CD Identifier", constructor: NewDataFrame},
|
||||
"MLL": FrameType{id: "MLL", description: "MPEG location lookup table", constructor: NewDataFrame},
|
||||
"PIC": FrameType{id: "PIC", description: "Attached picture", constructor: NewDataFrame},
|
||||
"POP": FrameType{id: "POP", description: "Popularimeter", constructor: NewDataFrame},
|
||||
"REV": FrameType{id: "REV", description: "Reverb", constructor: NewDataFrame},
|
||||
"RVA": FrameType{id: "RVA", description: "Relative volume adjustment", constructor: NewDataFrame},
|
||||
"SLT": FrameType{id: "SLT", description: "Synchronized lyric/text", constructor: NewDataFrame},
|
||||
"STC": FrameType{id: "STC", description: "Synced tempo codes", constructor: NewDataFrame},
|
||||
"TAL": FrameType{id: "TAL", description: "Album/Movie/Show title", constructor: NewTextFrame},
|
||||
"TBP": FrameType{id: "TBP", description: "BPM (Beats Per Minute)", constructor: NewTextFrame},
|
||||
"TCM": FrameType{id: "TCM", description: "Composer", constructor: NewTextFrame},
|
||||
"TCO": FrameType{id: "TCO", description: "Content type", constructor: NewTextFrame},
|
||||
"TCR": FrameType{id: "TCR", description: "Copyright message", constructor: NewTextFrame},
|
||||
"TDA": FrameType{id: "TDA", description: "Date", constructor: NewTextFrame},
|
||||
"TDY": FrameType{id: "TDY", description: "Playlist delay", constructor: NewTextFrame},
|
||||
"TEN": FrameType{id: "TEN", description: "Encoded by", constructor: NewTextFrame},
|
||||
"TFT": FrameType{id: "TFT", description: "File type", constructor: NewTextFrame},
|
||||
"TIM": FrameType{id: "TIM", description: "Time", constructor: NewTextFrame},
|
||||
"TKE": FrameType{id: "TKE", description: "Initial key", constructor: NewTextFrame},
|
||||
"TLA": FrameType{id: "TLA", description: "Language(s)", constructor: NewTextFrame},
|
||||
"TLE": FrameType{id: "TLE", description: "Length", constructor: NewTextFrame},
|
||||
"TMT": FrameType{id: "TMT", description: "Media type", constructor: NewTextFrame},
|
||||
"TOA": FrameType{id: "TOA", description: "Original artist(s)/performer(s)", constructor: NewTextFrame},
|
||||
"TOF": FrameType{id: "TOF", description: "Original filename", constructor: NewTextFrame},
|
||||
"TOL": FrameType{id: "TOL", description: "Original Lyricist(s)/text writer(s)", constructor: NewTextFrame},
|
||||
"TOR": FrameType{id: "TOR", description: "Original release year", constructor: NewTextFrame},
|
||||
"TOT": FrameType{id: "TOT", description: "Original album/Movie/Show title", constructor: NewTextFrame},
|
||||
"TP1": FrameType{id: "TP1", description: "Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group", constructor: NewTextFrame},
|
||||
"TP2": FrameType{id: "TP2", description: "Band/Orchestra/Accompaniment", constructor: NewTextFrame},
|
||||
"TP3": FrameType{id: "TP3", description: "Conductor/Performer refinement", constructor: NewTextFrame},
|
||||
"TP4": FrameType{id: "TP4", description: "Interpreted, remixed, or otherwise modified by", constructor: NewTextFrame},
|
||||
"TPA": FrameType{id: "TPA", description: "Part of a set", constructor: NewTextFrame},
|
||||
"TPB": FrameType{id: "TPB", description: "Publisher", constructor: NewTextFrame},
|
||||
"TRC": FrameType{id: "TRC", description: "ISRC (International Standard Recording Code)", constructor: NewTextFrame},
|
||||
"TRD": FrameType{id: "TRD", description: "Recording dates", constructor: NewTextFrame},
|
||||
"TRK": FrameType{id: "TRK", description: "Track number/Position in set", constructor: NewTextFrame},
|
||||
"TSI": FrameType{id: "TSI", description: "Size", constructor: NewTextFrame},
|
||||
"TSS": FrameType{id: "TSS", description: "Software/hardware and settings used for encoding", constructor: NewTextFrame},
|
||||
"TT1": FrameType{id: "TT1", description: "Content group description", constructor: NewTextFrame},
|
||||
"TT2": FrameType{id: "TT2", description: "Title/Songname/Content description", constructor: NewTextFrame},
|
||||
"TT3": FrameType{id: "TT3", description: "Subtitle/Description refinement", constructor: NewTextFrame},
|
||||
"TXT": FrameType{id: "TXT", description: "Lyricist/text writer", constructor: NewTextFrame},
|
||||
"TXX": FrameType{id: "TXX", description: "User defined text information frame", constructor: NewDescTextFrame},
|
||||
"TYE": FrameType{id: "TYE", description: "Year", constructor: NewTextFrame},
|
||||
"UFI": FrameType{id: "UFI", description: "Unique file identifier", constructor: NewDataFrame},
|
||||
"ULT": FrameType{id: "ULT", description: "Unsychronized lyric/text transcription", constructor: NewDataFrame},
|
||||
"WAF": FrameType{id: "WAF", description: "Official audio file webpage", constructor: NewDataFrame},
|
||||
"WAR": FrameType{id: "WAR", description: "Official artist/performer webpage", constructor: NewDataFrame},
|
||||
"WAS": FrameType{id: "WAS", description: "Official audio source webpage", constructor: NewDataFrame},
|
||||
"WCM": FrameType{id: "WCM", description: "Commercial information", constructor: NewDataFrame},
|
||||
"WCP": FrameType{id: "WCP", description: "Copyright/Legal information", constructor: NewDataFrame},
|
||||
"WPB": FrameType{id: "WPB", description: "Publishers official webpage", constructor: NewDataFrame},
|
||||
"WXX": FrameType{id: "WXX", description: "User defined URL link frame", constructor: NewDataFrame},
|
||||
"BUF": FrameType{id: "BUF", description: "Recommended buffer size", constructor: ParseDataFrame},
|
||||
"CNT": FrameType{id: "CNT", description: "Play counter", constructor: ParseDataFrame},
|
||||
"COM": FrameType{id: "COM", description: "Comments", constructor: ParseUnsynchTextFrame},
|
||||
"CRA": FrameType{id: "CRA", description: "Audio encryption", constructor: ParseDataFrame},
|
||||
"CRM": FrameType{id: "CRM", description: "Encrypted meta frame", constructor: ParseDataFrame},
|
||||
"ETC": FrameType{id: "ETC", description: "Event timing codes", constructor: ParseDataFrame},
|
||||
"EQU": FrameType{id: "EQU", description: "Equalization", constructor: ParseDataFrame},
|
||||
"GEO": FrameType{id: "GEO", description: "General encapsulated object", constructor: ParseDataFrame},
|
||||
"IPL": FrameType{id: "IPL", description: "Involved people list", constructor: ParseDataFrame},
|
||||
"LNK": FrameType{id: "LNK", description: "Linked information", constructor: ParseDataFrame},
|
||||
"MCI": FrameType{id: "MCI", description: "Music CD Identifier", constructor: ParseDataFrame},
|
||||
"MLL": FrameType{id: "MLL", description: "MPEG location lookup table", constructor: ParseDataFrame},
|
||||
"PIC": FrameType{id: "PIC", description: "Attached picture", constructor: ParseDataFrame},
|
||||
"POP": FrameType{id: "POP", description: "Popularimeter", constructor: ParseDataFrame},
|
||||
"REV": FrameType{id: "REV", description: "Reverb", constructor: ParseDataFrame},
|
||||
"RVA": FrameType{id: "RVA", description: "Relative volume adjustment", constructor: ParseDataFrame},
|
||||
"SLT": FrameType{id: "SLT", description: "Synchronized lyric/text", constructor: ParseDataFrame},
|
||||
"STC": FrameType{id: "STC", description: "Synced tempo codes", constructor: ParseDataFrame},
|
||||
"TAL": FrameType{id: "TAL", description: "Album/Movie/Show title", constructor: ParseTextFrame},
|
||||
"TBP": FrameType{id: "TBP", description: "BPM (Beats Per Minute)", constructor: ParseTextFrame},
|
||||
"TCM": FrameType{id: "TCM", description: "Composer", constructor: ParseTextFrame},
|
||||
"TCO": FrameType{id: "TCO", description: "Content type", constructor: ParseTextFrame},
|
||||
"TCR": FrameType{id: "TCR", description: "Copyright message", constructor: ParseTextFrame},
|
||||
"TDA": FrameType{id: "TDA", description: "Date", constructor: ParseTextFrame},
|
||||
"TDY": FrameType{id: "TDY", description: "Playlist delay", constructor: ParseTextFrame},
|
||||
"TEN": FrameType{id: "TEN", description: "Encoded by", constructor: ParseTextFrame},
|
||||
"TFT": FrameType{id: "TFT", description: "File type", constructor: ParseTextFrame},
|
||||
"TIM": FrameType{id: "TIM", description: "Time", constructor: ParseTextFrame},
|
||||
"TKE": FrameType{id: "TKE", description: "Initial key", constructor: ParseTextFrame},
|
||||
"TLA": FrameType{id: "TLA", description: "Language(s)", constructor: ParseTextFrame},
|
||||
"TLE": FrameType{id: "TLE", description: "Length", constructor: ParseTextFrame},
|
||||
"TMT": FrameType{id: "TMT", description: "Media type", constructor: ParseTextFrame},
|
||||
"TOA": FrameType{id: "TOA", description: "Original artist(s)/performer(s)", constructor: ParseTextFrame},
|
||||
"TOF": FrameType{id: "TOF", description: "Original filename", constructor: ParseTextFrame},
|
||||
"TOL": FrameType{id: "TOL", description: "Original Lyricist(s)/text writer(s)", constructor: ParseTextFrame},
|
||||
"TOR": FrameType{id: "TOR", description: "Original release year", constructor: ParseTextFrame},
|
||||
"TOT": FrameType{id: "TOT", description: "Original album/Movie/Show title", constructor: ParseTextFrame},
|
||||
"TP1": FrameType{id: "TP1", description: "Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group", constructor: ParseTextFrame},
|
||||
"TP2": FrameType{id: "TP2", description: "Band/Orchestra/Accompaniment", constructor: ParseTextFrame},
|
||||
"TP3": FrameType{id: "TP3", description: "Conductor/Performer refinement", constructor: ParseTextFrame},
|
||||
"TP4": FrameType{id: "TP4", description: "Interpreted, remixed, or otherwise modified by", constructor: ParseTextFrame},
|
||||
"TPA": FrameType{id: "TPA", description: "Part of a set", constructor: ParseTextFrame},
|
||||
"TPB": FrameType{id: "TPB", description: "Publisher", constructor: ParseTextFrame},
|
||||
"TRC": FrameType{id: "TRC", description: "ISRC (International Standard Recording Code)", constructor: ParseTextFrame},
|
||||
"TRD": FrameType{id: "TRD", description: "Recording dates", constructor: ParseTextFrame},
|
||||
"TRK": FrameType{id: "TRK", description: "Track number/Position in set", constructor: ParseTextFrame},
|
||||
"TSI": FrameType{id: "TSI", description: "Size", constructor: ParseTextFrame},
|
||||
"TSS": FrameType{id: "TSS", description: "Software/hardware and settings used for encoding", constructor: ParseTextFrame},
|
||||
"TT1": FrameType{id: "TT1", description: "Content group description", constructor: ParseTextFrame},
|
||||
"TT2": FrameType{id: "TT2", description: "Title/Songname/Content description", constructor: ParseTextFrame},
|
||||
"TT3": FrameType{id: "TT3", description: "Subtitle/Description refinement", constructor: ParseTextFrame},
|
||||
"TXT": FrameType{id: "TXT", description: "Lyricist/text writer", constructor: ParseTextFrame},
|
||||
"TXX": FrameType{id: "TXX", description: "User defined text information frame", constructor: ParseDescTextFrame},
|
||||
"TYE": FrameType{id: "TYE", description: "Year", constructor: ParseTextFrame},
|
||||
"UFI": FrameType{id: "UFI", description: "Unique file identifier", constructor: ParseDataFrame},
|
||||
"ULT": FrameType{id: "ULT", description: "Unsychronized lyric/text transcription", constructor: ParseDataFrame},
|
||||
"WAF": FrameType{id: "WAF", description: "Official audio file webpage", constructor: ParseDataFrame},
|
||||
"WAR": FrameType{id: "WAR", description: "Official artist/performer webpage", constructor: ParseDataFrame},
|
||||
"WAS": FrameType{id: "WAS", description: "Official audio source webpage", constructor: ParseDataFrame},
|
||||
"WCM": FrameType{id: "WCM", description: "Commercial information", constructor: ParseDataFrame},
|
||||
"WCP": FrameType{id: "WCP", description: "Copyright/Legal information", constructor: ParseDataFrame},
|
||||
"WPB": FrameType{id: "WPB", description: "Publishers official webpage", constructor: ParseDataFrame},
|
||||
"WXX": FrameType{id: "WXX", description: "User defined URL link frame", constructor: ParseDataFrame},
|
||||
}
|
||||
)
|
||||
|
||||
func NewV22Frame(reader io.Reader) Framer {
|
||||
func ParseV22Frame(reader io.Reader) Framer {
|
||||
data := make([]byte, V22FrameHeaderSize)
|
||||
if n, err := io.ReadFull(reader, data); n < V22FrameHeaderSize || err != nil {
|
||||
return nil
|
||||
|
|
150
id3v23.go
150
id3v23.go
|
@ -39,84 +39,84 @@ var (
|
|||
|
||||
// V23FrameTypeMap specifies the frame IDs and constructors allowed in ID3v2.3
|
||||
V23FrameTypeMap = map[string]FrameType{
|
||||
"AENC": FrameType{id: "AENC", description: "Audio encryption", constructor: NewDataFrame},
|
||||
"APIC": FrameType{id: "APIC", description: "Attached picture", constructor: NewImageFrame},
|
||||
"COMM": FrameType{id: "COMM", description: "Comments", constructor: NewUnsynchTextFrame},
|
||||
"COMR": FrameType{id: "COMR", description: "Commercial frame", constructor: NewDataFrame},
|
||||
"ENCR": FrameType{id: "ENCR", description: "Encryption method registration", constructor: NewDataFrame},
|
||||
"EQUA": FrameType{id: "EQUA", description: "Equalization", constructor: NewDataFrame},
|
||||
"ETCO": FrameType{id: "ETCO", description: "Event timing codes", constructor: NewDataFrame},
|
||||
"GEOB": FrameType{id: "GEOB", description: "General encapsulated object", constructor: NewDataFrame},
|
||||
"GRID": FrameType{id: "GRID", description: "Group identification registration", constructor: NewDataFrame},
|
||||
"IPLS": FrameType{id: "IPLS", description: "Involved people list", constructor: NewDataFrame},
|
||||
"LINK": FrameType{id: "LINK", description: "Linked information", constructor: NewDataFrame},
|
||||
"MCDI": FrameType{id: "MCDI", description: "Music CD identifier", constructor: NewDataFrame},
|
||||
"MLLT": FrameType{id: "MLLT", description: "MPEG location lookup table", constructor: NewDataFrame},
|
||||
"OWNE": FrameType{id: "OWNE", description: "Ownership frame", constructor: NewDataFrame},
|
||||
"PRIV": FrameType{id: "PRIV", description: "Private frame", constructor: NewDataFrame},
|
||||
"PCNT": FrameType{id: "PCNT", description: "Play counter", constructor: NewDataFrame},
|
||||
"POPM": FrameType{id: "POPM", description: "Popularimeter", constructor: NewDataFrame},
|
||||
"POSS": FrameType{id: "POSS", description: "Position synchronisation frame", constructor: NewDataFrame},
|
||||
"RBUF": FrameType{id: "RBUF", description: "Recommended buffer size", constructor: NewDataFrame},
|
||||
"RVAD": FrameType{id: "RVAD", description: "Relative volume adjustment", constructor: NewDataFrame},
|
||||
"RVRB": FrameType{id: "RVRB", description: "Reverb", constructor: NewDataFrame},
|
||||
"SYLT": FrameType{id: "SYLT", description: "Synchronized lyric/text", constructor: NewDataFrame},
|
||||
"SYTC": FrameType{id: "SYTC", description: "Synchronized tempo codes", constructor: NewDataFrame},
|
||||
"TALB": FrameType{id: "TALB", description: "Album/Movie/Show title", constructor: NewTextFrame},
|
||||
"TBPM": FrameType{id: "TBPM", description: "BPM (beats per minute)", constructor: NewTextFrame},
|
||||
"TCOM": FrameType{id: "TCOM", description: "Composer", constructor: NewTextFrame},
|
||||
"TCON": FrameType{id: "TCON", description: "Content type", constructor: NewTextFrame},
|
||||
"TCOP": FrameType{id: "TCOP", description: "Copyright message", constructor: NewTextFrame},
|
||||
"TDAT": FrameType{id: "TDAT", description: "Date", constructor: NewTextFrame},
|
||||
"TDLY": FrameType{id: "TDLY", description: "Playlist delay", constructor: NewTextFrame},
|
||||
"TENC": FrameType{id: "TENC", description: "Encoded by", constructor: NewTextFrame},
|
||||
"TEXT": FrameType{id: "TEXT", description: "Lyricist/Text writer", constructor: NewTextFrame},
|
||||
"TFLT": FrameType{id: "TFLT", description: "File type", constructor: NewTextFrame},
|
||||
"TIME": FrameType{id: "TIME", description: "Time", constructor: NewTextFrame},
|
||||
"TIT1": FrameType{id: "TIT1", description: "Content group description", constructor: NewTextFrame},
|
||||
"TIT2": FrameType{id: "TIT2", description: "Title/songname/content description", constructor: NewTextFrame},
|
||||
"TIT3": FrameType{id: "TIT3", description: "Subtitle/Description refinement", constructor: NewTextFrame},
|
||||
"TKEY": FrameType{id: "TKEY", description: "Initial key", constructor: NewTextFrame},
|
||||
"TLAN": FrameType{id: "TLAN", description: "Language(s)", constructor: NewTextFrame},
|
||||
"TLEN": FrameType{id: "TLEN", description: "Length", constructor: NewTextFrame},
|
||||
"TMED": FrameType{id: "TMED", description: "Media type", constructor: NewTextFrame},
|
||||
"TOAL": FrameType{id: "TOAL", description: "Original album/movie/show title", constructor: NewTextFrame},
|
||||
"TOFN": FrameType{id: "TOFN", description: "Original filename", constructor: NewTextFrame},
|
||||
"TOLY": FrameType{id: "TOLY", description: "Original lyricist(s)/text writer(s)", constructor: NewTextFrame},
|
||||
"TOPE": FrameType{id: "TOPE", description: "Original artist(s)/performer(s)", constructor: NewTextFrame},
|
||||
"TORY": FrameType{id: "TORY", description: "Original release year", constructor: NewTextFrame},
|
||||
"TOWN": FrameType{id: "TOWN", description: "File owner/licensee", constructor: NewTextFrame},
|
||||
"TPE1": FrameType{id: "TPE1", description: "Lead performer(s)/Soloist(s)", constructor: NewTextFrame},
|
||||
"TPE2": FrameType{id: "TPE2", description: "Band/orchestra/accompaniment", constructor: NewTextFrame},
|
||||
"TPE3": FrameType{id: "TPE3", description: "Conductor/performer refinement", constructor: NewTextFrame},
|
||||
"TPE4": FrameType{id: "TPE4", description: "Interpreted, remixed, or otherwise modified by", constructor: NewTextFrame},
|
||||
"TPOS": FrameType{id: "TPOS", description: "Part of a set", constructor: NewTextFrame},
|
||||
"TPUB": FrameType{id: "TPUB", description: "Publisher", constructor: NewTextFrame},
|
||||
"TRCK": FrameType{id: "TRCK", description: "Track number/Position in set", constructor: NewTextFrame},
|
||||
"TRDA": FrameType{id: "TRDA", description: "Recording dates", constructor: NewTextFrame},
|
||||
"TRSN": FrameType{id: "TRSN", description: "Internet radio station name", constructor: NewTextFrame},
|
||||
"TRSO": FrameType{id: "TRSO", description: "Internet radio station owner", constructor: NewTextFrame},
|
||||
"TSIZ": FrameType{id: "TSIZ", description: "Size", constructor: NewTextFrame},
|
||||
"TSRC": FrameType{id: "TSRC", description: "ISRC (international standard recording code)", constructor: NewTextFrame},
|
||||
"TSSE": FrameType{id: "TSSE", description: "Software/Hardware and settings used for encoding", constructor: NewTextFrame},
|
||||
"TYER": FrameType{id: "TYER", description: "Year", constructor: NewTextFrame},
|
||||
"TXXX": FrameType{id: "TXXX", description: "User defined text information frame", constructor: NewDescTextFrame},
|
||||
"UFID": FrameType{id: "UFID", description: "Unique file identifier", constructor: NewDataFrame},
|
||||
"USER": FrameType{id: "USER", description: "Terms of use", constructor: NewDataFrame},
|
||||
"USLT": FrameType{id: "USLT", description: "Unsychronized lyric/text transcription", constructor: NewUnsynchTextFrame},
|
||||
"WCOM": FrameType{id: "WCOM", description: "Commercial information", constructor: NewDataFrame},
|
||||
"WCOP": FrameType{id: "WCOP", description: "Copyright/Legal information", constructor: NewDataFrame},
|
||||
"WOAF": FrameType{id: "WOAF", description: "Official audio file webpage", constructor: NewDataFrame},
|
||||
"WOAR": FrameType{id: "WOAR", description: "Official artist/performer webpage", constructor: NewDataFrame},
|
||||
"WOAS": FrameType{id: "WOAS", description: "Official audio source webpage", constructor: NewDataFrame},
|
||||
"WORS": FrameType{id: "WORS", description: "Official internet radio station homepage", constructor: NewDataFrame},
|
||||
"WPAY": FrameType{id: "WPAY", description: "Payment", constructor: NewDataFrame},
|
||||
"WPUB": FrameType{id: "WPUB", description: "Publishers official webpage", constructor: NewDataFrame},
|
||||
"WXXX": FrameType{id: "WXXX", description: "User defined URL link frame", constructor: NewDataFrame},
|
||||
"AENC": FrameType{id: "AENC", description: "Audio encryption", constructor: ParseDataFrame},
|
||||
"APIC": FrameType{id: "APIC", description: "Attached picture", constructor: ParseImageFrame},
|
||||
"COMM": FrameType{id: "COMM", description: "Comments", constructor: ParseUnsynchTextFrame},
|
||||
"COMR": FrameType{id: "COMR", description: "Commercial frame", constructor: ParseDataFrame},
|
||||
"ENCR": FrameType{id: "ENCR", description: "Encryption method registration", constructor: ParseDataFrame},
|
||||
"EQUA": FrameType{id: "EQUA", description: "Equalization", constructor: ParseDataFrame},
|
||||
"ETCO": FrameType{id: "ETCO", description: "Event timing codes", constructor: ParseDataFrame},
|
||||
"GEOB": FrameType{id: "GEOB", description: "General encapsulated object", constructor: ParseDataFrame},
|
||||
"GRID": FrameType{id: "GRID", description: "Group identification registration", constructor: ParseDataFrame},
|
||||
"IPLS": FrameType{id: "IPLS", description: "Involved people list", constructor: ParseDataFrame},
|
||||
"LINK": FrameType{id: "LINK", description: "Linked information", constructor: ParseDataFrame},
|
||||
"MCDI": FrameType{id: "MCDI", description: "Music CD identifier", constructor: ParseDataFrame},
|
||||
"MLLT": FrameType{id: "MLLT", description: "MPEG location lookup table", constructor: ParseDataFrame},
|
||||
"OWNE": FrameType{id: "OWNE", description: "Ownership frame", constructor: ParseDataFrame},
|
||||
"PRIV": FrameType{id: "PRIV", description: "Private frame", constructor: ParseDataFrame},
|
||||
"PCNT": FrameType{id: "PCNT", description: "Play counter", constructor: ParseDataFrame},
|
||||
"POPM": FrameType{id: "POPM", description: "Popularimeter", constructor: ParseDataFrame},
|
||||
"POSS": FrameType{id: "POSS", description: "Position synchronisation frame", constructor: ParseDataFrame},
|
||||
"RBUF": FrameType{id: "RBUF", description: "Recommended buffer size", constructor: ParseDataFrame},
|
||||
"RVAD": FrameType{id: "RVAD", description: "Relative volume adjustment", constructor: ParseDataFrame},
|
||||
"RVRB": FrameType{id: "RVRB", description: "Reverb", constructor: ParseDataFrame},
|
||||
"SYLT": FrameType{id: "SYLT", description: "Synchronized lyric/text", constructor: ParseDataFrame},
|
||||
"SYTC": FrameType{id: "SYTC", description: "Synchronized tempo codes", constructor: ParseDataFrame},
|
||||
"TALB": FrameType{id: "TALB", description: "Album/Movie/Show title", constructor: ParseTextFrame},
|
||||
"TBPM": FrameType{id: "TBPM", description: "BPM (beats per minute)", constructor: ParseTextFrame},
|
||||
"TCOM": FrameType{id: "TCOM", description: "Composer", constructor: ParseTextFrame},
|
||||
"TCON": FrameType{id: "TCON", description: "Content type", constructor: ParseTextFrame},
|
||||
"TCOP": FrameType{id: "TCOP", description: "Copyright message", constructor: ParseTextFrame},
|
||||
"TDAT": FrameType{id: "TDAT", description: "Date", constructor: ParseTextFrame},
|
||||
"TDLY": FrameType{id: "TDLY", description: "Playlist delay", constructor: ParseTextFrame},
|
||||
"TENC": FrameType{id: "TENC", description: "Encoded by", constructor: ParseTextFrame},
|
||||
"TEXT": FrameType{id: "TEXT", description: "Lyricist/Text writer", constructor: ParseTextFrame},
|
||||
"TFLT": FrameType{id: "TFLT", description: "File type", constructor: ParseTextFrame},
|
||||
"TIME": FrameType{id: "TIME", description: "Time", constructor: ParseTextFrame},
|
||||
"TIT1": FrameType{id: "TIT1", description: "Content group description", constructor: ParseTextFrame},
|
||||
"TIT2": FrameType{id: "TIT2", description: "Title/songname/content description", constructor: ParseTextFrame},
|
||||
"TIT3": FrameType{id: "TIT3", description: "Subtitle/Description refinement", constructor: ParseTextFrame},
|
||||
"TKEY": FrameType{id: "TKEY", description: "Initial key", constructor: ParseTextFrame},
|
||||
"TLAN": FrameType{id: "TLAN", description: "Language(s)", constructor: ParseTextFrame},
|
||||
"TLEN": FrameType{id: "TLEN", description: "Length", constructor: ParseTextFrame},
|
||||
"TMED": FrameType{id: "TMED", description: "Media type", constructor: ParseTextFrame},
|
||||
"TOAL": FrameType{id: "TOAL", description: "Original album/movie/show title", constructor: ParseTextFrame},
|
||||
"TOFN": FrameType{id: "TOFN", description: "Original filename", constructor: ParseTextFrame},
|
||||
"TOLY": FrameType{id: "TOLY", description: "Original lyricist(s)/text writer(s)", constructor: ParseTextFrame},
|
||||
"TOPE": FrameType{id: "TOPE", description: "Original artist(s)/performer(s)", constructor: ParseTextFrame},
|
||||
"TORY": FrameType{id: "TORY", description: "Original release year", constructor: ParseTextFrame},
|
||||
"TOWN": FrameType{id: "TOWN", description: "File owner/licensee", constructor: ParseTextFrame},
|
||||
"TPE1": FrameType{id: "TPE1", description: "Lead performer(s)/Soloist(s)", constructor: ParseTextFrame},
|
||||
"TPE2": FrameType{id: "TPE2", description: "Band/orchestra/accompaniment", constructor: ParseTextFrame},
|
||||
"TPE3": FrameType{id: "TPE3", description: "Conductor/performer refinement", constructor: ParseTextFrame},
|
||||
"TPE4": FrameType{id: "TPE4", description: "Interpreted, remixed, or otherwise modified by", constructor: ParseTextFrame},
|
||||
"TPOS": FrameType{id: "TPOS", description: "Part of a set", constructor: ParseTextFrame},
|
||||
"TPUB": FrameType{id: "TPUB", description: "Publisher", constructor: ParseTextFrame},
|
||||
"TRCK": FrameType{id: "TRCK", description: "Track number/Position in set", constructor: ParseTextFrame},
|
||||
"TRDA": FrameType{id: "TRDA", description: "Recording dates", constructor: ParseTextFrame},
|
||||
"TRSN": FrameType{id: "TRSN", description: "Internet radio station name", constructor: ParseTextFrame},
|
||||
"TRSO": FrameType{id: "TRSO", description: "Internet radio station owner", constructor: ParseTextFrame},
|
||||
"TSIZ": FrameType{id: "TSIZ", description: "Size", constructor: ParseTextFrame},
|
||||
"TSRC": FrameType{id: "TSRC", description: "ISRC (international standard recording code)", constructor: ParseTextFrame},
|
||||
"TSSE": FrameType{id: "TSSE", description: "Software/Hardware and settings used for encoding", constructor: ParseTextFrame},
|
||||
"TYER": FrameType{id: "TYER", description: "Year", constructor: ParseTextFrame},
|
||||
"TXXX": FrameType{id: "TXXX", description: "User defined text information frame", constructor: ParseDescTextFrame},
|
||||
"UFID": FrameType{id: "UFID", description: "Unique file identifier", constructor: ParseDataFrame},
|
||||
"USER": FrameType{id: "USER", description: "Terms of use", constructor: ParseDataFrame},
|
||||
"USLT": FrameType{id: "USLT", description: "Unsychronized lyric/text transcription", constructor: ParseUnsynchTextFrame},
|
||||
"WCOM": FrameType{id: "WCOM", description: "Commercial information", constructor: ParseDataFrame},
|
||||
"WCOP": FrameType{id: "WCOP", description: "Copyright/Legal information", constructor: ParseDataFrame},
|
||||
"WOAF": FrameType{id: "WOAF", description: "Official audio file webpage", constructor: ParseDataFrame},
|
||||
"WOAR": FrameType{id: "WOAR", description: "Official artist/performer webpage", constructor: ParseDataFrame},
|
||||
"WOAS": FrameType{id: "WOAS", description: "Official audio source webpage", constructor: ParseDataFrame},
|
||||
"WORS": FrameType{id: "WORS", description: "Official internet radio station homepage", constructor: ParseDataFrame},
|
||||
"WPAY": FrameType{id: "WPAY", description: "Payment", constructor: ParseDataFrame},
|
||||
"WPUB": FrameType{id: "WPUB", description: "Publishers official webpage", constructor: ParseDataFrame},
|
||||
"WXXX": FrameType{id: "WXXX", description: "User defined URL link frame", constructor: ParseDataFrame},
|
||||
}
|
||||
)
|
||||
|
||||
func NewV23Frame(reader io.Reader) Framer {
|
||||
func ParseV23Frame(reader io.Reader) Framer {
|
||||
data := make([]byte, FrameHeaderSize)
|
||||
if n, err := io.ReadFull(reader, data); n < FrameHeaderSize || err != nil {
|
||||
return nil
|
||||
|
|
Ładowanie…
Reference in New Issue