Documentation
¶
Overview ¶
Package id3 implements the ID3v2.4 metadata standard for audio files.
Index ¶
- Constants
- Variables
- func NewModel(name string) xmp.Model
- type AdjustmentPoint
- type AdjustmentPointList
- type AttachedPicture
- type AttachedPictureArray
- func (x AttachedPictureArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error
- func (x AttachedPictureArray) Typ() xmp.ArrayType
- func (x *AttachedPictureArray) UnmarshalText(data []byte) error
- func (x *AttachedPictureArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error
- type AudioEncryption
- type AudioSeekIndex
- type Bool
- type BufferSize
- type ChannelType
- type Chapter
- type ChapterList
- type Comment
- type CommentArray
- type Commercial
- type Date23
- type DeliveryMethod
- type EncapsulatedObject
- type EncapsulatedObjectArray
- func (x EncapsulatedObjectArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error
- func (x EncapsulatedObjectArray) Typ() xmp.ArrayType
- func (x *EncapsulatedObjectArray) UnmarshalText(data []byte) error
- func (x *EncapsulatedObjectArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error
- type EncryptionMethod
- type EncryptionMethodArray
- func (x EncryptionMethodArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error
- func (x EncryptionMethodArray) Typ() xmp.ArrayType
- func (x *EncryptionMethodArray) UnmarshalText(data []byte) error
- func (x *EncryptionMethodArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error
- type Equalization
- type EqualizationList
- type EqualizationMethod
- type Genre
- type GenreV1
- type Group
- type GroupArray
- type ID3
- func (m *ID3) Can(nsName string) bool
- func (x *ID3) CanTag(tag string) bool
- func (x *ID3) GetLocaleTag(lang string, tag string) (string, error)
- func (x *ID3) GetTag(tag string) (string, error)
- func (x *ID3) ListTags() (xmp.TagList, error)
- func (m *ID3) Namespaces() xmp.NamespaceList
- func (x *ID3) SetLocaleTag(lang string, tag, value string) error
- func (x *ID3) SetTag(tag, value string) error
- func (x *ID3) SyncFromXMP(d *xmp.Document) error
- func (x *ID3) SyncModel(d *xmp.Document) error
- func (x ID3) SyncToXMP(d *xmp.Document) error
- type Link
- type LinkArray
- type LyricsType
- type Marker
- type MarkerList
- type MarkerType
- type Owner
- type PictureType
- type Popularimeter
- type PopularimeterArray
- type PositionSync
- type PositionType
- type Price
- type PriceList
- type PrivateData
- type PrivateDataArray
- type Reverb
- type Signature
- type SignatureArray
- type Time23
- type TimedLyrics
- type TimedLyricsArray
- type TimedText
- type TimedTextList
- type TocEntry
- type TocEntryList
- type TrackNum
- type UnitType
- type VolumeAdjust
- type VolumeAdjustArray
Constants ¶
View Source
const ( GenreBlues = 0 GenreClassicRock = 1 GenreCountry = 2 GenreDance = 3 GenreDisco = 4 GenreFunk = 5 GenreGrunge = 6 GenreHipHop = 7 GenreJazz = 8 GenreMetal = 9 GenreNewAge = 10 GenreOldies = 11 GenreOther = 12 GenrePop = 13 GenreRaB = 14 GenreRap = 15 GenreReggae = 16 GenreRock = 17 GenreTechno = 18 GenreIndustrial = 19 GenreAlternative = 20 GenreSka = 21 GenreDeathMetal = 22 GenrePranks = 23 GenreSoundtrack = 24 GenreEuroTechno = 25 GenreAmbient = 26 GenreTripHop = 27 GenreVocal = 28 GenreJazzFunk = 29 GenreFusion = 30 GenreTrance = 31 GenreClassical = 32 GenreInstrumental = 33 GenreAcid = 34 GenreHouse = 35 GenreGame = 36 GenreSoundClip = 37 GenreGospel = 38 GenreNoise = 39 GenreAltRock = 40 GenreBass = 41 GenreSoul = 42 GenrePunk = 43 GenreSpace = 44 GenreMeditative = 45 GenreInstrumentalPop = 46 GenreInstrumentalRock = 47 GenreEthnic = 48 GenreGothic = 49 GenreDarkwave = 50 GenreTechnoIndustrial = 51 GenreElectronic = 52 GenrePopFolk = 53 GenreEurodance = 54 GenreDream = 55 GenreSouthernRock = 56 GenreComedy = 57 GenreCult = 58 GenreGangstaRap = 59 GenreTop40 = 60 GenreChristianRap = 61 GenrePopFunk = 62 GenreJungle = 63 GenreNativeAmerican = 64 GenreCabaret = 65 GenreNewWave = 66 GenrePsychedelic = 67 /* sic, the misspelling is used in the specification */ GenreRave = 68 GenreShowtunes = 69 GenreTrailer = 70 GenreLoFi = 71 GenreTribal = 72 GenreAcidPunk = 73 GenreAcidJazz = 74 GenrePolka = 75 GenreRetro = 76 GenreMusical = 77 GenreRockNRoll = 78 GenreHardRock = 79 GenreFolk = 80 GenreFolkRock = 81 GenreNationalFolk = 82 GenreSwing = 83 GenreFastFusion = 84 GenreBebob = 85 GenreLatin = 86 GenreRevival = 87 GenreCeltic = 88 GenreBluegrass = 89 GenreAvantgarde = 90 GenreGothicRock = 91 GenreProgressiveRock = 92 GenrePsychedelicRock = 93 GenreSymphonicRock = 94 GenreSlowRock = 95 GenreBigBand = 96 GenreChorus = 97 GenreEasyListening = 98 GenreAcoustic = 99 GenreHumour = 100 GenreSpeech = 101 GenreChanson = 102 GenreOpera = 103 GenreChamberMusic = 104 GenreSonata = 105 GenreSymphony = 106 GenreBootyBass = 107 GenrePrimus = 108 GenrePornGroove = 109 GenreSatire = 110 GenreSlowJam = 111 GenreClub = 112 GenreTango = 113 GenreSamba = 114 GenreFolklore = 115 GenreBallad = 116 GenrePowerBallad = 117 GenreRhythmicSoul = 118 GenreFreestyle = 119 GenreDuet = 120 GenrePunkRock = 121 GenreDrumSolo = 122 GenreAcapella = 123 GenreEuroHouse = 124 GenreDanceHall = 125 GenreGoa = 126 GenreDrumNBass = 127 GenreClubHouse = 128 GenreHardcore = 129 GenreTerror = 130 GenreIndie = 131 GenreBritPop = 132 GenreAfroPunk = 133 GenrePolskPunk = 134 GenreBeat = 135 GenreChristianGangsta = 136 GenreHeavyMetal = 137 GenreBlackMetal = 138 GenreCrossover = 139 GenreContemporaryChristian = 140 GenreChristianRock = 141 GenreMerengue = 142 GenreSalsa = 143 GenreThrashMetal = 144 GenreAnime = 145 GenreJPop = 146 GenreSynthPop = 147 // ref http://alicja.homelinux.com/~mats/text/Music/MP3/ID3/Genres.txt GenreAbstract = 148 GenreArtRock = 149 GenreBaroque = 150 GenreBhangra = 151 GenreBigBeat = 152 GenreBreakbeat = 153 GenreChillout = 154 GenreDowntempo = 155 GenreDub = 156 GenreEBM = 157 GenreEclectic = 158 GenreElectro = 159 GenreElectroclash = 160 GenreEmo = 161 GenreExperimental = 162 GenreGarage = 163 GenreGlobal = 164 GenreIDM = 165 GenreIllbient = 166 GenreIndustroGoth = 167 GenreJamBand = 168 GenreKrautrock = 169 GenreLeftfield = 170 GenreLounge = 171 GenreMathRock = 172 GenreNewRomantic = 173 GenreNuBreakz = 174 GenrePostPunk = 175 GenrePostRock = 176 GenrePsytrance = 177 GenreShoegaze = 178 GenreSpaceRock = 179 GenreTropRock = 180 GenreWorldMusic = 181 GenreNeoclassical = 182 GenreAudiobook = 183 GenreAudioTheatre = 184 GenreNeueDeutscheWelle = 185 GenrePodcast = 186 GenreIndieRock = 187 GenreGFunk = 188 GenreDubstep = 189 GenreGarageRock = 190 GenrePsybient = 191 GenreNone = 255 )
View Source
const ( TIME_FORMAT_23 = "1504" // HHMM DATE_FORMAT_23 = "0102" // DDMM )
Variables ¶
View Source
var GenreMap map[GenreV1]string = map[GenreV1]string{}/* 193 elements not displayed */
View Source
var (
NsID3 = xmp.NewNamespace("id3", "http://id3.org/ns/2.4/", NewModel)
)
View Source
var V11_TO_V24_TAGS map[string]string = map[string]string{
"0x0003": "TIT2",
"0x0021": "TPE1",
"0x003f": "TALB",
"0x005d": "TYER",
"0x0061": "COMM",
"0x007d": "TRCK",
"0x007f": "TCON",
}
View Source
var V22_TO_V24_TAGS map[string]string = map[string]string{
"BUF": "RBUF",
"CNT": "PCNT",
"COM": "COMM",
"CRA": "AENC",
"CRM": "ENCR",
"ETC": "ETCO",
"EQU": "EQU2",
"GEO": "GEOB",
"IPL": "TIPL",
"LNK": "LINK",
"MCI": "MCDI",
"MLL": "MLLT",
"PIC": "APIC",
"POP": "POPM",
"REV": "RVRB",
"RVA": "RVA2",
"SLT": "SYLT",
"STC": "SYTC",
"TAL": "TALB",
"TBP": "TBPM",
"TCM": "TCOM",
"TCO": "TMED",
"TCR": "TCOP",
"TDA": "TDRC",
"TDY": "TDLY",
"TEN": "TENC",
"TFT": "TFLT",
"TIM": "TDRC",
"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": "TDRC",
"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": "WPUB",
"WXX": "WXXX",
"TCP": "TCMP",
"TST": "TSOT",
"TS2": "TSO2",
"TSA": "TSOA",
"TSP": "TSOP",
"TSC": "TSOC",
}
Functions ¶
Types ¶
type AdjustmentPoint ¶
type AdjustmentPointList ¶
type AdjustmentPointList []AdjustmentPoint
func (AdjustmentPointList) MarshalXMP ¶
func (AdjustmentPointList) Typ ¶
func (x AdjustmentPointList) Typ() xmp.ArrayType
func (*AdjustmentPointList) UnmarshalXMP ¶
type AttachedPicture ¶
type AttachedPicture struct {
Mimetype string `xmp:"id3:mimetype,attr"`
Type PictureType `xmp:"id3:pictureType,attr"`
Description string `xmp:"id3:description,attr"`
Data []byte `xmp:"id3:image"`
}
APIC
type AttachedPictureArray ¶
type AttachedPictureArray []AttachedPicture
func (AttachedPictureArray) MarshalXMP ¶
func (AttachedPictureArray) Typ ¶
func (x AttachedPictureArray) Typ() xmp.ArrayType
func (*AttachedPictureArray) UnmarshalText ¶
func (x *AttachedPictureArray) UnmarshalText(data []byte) error
func (*AttachedPictureArray) UnmarshalXMP ¶
type AudioEncryption ¶
type AudioEncryption struct {
Owner string `xmp:"id3:owner,attr"`
PreviewStart int `xmp:"id3:previewStart,attr"`
PreviewLength int `xmp:"id3:previewLength,attr"`
EncryptionInfo []byte `xmp:"id3:encryptionInfo"`
}
AENC
func (*AudioEncryption) UnmarshalText ¶
func (x *AudioEncryption) UnmarshalText(data []byte) error
type AudioSeekIndex ¶
type AudioSeekIndex struct {
Start int64 `xmp:"id3:start,attr"`
Length int64 `xmp:"id3:length,attr"`
NumberOfPoints int `xmp:"id3:numberOfPoints,attr"`
BitsPerPoint byte `xmp:"id3:bitsPerPoint,attr"`
Points xmp.IntList `xmp:"id3:points"`
}
ASPI
func (*AudioSeekIndex) UnmarshalText ¶
func (x *AudioSeekIndex) UnmarshalText(data []byte) error
type BufferSize ¶
type BufferSize struct {
BufferSize int64 `xmp:"id3:bufferSize,attr"`
Flag byte `xmp:"id3:flag,attr"`
NextOffset int64 `xmp:"id3:next,attr"`
}
RBUF
func (*BufferSize) UnmarshalText ¶
func (x *BufferSize) UnmarshalText(data []byte) error
type ChannelType ¶
type ChannelType byte
const ( ChannelTypeOther ChannelType = 0x00 // Other ChannelTypeMaster ChannelType = 0x01 // Master volume ChannelTypeFrontRight ChannelType = 0x02 // Front right ChannelTypeFrontLeft ChannelType = 0x03 // Front left ChannelTypeBackRight ChannelType = 0x04 // Back right ChannelTypeBackLeft ChannelType = 0x05 // Back left ChannelTypeFrontCentre ChannelType = 0x06 // Front centre ChannelTypeBackCentre ChannelType = 0x07 // Back centre ChannelTypeSubwoofer ChannelType = 0x08 // Subwoofer )
type ChapterList ¶
type ChapterList []Chapter
func (ChapterList) MarshalXMP ¶
func (ChapterList) Typ ¶
func (x ChapterList) Typ() xmp.ArrayType
func (*ChapterList) UnmarshalText ¶
func (x *ChapterList) UnmarshalText(data []byte) error
func (*ChapterList) UnmarshalXMP ¶
type Comment ¶
type Comment struct {
Lang string `xmp:"id3:lang,attr"`
Type string `xmp:"id3:type,attr"`
Text string `xmp:"id3:text,attr"`
}
COMM
type CommentArray ¶
type CommentArray []Comment
func (CommentArray) MarshalXMP ¶
func (CommentArray) Typ ¶
func (x CommentArray) Typ() xmp.ArrayType
func (*CommentArray) UnmarshalText ¶
func (x *CommentArray) UnmarshalText(data []byte) error
TODO: need samples
func (*CommentArray) UnmarshalXMP ¶
type Commercial ¶
type Commercial struct {
Prices PriceList `xmp:"id3:prices"`
ValidUntil Date23 `xmp:"id3:validUntil,attr"`
ContactUrl xmp.Url `xmp:"id3:contactUrl"`
ReceivedAs DeliveryMethod `xmp:"id3:receivedAs,attr"`
SellerName string `xmp:"id3:sellerName,attr"`
Description string `xmp:"id3:description,attr"`
LogoMimetype string `xmp:"id3:logoMimetype,attr"`
LogoImage []byte `xmp:"id3:logoImage"`
}
COMR
func (*Commercial) UnmarshalText ¶
func (x *Commercial) UnmarshalText(data []byte) error
type DeliveryMethod ¶
type DeliveryMethod byte
const ( DeliveryMethodOther DeliveryMethod = 0x00 // Other DeliveryMethodStdCD DeliveryMethod = 0x01 // Standard CD album with other songs DeliveryMethodCompressedCD DeliveryMethod = 0x02 // Compressed audio on CD DeliveryMethodDownload DeliveryMethod = 0x03 // File over the Internet DeliveryMethodStream DeliveryMethod = 0x04 // Stream over the Internet DeliveryMethodNoteSheets DeliveryMethod = 0x05 // As note sheets DeliveryMethodBook DeliveryMethod = 0x06 // As note sheets in a book with other sheets DeliveryMethodOtherMedia DeliveryMethod = 0x07 // Music on other media DeliveryMethodMerchandise DeliveryMethod = 0x08 // Non-musical merchandise )
type EncapsulatedObject ¶
type EncapsulatedObject struct {
Mimetype string `xmp:"id3:mimetype,attr"`
Filename string `xmp:"id3:filename,attr"`
Description string `xmp:"id3:description,attr"`
Data []byte `xmp:"id3:data"`
}
GEOB
type EncapsulatedObjectArray ¶
type EncapsulatedObjectArray []EncapsulatedObject
func (EncapsulatedObjectArray) MarshalXMP ¶
func (EncapsulatedObjectArray) Typ ¶
func (x EncapsulatedObjectArray) Typ() xmp.ArrayType
func (*EncapsulatedObjectArray) UnmarshalText ¶
func (x *EncapsulatedObjectArray) UnmarshalText(data []byte) error
func (*EncapsulatedObjectArray) UnmarshalXMP ¶
type EncryptionMethod ¶
type EncryptionMethod struct {
OwnerUrl xmp.Url `xmp:"id3:ownerUrl,attr"`
Method byte `xmp:"id3:method,attr"`
Data []byte `xmp:"id3:data"`
}
ENCR
type EncryptionMethodArray ¶
type EncryptionMethodArray []EncryptionMethod
func (EncryptionMethodArray) MarshalXMP ¶
func (EncryptionMethodArray) Typ ¶
func (x EncryptionMethodArray) Typ() xmp.ArrayType
func (*EncryptionMethodArray) UnmarshalText ¶
func (x *EncryptionMethodArray) UnmarshalText(data []byte) error
func (*EncryptionMethodArray) UnmarshalXMP ¶
type Equalization ¶
type Equalization struct {
Method EqualizationMethod `xmp:"id3:method,attr"`
Identification string `xmp:"id3:id,attr"`
Adjustments AdjustmentPointList `xmp:"id3:points"`
}
EQU2
type EqualizationList ¶
type EqualizationList []Equalization
func (EqualizationList) MarshalXMP ¶
func (EqualizationList) Typ ¶
func (x EqualizationList) Typ() xmp.ArrayType
func (*EqualizationList) UnmarshalText ¶
func (x *EqualizationList) UnmarshalText(data []byte) error
func (*EqualizationList) UnmarshalXMP ¶
type EqualizationMethod ¶
type EqualizationMethod byte
const ( // No interpolation is made. A jump from one adjustment level to // another occurs in the middle between two adjustment points. EqualizationMethodBand EqualizationMethod = 0x00 // Interpolation between adjustment points is linear. EqualizationMethodLinear EqualizationMethod = 0x01 )
type GenreV1 ¶
type GenreV1 byte
TCON
func ParseGenreV1 ¶
func (GenreV1) MarshalText ¶
func (*GenreV1) UnmarshalText ¶
type Group ¶
type Group struct {
OwnerUrl xmp.Url `xmp:"id3:ownerUrl,attr"`
Symbol byte `xmp:"id3:symbol,attr"` // 0x80-0xF0
Data []byte `xmp:"id3:data"`
}
GRID
type GroupArray ¶
type GroupArray []Group
func (GroupArray) MarshalXMP ¶
func (GroupArray) Typ ¶
func (x GroupArray) Typ() xmp.ArrayType
func (*GroupArray) UnmarshalText ¶
func (x *GroupArray) UnmarshalText(data []byte) error
func (*GroupArray) UnmarshalXMP ¶
type ID3 ¶
type ID3 struct {
AudioEncryption *AudioEncryption `id3:"AENC" xmp:"id3:audioEncryption"` // AENC Audio encryption
AttachedPicture AttachedPictureArray `id3:"APIC" xmp:"id3:attachedPicture"` // APIC Attached picture
AudioSeekPointIndex *AudioSeekIndex `id3:"ASPI,v2.4+" xmp:"id3:audioSeekPointIndex,v2.4+"` // ASPI Audio seek point index
Comments string `id3:"COMM" xmp:"id3:comments"` // COMM Comments
Commercial *Commercial `id3:"COMR" xmp:"id3:commercial"` // COMR Commercial frame
Encryption EncryptionMethodArray `id3:"ENCR" xmp:"id3:encryption"` // ENCR Encryption method registration
Equalization_v23 string `id3:"EQUA,v2.3-" xmp:"id3:equalization_v23,v2.3-"` // EQUA Equalization
Equalization EqualizationList `id3:"EQU2,v2.4+" xmp:"id3:equalization,v2.4+"` // EQU2 Equalisation (2)
EventTimingCodes MarkerList `id3:"ETCO" xmp:"id3:eventTimingCodes"` // ETCO Event timing codes
GeneralEncapsulatedObject EncapsulatedObjectArray `id3:"GEOB" xmp:"id3:generalEncapsulatedObject"` // GEOB General encapsulated object
GroupIdentifier GroupArray `id3:"GRID" xmp:"id3:groupIdentifier"` // GRID Group identification registration
InvolvedPeopleList_v23 string `id3:"IPLS,v2.3-" xmp:"id3:involvedPeopleList_v23,v2.3-"` // IPLS Involved people list
Link LinkArray `id3:"LINK" xmp:"id3:link"` // LINK Linked information
MusicCDIdentifier []byte `id3:"MCDI" xmp:"id3:musicCDIdentifier"` // MCDI Music CD identifier
MPEGLocationLookupTable []byte `id3:"MLLT" xmp:"id3:mpegLocationLookupTable"` // MLLT MPEG location lookup table
Ownership *Owner `id3:"OWNE" xmp:"id3:ownership"` // OWNE Ownership frame
Private PrivateDataArray `id3:"PRIV" xmp:"id3:private"` // PRIV Private frame
PlayCounter int64 `id3:"PCNT" xmp:"id3:playCounter"` // PCNT Play counter
Popularimeter PopularimeterArray `id3:"POPM" xmp:"id3:popularimeter"` // POPM Popularimeter
PositionSynchronization *PositionSync `id3:"POSS" xmp:"id3:positionSynchronization"` // POSS Position synchronisation frame
RecommendedBufferSize *BufferSize `id3:"RBUF" xmp:"id3:recommendedBufferSize"` // RBUF Recommended buffer size
RelativeVolumeAdjustment_v23 string `id3:"RVAD,v2.3-" xmp:"id3:relativeVolumeAdjustment_v23,v2.3-"` // RVAD Relative volume adjustment
RelativeVolumeAdjustment VolumeAdjustArray `id3:"RVA2,v2.4+" xmp:"id3:relativeVolumeAdjustment,v2.4+"` // RVA2 Relative volume adjustment (2)
Reverb *Reverb `id3:"RVRB" xmp:"id3:reverb"` // RVRB Reverb
Seek int64 `id3:"SEEK,v2.4+" xmp:"id3:seek,v2.4+"` // SEEK Seek frame
Signature SignatureArray `id3:"SIGN,v2.4+" xmp:"id3:signature,v2.4+"` // SIGN Signature frame
SynchronizedLyrics TimedLyricsArray `id3:"SYLT" xmp:"id3:synchronizedLyrics"` // SYLT Synchronized lyric/text
SynchronizedTempoCodes []byte `id3:"SYTC" xmp:"id3:synchronizedTempoCodes"` // SYTC Synchronized tempo codes
AlbumTitle string `id3:"TALB" xmp:"id3:albumTitle"` // TALB Album/Movie/Show title
BeatsPerMinute int `id3:"TBPM" xmp:"id3:beatsPerMinute"` // TBPM BPM (beats per minute)
Composer string `id3:"TCOM" xmp:"id3:composer"` // TCOM Composer
ContentType Genre `id3:"TCON" xmp:"id3:contentType"` // TCON Content type
Copyright string `id3:"TCOP" xmp:"id3:copyright"` // TCOP Copyright message
Date_v23 Date23 `id3:"TDAT,v2.3-" xmp:"id3:date_v23,v2.3-"` // TDAT Date
EncodingTime xmp.Date `id3:"TDEN,v2.4+" xmp:"id3:encodingTime,v2.4+"` // TDEN Encoding time
PlaylistDelay int64 `id3:"TDLY" xmp:"id3:playlistDelay"` // TDLY Playlist delay
OriginalReleaseTime xmp.Date `id3:"TDOR,v2.4+" xmp:"id3:originalReleaseTime,v2.4+"` // TDOR Original release time
RecordingTime xmp.Date `id3:"TDRC,v2.4+" xmp:"id3:recordingTime,v2.4+"` // TDRC Recording time
ReleaseTime xmp.Date `id3:"TDRL,v2.4+" xmp:"id3:releaseTime,v2.4+"` // TDRL Release time
TaggingTime xmp.Date `id3:"TDTG,v2.4+" xmp:"id3:taggingTime,v2.4+"` // TDTG Tagging time
EncodedBy string `id3:"TENC" xmp:"id3:encodedBy"` // TENC Encoded by
Lyricist string `id3:"TEXT" xmp:"id3:lyricist"` // TEXT Lyricist/Text writer
FileType string `id3:"TFLT" xmp:"id3:fileType"` // TFLT File type
Time_v23 Time23 `id3:"TIME,v2.3-" xmp:"id3:time_v23,v2.3-"` // TIME Time
InvolvedPeopleList string `id3:"TIPL,v2.4+" xmp:"id3:involvedPeopleList,v2.4+"` // TIPL Involved people list
ContentGroupDescription string `id3:"TIT1" xmp:"id3:contentGroupDescription"` // TIT1 Content group description
TitleDescription string `id3:"TIT2" xmp:"id3:titleDescription"` // TIT2 Title/songname/content description
SubTitle string `id3:"TIT3" xmp:"id3:subTitle"` // TIT3 Subtitle/Description refinement
InitialKey string `id3:"TKEY" xmp:"id3:initialKey"` // TKEY Initial key
Language string `id3:"TLAN" xmp:"id3:language"` // TLAN Language(s)
Length string `id3:"TLEN" xmp:"id3:length"` // TLEN Length
MusicianCreditsList string `id3:"TMCL,v2.4+" xmp:"id3:musicianCreditsList,v2.4+"` // TMCL Musician credits list
MediaType string `id3:"TMED" xmp:"id3:mediaType"` // TMED Media type
Mood string `id3:"TMOO,v2.4+" xmp:"id3:mood,v2.4+"` // TMOO Mood
OriginalAlbumTitle string `id3:"TOAL" xmp:"id3:originalAlbumTitle"` // TOAL Original album/movie/show title
OriginalFilename string `id3:"TOFN" xmp:"id3:originalFilename"` // TOFN Original filename
OriginalLyricist string `id3:"TOLY" xmp:"id3:originalLyricist"` // TOLY Original lyricist(s)/text writer(s)
OriginalArtist string `id3:"TOPE" xmp:"id3:originalArtist"` // TOPE Original artist(s)/performer(s)
OriginalReleaseYear_v23 int `id3:"TORY,v2.3-" xmp:"id3:originalReleaseYear_v23,v2.3-"` // TORY Original release year
FileOwner string `id3:"TOWN" xmp:"id3:fileOwner"` // TOWN File owner/licensee
LeadPerformer string `id3:"TPE1" xmp:"id3:leadPerformer"` // TPE1 Lead performer(s)/Soloist(s)
Band string `id3:"TPE2" xmp:"id3:band"` // TPE2 Band/orchestra/accompaniment
Conductor string `id3:"TPE3" xmp:"id3:conductor"` // TPE3 Conductor/performer refinement
ModifiedBy string `id3:"TPE4" xmp:"id3:modifiedBy"` // TPE4 Interpreted, remixed, or otherwise modified by
PartOfASet TrackNum `id3:"TPOS" xmp:"id3:partOfASet"` // TPOS Part of a set
ProducedNotice string `id3:"TPRO,v2.4+" xmp:"id3:producedNotice,v2.4+"` // TPRO Produced notice
Publisher string `id3:"TPUB" xmp:"id3:publisher"` // TPUB Publisher
TrackNumber TrackNum `id3:"TRCK" xmp:"id3:trackNumber"` // TRCK Track number/Position in set
RecordingDates string `id3:"TRDA" xmp:"id3:recordingDates"` // TRDA Recording dates
InternetRadioStationName string `id3:"TRSN" xmp:"id3:internetRadioStationName"` // TRSN Internet radio station name
InternetRadioStationOwner string `id3:"TRSO" xmp:"id3:internetRadioStationOwner"` // TRSO Internet radio station owner
Size_v23 string `id3:"TSIZ,v2.3-" xmp:"id3:size_v23,v2.3-"` // TSIZ Size
AlbumSortOrder string `id3:"TSOA,v2.4+" xmp:"id3:albumSortOrder,v2.4+"` // TSOA Album sort order
PerformerSortOrder string `id3:"TSOP,v2.4+" xmp:"id3:performerSortOrder,v2.4+"` // TSOP Performer sort order
TitleSortOrder string `id3:"TSOT,v2.4+" xmp:"id3:titleSortOrder,v2.4+"` // TSOT Title sort order
InternationalStandardRecordingCode string `id3:"TSRC" xmp:"id3:internationalStandardRecordingCode"` // TSRC ISRC (international standard recording code)
EncodedWith string `id3:"TSSE" xmp:"id3:encodedWith"` // TSSE Software/Hardware and settings used for encoding
SetSubtitle string `id3:"TSST,v2.4+" xmp:"id3:setSubtitle,v2.4+"` // TSST Set subtitle
Year_v23 int `id3:"TYER,v2.3-" xmp:"id3:year_v23,v2.3-"` // TYER Year
UserText string `id3:"TXXX" xmp:"id3:userText"` // TXXX User defined text information frame
UniqueFileIdentifier xmp.Uri `id3:"UFID" xmp:"id3:uniqueFileIdentifier"` // UFID Unique file identifier
TermsOfUse xmp.StringList `id3:"USER" xmp:"id3:termsOfUse"` // USER Terms of use
UnsynchronizedLyrics xmp.StringList `id3:"USLT" xmp:"id3:unsynchronizedLyrics"` // USLT Unsynchronized lyric/text transcription
CommercialInformation xmp.Url `id3:"WCOM" xmp:"id3:commercialInformation"` // WCOM Commercial information
CopyrightInformation xmp.Url `id3:"WCOP" xmp:"id3:copyrightInformation"` // WCOP Copyright/Legal information
OfficialAudioFileWebpage xmp.Url `id3:"WOAF" xmp:"id3:officialAudioFileWebpage"` // WOAF Official audio file webpage
OfficialArtistWebpage xmp.Url `id3:"WOAR" xmp:"id3:officialArtistWebpage"` // WOAR Official artist/performer webpage
OfficialAudioSourceWebpage xmp.Url `id3:"WOAS" xmp:"id3:officialAudioSourceWebpage"` // WOAS Official audio source webpage
OfficialInternetRadioStationHomepage xmp.Url `id3:"WORS" xmp:"id3:officialInternetRadioStationHomepage"` // WORS Official Internet radio station homepage
Payment xmp.Url `id3:"WPAY" xmp:"id3:payment"` // WPAY Payment
OfficialPublisherWebpage xmp.Url `id3:"WPUB" xmp:"id3:officialPublisherWebpage"` // WPUB Publishers official webpage
UserURL xmp.Url `id3:"WXXX" xmp:"id3:userURL"` // WXXX User defined URL link frame
AccessibilityText string `id3:"ATXT" xmp:"id3:accessibilityText"` // accessibility addendum http://id3.org/id3v2-accessibility-1.0
Chapters ChapterList `id3:"CHAP" xmp:"id3:chapters"` // chapters addedum http://id3.org/id3v2-chapters-1.0
TableOfContents TocEntryList `id3:"CTOC" xmp:"id3:tableOfContents"` // chapters addedum http://id3.org/id3v2-chapters-1.0
AlbumArtistSortOrder string `id3:"TSO2" xmp:"id3:albumArtistSortOrder"` // special iTunes tags
ComposerSortOrder string `id3:"TSOC" xmp:"id3:composerSortOrder"`
IsCompilation Bool `id3:"TCMP" xmp:"id3:isCompilation"`
ITunesU Bool `id3:"ITNU" xmp:"id3:iTunesU"`
IsPodcast Bool `id3:"PCST" xmp:"id3:isPodcast"`
PodcastDescription string `id3:"TDES" xmp:"id3:podcastDescription"`
PodcastID string `id3:"TGID" xmp:"id3:podcastID"`
PodcastURL string `id3:"WFED" xmp:"id3:podcastURL"`
PodcastKeywords string `id3:"TKWD" xmp:"id3:podcastKeywords"`
PodcastCategory string `id3:"TCAT" xmp:"id3:podcastCategory"`
Extension xmp.TagList `id3:",any" xmp:"id3:extension"`
}
func (*ID3) GetLocaleTag ¶
Returns tag value as string for the selected language. Falls back to default language when lang is empty.
func (*ID3) Namespaces ¶
func (m *ID3) Namespaces() xmp.NamespaceList
type Link ¶
type Link struct {
LinkedID string `xmp:"id3:linkedId,attr"`
Url string `xmp:"id3:url,attr"`
Extra xmp.StringList `xmp:"id3:extra"`
}
LINK
type LinkArray ¶
type LinkArray []Link
func (LinkArray) MarshalXMP ¶
func (*LinkArray) UnmarshalText ¶
type LyricsType ¶
type LyricsType byte
const ( LyricsTypeOther LyricsType = 0x00 // other LyricsTypeLyrics LyricsType = 0x01 // lyrics LyricsTypeTranscript LyricsType = 0x02 // text transcription LyricsTypePart LyricsType = 0x03 // movement/part name (e.g. "Adagio") LyricsTypeEvent LyricsType = 0x04 // events (e.g. "Don Quijote enters the stage") LyricsTypeChord LyricsType = 0x05 // chord (e.g. "Bb F Fsus") LyricsTypeTrivia LyricsType = 0x06 // trivia/'pop up' information LyricsTypeWebUrl LyricsType = 0x07 // URLs to webpages LyricsTypeImageUrl LyricsType = 0x08 // URLs to images )
type Marker ¶
type Marker struct {
MarkerType MarkerType `xmp:"id3:type,attr"`
Timestamp int64 `xmp:"id3:timestamp,attr"`
Unit UnitType `xmp:"id3:unit,attr"`
}
ETCO
type MarkerList ¶
type MarkerList []Marker
func (MarkerList) MarshalXMP ¶
func (MarkerList) Typ ¶
func (x MarkerList) Typ() xmp.ArrayType
func (*MarkerList) UnmarshalText ¶
func (x *MarkerList) UnmarshalText(data []byte) error
func (*MarkerList) UnmarshalXMP ¶
type MarkerType ¶
type MarkerType byte
const ( MarkerTypePadding MarkerType = 0x00 // padding (has no meaning) MarkerTypeEOS MarkerType = 0x01 // end of initial silence MarkerTypeIntroStart MarkerType = 0x02 // intro start MarkerTypeMainStart MarkerType = 0x03 // main part start MarkerTypeOutroStart MarkerType = 0x04 // outro start MarkerTypeOutroEnd MarkerType = 0x05 // outro end MarkerTypeVerseStart MarkerType = 0x06 // verse start MarkerTypeRefrainStart MarkerType = 0x07 // refrain start MarkerTypeInterludeStart MarkerType = 0x08 // interlude start MarkerTypeThemeStart MarkerType = 0x09 // theme start MarkerTypeVariationStart MarkerType = 0x0A // variation start MarkerTypeKeyChange MarkerType = 0x0B // key change MarkerTypeTimeChange MarkerType = 0x0C // time change MarkerTypeTemporaryNoise MarkerType = 0x0D // momentary unwanted noise (Snap, Crackle & Pop) MarkerTypeNoiseStart MarkerType = 0x0E // sustained noise MarkerTypeNoiseEnd MarkerType = 0x0F // sustained noise end MarkerTypeIntroEnd MarkerType = 0x10 // intro end MarkerTypeMainEnd MarkerType = 0x11 // main part end MarkerTypeVerseEnd MarkerType = 0x12 // verse end MarkerTypeRefrainEnd MarkerType = 0x13 // refrain end MarkerTypeThemeEnde MarkerType = 0x14 // theme end MarkerTypeProfanityStart MarkerType = 0x15 // profanity MarkerTypeProfanityEnd MarkerType = 0x16 // profanity end MarkerTypeAudioEnd MarkerType = 0xFD // audio end (start of silence) MarkerTypeFileEnd MarkerType = 0xFE // audio file ends )
type Owner ¶
type Owner struct {
Currency string `xmp:"id3:currency"`
Price float32 `xmp:"id3:price"`
PurchaseDate xmp.Date `xmp:"id3:purchaseDate"`
Seller string `xmp:"id3:seller"`
}
OWNE
func (*Owner) UnmarshalText ¶
type PictureType ¶
type PictureType byte
const ( PictureTypeOther PictureType = 0x00 // Other PictureTypeFileIcon32 PictureType = 0x01 // 32x32 pixels 'file icon' (PNG only) PictureTypeFileIcon PictureType = 0x02 // Other file icon PictureTypeFrontCover PictureType = 0x03 // Cover (front) PictureTypeBackCover PictureType = 0x04 // Cover (back) PictureTypeLeaflet PictureType = 0x05 // Leaflet page PictureTypeMedia PictureType = 0x06 // Media (e.g. label side of CD) PictureTypePerformer PictureType = 0x07 // Lead artist/lead performer/soloist PictureTypeArtist PictureType = 0x08 // Artist/performer PictureTypeConductor PictureType = 0x09 // Conductor PictureTypeBand PictureType = 0x0A // Band/Orchestra PictureTypeComposer PictureType = 0x0B // Composer PictureTypeWriter PictureType = 0x0C // Lyricist/text writer PictureTypeLocation PictureType = 0x0D // Recording Location PictureTypeRecording PictureType = 0x0E // During recording PictureTypePerformance PictureType = 0x0F // During performance PictureTypeSnapshot PictureType = 0x10 // Movie/video screen capture PictureTypeFinish PictureType = 0x11 // A bright coloured fish PictureTypeIllustration PictureType = 0x12 // Illustration PictureTypeArtistLogo PictureType = 0x13 // Band/artist logotype PictureTypePublisherLogo PictureType = 0x14 // Publisher/Studio logotype )
type Popularimeter ¶
type Popularimeter struct {
Email string `xmp:"id3:email,attr"`
Rating byte `xmp:"id3:rating,attr"`
Counter int64 `xmp:"id3:counter,attr"`
}
POPM
type PopularimeterArray ¶
type PopularimeterArray []Popularimeter
func (PopularimeterArray) MarshalXMP ¶
func (PopularimeterArray) Typ ¶
func (x PopularimeterArray) Typ() xmp.ArrayType
func (*PopularimeterArray) UnmarshalText ¶
func (x *PopularimeterArray) UnmarshalText(data []byte) error
func (*PopularimeterArray) UnmarshalXMP ¶
type PositionSync ¶
type PositionSync struct {
Unit PositionType `xmp:"id3:unit,attr"`
Position int64 `xmp:"id3:position,attr"`
}
POSS
type PositionType ¶
type PositionType byte
const ( PositionTypeFrame PositionType = 0x1 // MPEG frames PositionTypeMs PositionType = 0x2 // millisec )
type PrivateData ¶
PRIV
type PrivateDataArray ¶
type PrivateDataArray []PrivateData
func (PrivateDataArray) MarshalXMP ¶
func (PrivateDataArray) Typ ¶
func (x PrivateDataArray) Typ() xmp.ArrayType
func (*PrivateDataArray) UnmarshalText ¶
func (x *PrivateDataArray) UnmarshalText(data []byte) error
func (*PrivateDataArray) UnmarshalXMP ¶
type Reverb ¶
type Reverb struct {
ReverbLeftMs int `xmp:"id3:reverbLeftMs"`
ReverbRightMs int `xmp:"id3:reverbRightMs"`
ReverbBouncesLeft byte `xmp:"id3:reverbBouncesLeft"`
ReverbBouncesRight byte `xmp:"id3:reverbBouncesRight"`
ReverbFeedbackLtoL byte `xmp:"id3:reverbFeedbackLtoL"`
ReverbFeedbackLToR byte `xmp:"id3:reverbFeedbackLToR"`
ReverbFeedbackRtoR byte `xmp:"id3:reverbFeedbackRtoR"`
ReverbFeedbackRtoL byte `xmp:"id3:reverbFeedbackRtoL"`
PremixLtoR byte `xmp:"id3:premixLtoR"`
PremixRtoL byte `xmp:"id3:premixRtoL"`
}
RVRB
func (*Reverb) UnmarshalText ¶
type Signature ¶
type Signature struct {
GroupSymbol byte `xmp:"id3:groupSymbol,attr"` // 0x80-0xF0
Signature []byte `xmp:"id3:signature"`
}
SIGN
type SignatureArray ¶
type SignatureArray []Signature
func (SignatureArray) MarshalXMP ¶
func (SignatureArray) Typ ¶
func (x SignatureArray) Typ() xmp.ArrayType
func (*SignatureArray) UnmarshalText ¶
func (x *SignatureArray) UnmarshalText(data []byte) error
func (*SignatureArray) UnmarshalXMP ¶
type TimedLyrics ¶
type TimedLyrics struct {
Lang string `xmp:"id3:lang,attr"`
Type LyricsType `xmp:"id3:type,attr"`
Unit PositionType `xmp:"id3:unit,attr"`
Lyrics TimedTextList `xmp:"id3:lyrics,attr"`
}
SYLT
type TimedLyricsArray ¶
type TimedLyricsArray []TimedLyrics
func (TimedLyricsArray) MarshalXMP ¶
func (TimedLyricsArray) Typ ¶
func (x TimedLyricsArray) Typ() xmp.ArrayType
func (*TimedLyricsArray) UnmarshalText ¶
func (x *TimedLyricsArray) UnmarshalText(data []byte) error
see id3 v.24 spec 4.9 - one id3 frame per language and content type - null-terminated text followed by a timestamp and optionally newline
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx xx "glan" $00 xx xx "ces" $00 xx xx
func (*TimedLyricsArray) UnmarshalXMP ¶
type TimedTextList ¶
type TimedTextList []TimedText
func (TimedTextList) MarshalXMP ¶
func (TimedTextList) Typ ¶
func (x TimedTextList) Typ() xmp.ArrayType
func (*TimedTextList) UnmarshalXMP ¶
type TocEntry ¶
type TocEntry struct {
Flags int `xmp:"id3:flags"`
IDList xmp.StringList `xmp:"id3:idlist"`
Info string `xmp:"id3:info"`
}
CTOC
type TocEntryList ¶
type TocEntryList []TocEntry
func (TocEntryList) MarshalXMP ¶
func (TocEntryList) Typ ¶
func (x TocEntryList) Typ() xmp.ArrayType
func (*TocEntryList) UnmarshalText ¶
func (x *TocEntryList) UnmarshalText(data []byte) error
func (*TocEntryList) UnmarshalXMP ¶
type VolumeAdjust ¶
type VolumeAdjust struct {
Channel ChannelType `xmp:"id3:channel,attr"`
Adjustment float32 `xmp:"id3:adjust,attr"`
Bits byte `xmp:"id3:bits,attr"`
PeakVolume float32 `xmp:"id3:peak,attr"`
}
RVA2
type VolumeAdjustArray ¶
type VolumeAdjustArray []VolumeAdjust
func (VolumeAdjustArray) MarshalXMP ¶
func (VolumeAdjustArray) Typ ¶
func (x VolumeAdjustArray) Typ() xmp.ArrayType
func (*VolumeAdjustArray) UnmarshalText ¶
func (x *VolumeAdjustArray) UnmarshalText(data []byte) error
func (*VolumeAdjustArray) UnmarshalXMP ¶
Click to show internal directories.
Click to hide internal directories.