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.