Difference between revisions of "SHOUTcast XML Metadata Specification"

From Winamp Developer Wiki
Jump to: navigation, search
(New page: ==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 pr...)
 
m
Line 59: Line 59:
 
    
 
    
 
   <!-- Universal file identifier. The content is base64 encoded binary data -->
 
   <!-- Universal file identifier. The content is base64 encoded binary data -->
   <UFID id="http://www.neil.com">00000003f32f17 </UFID>
+
   <nowiki><UFID id="http://www.neil.com">00000003f32f17 </UFID></nowiki>
 
    
 
    
 
   <!-- Beats per minute. Numeric -->
 
   <!-- Beats per minute. Numeric -->
Line 181: Line 181:
 
   <!-- Commercial information url of where the thing can be bought from.
 
   <!-- Commercial information url of where the thing can be bought from.
 
       There can be more than one of these present -->
 
       There can be more than one of these present -->
   <WCOM>http://www.aol.com/purchasestuff.cgi</WCOM>
+
   <nowiki><WCOM>http://www.aol.com/purchasestuff.cgi</WCOM></nowiki>
   <WCOM>http://capitol.com/store.cgi</WCOM>
+
   <nowiki><WCOM>http://capitol.com/store.cgi</WCOM></nowiki>
 
   .
 
   .
 
   .
 
   .
 
   <!-- Website with copyright and terms of use information -->
 
   <!-- Website with copyright and terms of use information -->
   <WCOP>http://www.aol.com/dontstealmusic.html</WCOP>
+
   <nowiki><WCOP>http://www.aol.com/dontstealmusic.html</WCOP></nowiki>
 
    
 
    
 
   <!-- Website specific to the audio track -->
 
   <!-- Website specific to the audio track -->
   <WOAF>http://www.aol.com/backinussr.html</WOAF>
+
   <nowiki><WOAF>http://www.aol.com/backinussr.html</WOAF></nowiki>
 
    
 
    
 
   <!-- Artist / performer webpages. There can be more than one of these present -->
 
   <!-- Artist / performer webpages. There can be more than one of these present -->
   <WOAR>http://www.aol.com/paulmccartney.html</WOAR>
+
   <nowiki><WOAR>http://www.aol.com/paulmccartney.html</WOAR></nowiki>
   <WOAR>http://www.aol.com/johnlennon.html</WOAR>
+
   <nowiki><WOAR>http://www.aol.com/johnlennon.html</WOAR></nowiki>
 
   .
 
   .
 
   .
 
   .
 
   <!-- Audio source web page -->
 
   <!-- Audio source web page -->
   <WOAS>http://www.aol.com/beatles.html</WOAS>
+
   <nowiki><WOAS>http://www.aol.com/beatles.html</WOAS></nowiki>
 
    
 
    
 
   <!-- Radio station web page -->
 
   <!-- Radio station web page -->
   <WORS>http://shoutcast.com/search.cgi?Neil</WORS>
+
   <nowiki><WORS>http://shoutcast.com/search.cgi?Neil</WORS></nowiki>
 
    
 
    
 
   <!-- Website that allows you to pay for the file -->
 
   <!-- Website that allows you to pay for the file -->
   <WPAY>http://purchase.com/pay.cgi?backinussr</WPAY>
+
   <nowiki><WPAY>http://purchase.com/pay.cgi?backinussr</WPAY></nowiki>
 
    
 
    
 
   <!-- Publishers web page -->
 
   <!-- Publishers web page -->
   <WPUB>http://ascap.com</WPUB>
+
   <nowiki><WPUB>http://ascap.com</WPUB></nowiki>
 
    
 
    
 
   <!-- Custom url field. There can be more than one of these
 
   <!-- Custom url field. There can be more than one of these
 
       present but each must have a unique id attribute -->
 
       present but each must have a unique id attribute -->
 
   <WXXX id="backup singers">
 
   <WXXX id="backup singers">
     http://yoko_ono.com
+
     <nowiki>http://yoko_ono.com</nowiki>
 
   </WXXX>
 
   </WXXX>
 
   <WXXX id="engineers">
 
   <WXXX id="engineers">
     http://george_martin.com
+
     <nowiki>http://george_martin.com</nowiki>
 
   </WXXX>
 
   </WXXX>
 
   .
 
   .

Revision as of 18:09, 18 January 2011

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.