SHOUTcast XML Metadata Specification
Contents
Introduction
The aim of this file is to show the different aspects of metadata which can be obtained as part of the SHOUTcast 2.0 system. This aims to be a complete list of what is provided in the xml file which the server will provide and is based on the metadata obtained from the media being played (directly or guessed). As a result, not all fields will be filled in though this depends on the setup.
Specification Details
The following is an example xml file output showing the different aspects of metadata which can be returned along with specific notes about certain fields i.e. those which can appear multiple times or those from the older mappings.
<?xml version="1.0" encoding="UTF-8" ?> <metadata> <TALB>The Blue Album</TALB> <TCON v1="24">Subgenre</TCON> <TCON v1="RX"></TCON> <TCON>Death Metal</TCON> . . <TIT2>Back In the U.S.S.R.</TIT2> <TPE1>The Beatles</TPE1> . . <TDRC> <year>2008</year> <month>12</month> <day>25</day> <hour>13</hour> <minute>24</minute> <zone>Z</zone> </TDRC> <COMM language="eng" id="whatever"> This is a comment </COMM> <COMM language="eng" id="more"> This is another comment </COMM> . . <UFID id="http://www.neil.com">00000003f32f17 </UFID> <TBPM>60</TBPM> <TCOM>Paul McCartney</TCOM> <TCOM>John Lennon</TCOM> . . <TCOP>2008 Neil Radisch</TCOP> <TDLY>45</TDLY> <TENC>Sir Compressalot</TENC> <TEXT>Oscar Hammerstein</TEXT> <TEXT>Lorenz Hart</TEXT> . . <TFLT>MPG/AAC</TFLT> <TIT1>Concept Album</TIT1> <TIT3>Those Ukraine Girls</TIT3> <TKEY>C#</TKEY> <TLAN>eng</TLAN> <TLAN>sve</TLAN> . . <TLEN>60000</TLEN> <TMED>(VID/PAL) four channel</TMED> <TOAL>The White Album</TOAL> <TOFN>bit_ussr.mp3</TOFN> <TOLY>Jean Paul Satre</TOLY> <TOLY>Ayn Rand</TOLY> . . <TOPE>Bruce Springstein</TOPE> <TOPE>E Street Band</TOPE> . . <TDOR> <year>2008</year> <month>12</month> <day>25</day> <hour>13</hour> <minute>24</minute> <zone>Z</zone> </TDOR> <TOWN>Ascap</TOWN> <TPE2>Featuring Yoko Ono</TPE2> <TPE3>Zubin Mehta</TPE3> <TPE4>Sonic cleanup corp</TPE4> <TPOS total="4">2</TPOS> <TPUB>Capitol Records</TPUB> <TRCK total="24">6</TRCK> <TRSN>Neils Radio Station</TRSN> <TRSO>Neil Radisch</TRSO> <TSIZ>3456627</TSIZ> <TSRC>FRZ039800212</TSRC> <TSSE>Profile 16</TSSE> <TXXX id="contents of neils garden"> Roses, grapes, raspberries, blackberries </TXXX> <TXXX id="contents of peters garden"> beans, kale, raspberries, blackberries </TXXX> . . <WCOM>http://www.aol.com/purchasestuff.cgi</WCOM> <WCOM>http://capitol.com/store.cgi</WCOM> . . <WCOP>http://www.aol.com/dontstealmusic.html</WCOP> <WOAF>http://www.aol.com/backinussr.html</WOAF> <WOAR>http://www.aol.com/paulmccartney.html</WOAR> <WOAR>http://www.aol.com/johnlennon.html</WOAR> . . <WOAS>http://www.aol.com/beatles.html</WOAS> <WORS>http://shoutcast.com/search.cgi?Neil</WORS> <WPAY>http://purchase.com/pay.cgi?backinussr</WPAY> <WPUB>http://ascap.com</WPUB> <WXXX id="backup singers"> http://yoko_ono.com </WXXX> <WXXX id="engineers"> http://george_martin.com </WXXX> . . <IPLS role="drummer">Ringo Starr</IPLS> <IPLS role="janitor">John Smith</IPLS> . . <MCDI>000000000......</MCDI> <ETCO format="0"> <event type="1" time="234" /> <event type="3" time="4567" /> . . </ETCO> <USLT language="eng" id="verse 1"> yeah yeah yeah oh baby yeah yeah yeah </USLT> <USLT language="eng" id="verse 2"> oh oh oh baby baby baby </USLT> . . <APIC mime="image/jpg" type="3" id="entire band">000003243023532</APIC> <APIC mime="image/jpg" type="6" id="paul">000003243023532</APIC> . . <GEOB mime="application/octet" filename="foo.bar" id="whatever">02305310</GEOB> <GEOB mime="virus/binary" filename="kill.computer" id="die kitty">02305310</GEOB> . . <PCNT>45678</PCNT> <POPM> <email>nradisch@panix.com</email> <rating>35</rating> <counter>5463767</counter> </POPM> <POSS format="1">343253</POSS> <USER language="eng">please steal me</USER> <PRIV id="huh">2342512370</PRIV> <PRIV id="huh2">34343434</PRIV> . . </metadata>
General Comments
Anyone using the xml file should not fail if tags appear in it which have not been listed in this document. In situations where this does happen then these extra tags should just be ignored. Tags not considered in this version are:
MLLT - MPEG audio lookup tables for seeking SYTC - Synchronized tempo codes (table of tempo changes in music and how) SYLT - Synchronized lyrics RVAD - Relative volume adjustment EQUA - Equalization RVRB - Reverb RBUF - Recommended buffer size AENC - Audio encryption LINK - Linked ID3v2 data OWNE - Date of purchase COMR - Commercial purchase offers ENCR - Encryption method registration GRID - Group identification registration
GEOB - General Binary Glob
Properties:
mime - mime type filename - associated filename id = text identifier Data is base64 encoded
APIC - Picture Data
Properties:
mime - mime type of picture type - code describing type of image (album from, album back, artist portrait etc. see ID3v2 tag description for list) id - text identifier Data is base64 encoded
ETCO - Event Code Field
The ETCO tag has a format property where the supported values are:
0 - absolute time in MPEG frames 1 - absolute time in milliseconds
The ETCO tag can have one or more event sub-tags. The type property for the event tag is the type of event we're interested in (see ID3v2 docs for list of codes). The time property is the time the event occurs in units indicated by the format property of the outer ETCO tag.
TCON - Genre Field
TCON has a complicated internal format which consists of a series of optional genre codes stored in parenthesis which are followed by subgenre clarification strings (though everything is optional) e.g.
(24)Death Metal (12)(24)Cuban (15) Die Kitty Die (24)Death Metal(12)Cuban
There are also two special 'codes' where 'RX' means remix and 'CR' means cover.
(24)(MX)DeathMetal (CR)Whatever
Due to genre being something we care about it is parsed as indicated in the example xml.
TMED - Media Type Field
The TMED field has a somewhat complicated internal format in that it can be just a string or it can be a media reference from a predefined list with a refinement e.g.
From my album collection (VID) (VID)Stereo (TT/45)From my old 45 collection
This field is not currently as important to be parsed out as with the genre (TCON) field but is provided for a more complete set of information.
Non-MP3 Field Mapping
This section covers the mapping of metadata for files other than MP3 as is supported by the the SHOUTcast 2.0 tools.
AAC
If an ID3v2 tag is found then handling will follow the standard MP3 handling. If there is no tag then metadata guessing will be used as appropriately.
FLAC
If there are any Vorbis comment are found in the FLAC file then the following mappings will be used to get an equivalent complement of metadata to match what is read from an ID3v2 tag:
Vorbis Comment -> ID3v2 Entry TITLE TIT2 VERSION TPE4 ALBUM TALB TRACKNUMBER TRCK TRACK TRCK TOTALTRACKS TRCK ARTIST TPE1 PERFORMER TPE2 COPYRIGHT TCOP LICENSE TOWN ORGANIZATION TPUB ORGANISATION TPUB GENRE TCON DATE TDRC ISRC TSRC ALBUMARTIST TPE2 ALBUM ARTIST TPE2 COMMENT COMM COMPOSER TCOM PUBLISHER TPUB DISCNUMBER TPOS DISKNUMBER TPOS DISC TPOS DISK TPOS TOTALDISKS TPOS TOTALDISCS TPOS BAND TPE2 LYRICS USLT CONDUCTOR TPE3 ENCODING SETTINGS TSSE ENCODER SETTINGS TSSE ENCODERSETTINGS TSSE BPM TBPM RATING POPM
Fields which are not in this list are then mapped to the custom text (TXXX) field with the key being the "description". Any picture metadata in the file will be mapped to the APIC field.
OGG
OGG files are handled in a similar manner to FLAC files though there are some differences with the them. As there is no picture metadata in OGG files the COVERARTMIME and COVERART fields will be mapped to the APIC field due to a number of programmes which generate and adding artwork to OGG files in this way.