<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.shoutirc.com/index.php?action=history&amp;feed=atom&amp;title=ShoutIRC_Music_Database</id>
	<title>ShoutIRC Music Database - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.shoutirc.com/index.php?action=history&amp;feed=atom&amp;title=ShoutIRC_Music_Database"/>
	<link rel="alternate" type="text/html" href="https://wiki.shoutirc.com/index.php?title=ShoutIRC_Music_Database&amp;action=history"/>
	<updated>2026-04-28T21:23:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.shoutirc.com/index.php?title=ShoutIRC_Music_Database&amp;diff=2783&amp;oldid=prev</id>
		<title>Indy at 03:31, 25 October 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.shoutirc.com/index.php?title=ShoutIRC_Music_Database&amp;diff=2783&amp;oldid=prev"/>
		<updated>2008-10-25T03:31:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;ShoutIRC Music Database is (yet another) XML-based format.&lt;br /&gt;
&lt;br /&gt;
There are 2 variants of the format, SMD (a plain XML file), and SMZ, which is a compressed XML file with a custom header.&lt;br /&gt;
&lt;br /&gt;
==Compressed SMD Structure==&lt;br /&gt;
&lt;br /&gt;
The 16-byte header is like this: (Note: All values are Little Endian!)&lt;br /&gt;
 SMDZ string, 4 bytes long&lt;br /&gt;
 compLen, unsigned 32-bit int, the compressed length of the data&lt;br /&gt;
 fullLen, unsigned 32-bit int, the decompressed length of the data&lt;br /&gt;
 reserved, 4 bytes of zeros (0x00, not &amp;#039;0&amp;#039;)&lt;br /&gt;
The file then continues with compLen of zlib compressed data, you decompress it with zlib&amp;#039;s uncompress() function&lt;br /&gt;
&lt;br /&gt;
==XML Schema==&lt;br /&gt;
&lt;br /&gt;
First, there is a standard XML declaration, followed by an SMD element with 2 attributes:&lt;br /&gt;
 Version=&amp;quot;1&amp;quot; (currently the only defined version)&lt;br /&gt;
 URL=&amp;quot; (this URL, so people can easily find this information)&lt;br /&gt;
&lt;br /&gt;
Under SMD, there is an Info element with these 2 attributes:&lt;br /&gt;
 NumSongs=&amp;quot;X&amp;quot; (the number of songs listed in the XML)&lt;br /&gt;
 TotalLength=&amp;quot;Y&amp;quot; (the combined number of seconds of the files in the playlist)&lt;br /&gt;
&lt;br /&gt;
Next under SMD is a Songs element, which has one or more Song sub-elements representing the individual songs.&lt;br /&gt;
&lt;br /&gt;
Each Song element has several keys describing the song, most are self-explanatory but there are 2 that I should document.&lt;br /&gt;
 ID=&amp;quot;X&amp;quot; - This is a CRC32 of the full path and filename of the song, it serves as a unique identifier for the song. On Win32, the full path and filename is converted to lowercase before CRCing it.&lt;br /&gt;
 SongLen=&amp;quot;Y&amp;quot; - The length in seconds of the song.&lt;br /&gt;
 mTime=&amp;quot;Z&amp;quot; (the last modification time of the file, ie. st_mtime from a stat() call)&lt;br /&gt;
&lt;br /&gt;
==Example file==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;SMD Version=&amp;quot;1&amp;quot; URL=&amp;quot;http://wiki.shoutirc.com/index.php/ShoutIRC_Music_Database&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Info NumSongs=&amp;quot;4&amp;quot; TotalLength=&amp;quot;1104&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Songs&amp;gt;&lt;br /&gt;
   &amp;lt;Song ID=&amp;quot;1948625078&amp;quot; SongLen=&amp;quot;264&amp;quot; mTime=&amp;quot;1184011737&amp;quot; Path=&amp;quot;F:\FServ\MP3\&amp;quot; FN=&amp;quot;Aaliyah - I Care 4 U - Are You That Somebody.mp3&amp;quot; Artist=&amp;quot;Aaliyah&amp;quot; Title=&amp;quot;Are You That Somebody&amp;quot; Album=&amp;quot;I Care 4 U&amp;quot; Genre=&amp;quot;Other&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;Song ID=&amp;quot;1717573007&amp;quot; SongLen=&amp;quot;192&amp;quot; mTime=&amp;quot;1170372448&amp;quot; Path=&amp;quot;F:\FServ\MP3\&amp;quot; FN=&amp;quot;Bowling for Soup - 1985 - 1985.mp3&amp;quot; Artist=&amp;quot;Bowling for Soup&amp;quot; Title=&amp;quot;1985&amp;quot; Album=&amp;quot;1985&amp;quot; Genre=&amp;quot;Other&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;Song ID=&amp;quot;51744986&amp;quot; SongLen=&amp;quot;366&amp;quot; mTime=&amp;quot;1192171596&amp;quot; Path=&amp;quot;F:\FServ\MP3\&amp;quot; FN=&amp;quot;Bubbles - Super Troopers - Bidibodi Bidibu.mp3&amp;quot; Artist=&amp;quot;Bubbles&amp;quot; Title=&amp;quot;Bidibodi Bidibu&amp;quot; Album=&amp;quot;Super Troopers&amp;quot; Genre=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;Song ID=&amp;quot;3690314031&amp;quot; SongLen=&amp;quot;282&amp;quot; mTime=&amp;quot;1192176018&amp;quot; Path=&amp;quot;F:\FServ\MP3\&amp;quot; FN=&amp;quot;Nirvana - In Utero - Heart-Shaped Box.mp3&amp;quot; Artist=&amp;quot;Nirvana&amp;quot; Title=&amp;quot;Heart-Shaped Box&amp;quot; Album=&amp;quot;In Utero&amp;quot; Genre=&amp;quot;Alternative Rock&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/Songs&amp;gt;&lt;br /&gt;
 &amp;lt;/SMD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ircbot programming}}&lt;/div&gt;</summary>
		<author><name>Indy</name></author>
	</entry>
</feed>