Dear monks,

I've been trying to find (or, as it looks now, write) something that I can show on my website what's currently playing on my iTunes. After searching through CPAN, I find that everything in there is either incomplete, or doesn't exist.

There's nothing I can find that will get the current playlist from iTunes, and I can't find anything that my brain parses as far as my other option (uploading my favorite playlists and parsing them using some sort of iTunes module).

It looks like I'm going to have to get involved somehow if I want something in the near future...is this correct thinking? Or should I pick through the XML file that I can have iTunes dump for me and parse it on my own using XML::Twig or something?

Help, wise ones...

PS: it would probably help for y'all to take a look at an example of an iTunes generated playlist...

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http:// +www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Major Version</key><integer>1</integer> <key>Minor Version</key><integer>1</integer> <key>Application Version</key><string>7.0.2</string> <key>Features</key><integer>1</integer> <key>Show Content Ratings</key><true/> <key>Music Folder</key><string>file://localhost/C:/Documents%20and +%20Settings/Devin/My%20Documents/My%20Music/iTunes/iTunes%20Music/</s +tring> <key>Library Persistent ID</key><string>B7F13C5664B76F5E</string> <key>Tracks</key> <dict> <key>6639</key> <dict> <key>Track ID</key><integer>6639</integer> <key>Name</key><string>Please Forgive Me</string> <key>Artist</key><string>Bryan Adams</string> <key>Album Artist</key><string>Bryan Adams</string> <key>Composer</key><string>Bryan Adams/Robert John "Mutt" +Lange</string> <key>Album</key><string>The Best of Me</string> <key>Genre</key><string>Rock</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>5702522</integer> <key>Total Time</key><integer>355343</integer> <key>Track Number</key><integer>13</integer> <key>Year</key><integer>2001</integer> <key>Date Modified</key><date>2006-10-20T06:06:26Z</date> <key>Date Added</key><date>2006-11-13T05:50:43Z</date> <key>Bit Rate</key><integer>128</integer> <key>Sample Rate</key><integer>44100</integer> <key>Play Count</key><integer>1</integer> <key>Play Date</key><integer>3246228984</integer> <key>Play Date UTC</key><date>2006-11-13T09:16:24Z</date> <key>Persistent ID</key><string>B7F13C5664B775D5</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Bryan%20Adams-Please%20Forgive%20Me.mp3< +/string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>7843</key> <dict> <key>Track ID</key><integer>7843</integer> <key>Name</key><string>Numb</string> <key>Artist</key><string>Linkin Park</string> <key>Album Artist</key><string>Linkin Park</string> <key>Composer</key><string>Linkin Park</string> <key>Album</key><string>Meteora</string> <key>Genre</key><string>Rock</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>4503928</integer> <key>Total Time</key><integer>187480</integer> <key>Track Number</key><integer>13</integer> <key>Year</key><integer>2003</integer> <key>Date Modified</key><date>2006-10-24T12:20:23Z</date> <key>Date Added</key><date>2006-11-13T05:50:53Z</date> <key>Bit Rate</key><integer>192</integer> <key>Sample Rate</key><integer>44100</integer> <key>Play Count</key><integer>1</integer> <key>Play Date</key><integer>3246228402</integer> <key>Play Date UTC</key><date>2006-11-13T09:06:42Z</date> <key>Persistent ID</key><string>B7F13C5664B77967</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Linkin%20Park-%20Numb.mp3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8232</key> <dict> <key>Track ID</key><integer>8232</integer> <key>Name</key><string>Average Man</string> <key>Artist</key><string>Obie Trice</string> <key>Album</key><string>Cheers</string> <key>Genre</key><string>Rap</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>6165329</integer> <key>Total Time</key><integer>256862</integer> <key>Track Number</key><integer>1</integer> <key>Year</key><integer>2003</integer> <key>Date Modified</key><date>2006-05-15T18:01:00Z</date> <key>Date Added</key><date>2006-11-13T05:50:55Z</date> <key>Bit Rate</key><integer>192</integer> <key>Sample Rate</key><integer>44100</integer> <key>Play Count</key><integer>1</integer> <key>Play Date</key><integer>3246227679</integer> <key>Play Date UTC</key><date>2006-11-13T08:54:39Z</date> <key>Normalization</key><integer>29055</integer> <key>Persistent ID</key><string>B7F13C5664B77A8F</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Obie%20Trice/Cheers/01%20Average%20Man.m +p3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8414</key> <dict> <key>Track ID</key><integer>8414</integer> <key>Name</key><string>Every Little Thing She Does Is Magi +c</string> <key>Artist</key><string>Ra</string> <key>Album</key><string>Duality</string> <key>Genre</key><string>Hard Rock</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>5446468</integer> <key>Total Time</key><integer>226664</integer> <key>Track Number</key><integer>11</integer> <key>Date Modified</key><date>2006-05-09T03:38:44Z</date> <key>Date Added</key><date>2006-11-13T05:50:57Z</date> <key>Bit Rate</key><integer>192</integer> <key>Sample Rate</key><integer>44100</integer> <key>Comments</key><string> 00002617 000022F7 00005EDB 000 +051C3 0000BBE7 00009837 00008000 00008000 000023C5 000023C5</string> <key>Play Count</key><integer>3</integer> <key>Play Date</key><integer>3246228629</integer> <key>Play Date UTC</key><date>2006-11-13T09:10:29Z</date> <key>Persistent ID</key><string>B7F13C5664B77B19</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/RA/Duality/11%20Every%20Little%20Thing%2 +0She%20Does%20Is%20Ma.mp3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8453</key> <dict> <key>Track ID</key><integer>8453</integer> <key>Name</key><string>What Hurts The Most</string> <key>Artist</key><string>Rascal Flatts</string> <key>Album</key><string>N/A</string> <key>Genre</key><string>Country</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>5130240</integer> <key>Total Time</key><integer>213681</integer> <key>Year</key><integer>2006</integer> <key>Date Modified</key><date>2006-11-06T10:28:30Z</date> <key>Date Added</key><date>2006-11-13T05:50:57Z</date> <key>Bit Rate</key><integer>192</integer> <key>Sample Rate</key><integer>44100</integer> <key>Play Count</key><integer>1</integer> <key>Play Date</key><integer>3246226485</integer> <key>Play Date UTC</key><date>2006-11-13T08:34:45Z</date> <key>Persistent ID</key><string>B7F13C5664B77B36</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Rascal%20Flatts%20-%20What%20Hurts%20the +%20Most.mp3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8480</key> <dict> <key>Track ID</key><integer>8480</integer> <key>Name</key><string>Rest in Pieces</string> <key>Artist</key><string>Saliva</string> <key>Album</key><string>Back into Your System</string> <key>Genre</key><string>Rock</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>5443888</integer> <key>Total Time</key><integer>226821</integer> <key>Year</key><integer>2002</integer> <key>Date Modified</key><date>2006-05-23T06:17:08Z</date> <key>Date Added</key><date>2006-11-13T05:50:57Z</date> <key>Bit Rate</key><integer>192</integer> <key>Sample Rate</key><integer>44100</integer> <key>Comments</key><string>.:[ BUTT OWNAGE ]:.</string> <key>Play Count</key><integer>1</integer> <key>Play Date</key><integer>3246229755</integer> <key>Play Date UTC</key><date>2006-11-13T09:29:15Z</date> <key>Persistent ID</key><string>B7F13C5664B77B4A</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Saliva/Back%20into%20Your%20System/Rest% +20in%20Pieces.mp3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8491</key> <dict> <key>Track ID</key><integer>8491</integer> <key>Name</key><string>fine again</string> <key>Artist</key><string>seether</string> <key>Album</key><string>Disclaimer</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>3905999</integer> <key>Total Time</key><integer>244114</integer> <key>Date Modified</key><date>2006-03-12T23:18:10Z</date> <key>Date Added</key><date>2006-11-13T05:50:57Z</date> <key>Bit Rate</key><integer>128</integer> <key>Sample Rate</key><integer>44100</integer> <key>Play Count</key><integer>2</integer> <key>Play Date</key><integer>3246230489</integer> <key>Play Date UTC</key><date>2006-11-13T09:41:29Z</date> <key>Normalization</key><integer>12857</integer> <key>Persistent ID</key><string>B7F13C5664B77B52</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/seether/Disclaimer/fine%20again.mp3</str +ing> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8503</key> <dict> <key>Track ID</key><integer>8503</integer> <key>Name</key><string>Out Of My Way</string> <key>Artist</key><string>Seether</string> <key>Album</key><string>Freddy Vs Jason</string> <key>Genre</key><string>Metal</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>5551299</integer> <key>Total Time</key><integer>231288</integer> <key>Track Number</key><integer>12</integer> <key>Year</key><integer>2003</integer> <key>Date Modified</key><date>2006-11-10T01:40:07Z</date> <key>Date Added</key><date>2006-11-13T05:50:57Z</date> <key>Bit Rate</key><integer>192</integer> <key>Sample Rate</key><integer>44100</integer> <key>Play Count</key><integer>2</integer> <key>Play Date</key><integer>3246229986</integer> <key>Play Date UTC</key><date>2006-11-13T09:33:06Z</date> <key>Persistent ID</key><string>B7F13C5664B77B5B</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Seether%20-%20out%20of%20my%20way.mp3</s +tring> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8515</key> <dict> <key>Track ID</key><integer>8515</integer> <key>Name</key><string>broken</string> <key>Artist</key><string>seether ft amy lee</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>4147212</integer> <key>Total Time</key><integer>259134</integer> <key>Date Modified</key><date>2006-05-09T02:07:32Z</date> <key>Date Added</key><date>2006-11-13T05:50:58Z</date> <key>Bit Rate</key><integer>128</integer> <key>Sample Rate</key><integer>44100</integer> <key>Comments</key><string> 00002C6F 00002AD0 0000794A 000 +07D88 0002E647 00035B8E 00008000 00008000 00009C85 00009C85</string> <key>Play Count</key><integer>2</integer> <key>Play Date</key><integer>3246230245</integer> <key>Play Date UTC</key><date>2006-11-13T09:37:25Z</date> <key>Persistent ID</key><string>B7F13C5664B77B64</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/seether%20ft%20amy%20lee/Unknown%20Album +/broken.mp3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8569</key> <dict> <key>Track ID</key><integer>8569</integer> <key>Name</key><string>1979</string> <key>Artist</key><string>Smashing Pumpkins</string> <key>Album</key><string>Mellon Collie, Disk 2</string> <key>Genre</key><string>Alternative</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>4254949</integer> <key>Total Time</key><integer>265926</integer> <key>Date Modified</key><date>2006-10-22T21:15:54Z</date> <key>Date Added</key><date>2006-11-13T05:50:58Z</date> <key>Bit Rate</key><integer>128</integer> <key>Sample Rate</key><integer>44100</integer> <key>Play Count</key><integer>1</integer> <key>Play Date</key><integer>3246226012</integer> <key>Play Date UTC</key><date>2006-11-13T08:26:52Z</date> <key>Persistent ID</key><string>B7F13C5664B77B8D</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/smashing%20pumpkins%20-%201979.mp3</stri +ng> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8586</key> <dict> <key>Track ID</key><integer>8586</integer> <key>Name</key><string>Luna</string> <key>Artist</key><string>Smashing Pumpkins</string> <key>Album</key><string>Siamese Dream</string> <key>Genre</key><string>Other</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>3209648</integer> <key>Total Time</key><integer>200594</integer> <key>Date Modified</key><date>2006-10-22T21:29:48Z</date> <key>Date Added</key><date>2006-11-13T05:50:58Z</date> <key>Bit Rate</key><integer>128</integer> <key>Sample Rate</key><integer>44100</integer> <key>Comments</key><string>-Harry Sachs-</string> <key>Play Count</key><integer>1</integer> <key>Play Date</key><integer>3246225746</integer> <key>Play Date UTC</key><date>2006-11-13T08:22:26Z</date> <key>Persistent ID</key><string>B7F13C5664B77B9A</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/smashing%20pumpkins%20-%20siamese%20drea +m%20-%20luna(2).mp3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>8622</key> <dict> <key>Track ID</key><integer>8622</integer> <key>Name</key><string>Everything Changes</string> <key>Artist</key><string>Staind</string> <key>Composer</key><string>Staind</string> <key>Album</key><string>Chapter V</string> <key>Genre</key><string>Rock</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>3799040</integer> <key>Total Time</key><integer>235885</integer> <key>Track Number</key><integer>9</integer> <key>Year</key><integer>2005</integer> <key>Date Modified</key><date>2006-03-12T23:13:38Z</date> <key>Date Added</key><date>2006-11-13T05:50:58Z</date> <key>Bit Rate</key><integer>128</integer> <key>Sample Rate</key><integer>44100</integer> <key>Comments</key><string>www.staindsouls.com</string> <key>Play Count</key><integer>2</integer> <key>Play Date</key><integer>3246229220</integer> <key>Play Date UTC</key><date>2006-11-13T09:20:20Z</date> <key>Normalization</key><integer>19460</integer> <key>Persistent ID</key><string>B7F13C5664B77BB4</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Staind/Chapter%20V/09%20Everything%20Cha +nges.mp3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>9608</key> <dict> <key>Track ID</key><integer>9608</integer> <key>Name</key><string>Gifts and Curses</string> <key>Artist</key><string>Yellowcard</string> <key>Album</key><string>Spiderman 2</string> <key>Genre</key><string>Soundtrack</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>8471939</integer> <key>Total Time</key><integer>307957</integer> <key>Year</key><integer>2004</integer> <key>Date Modified</key><date>2006-05-09T07:51:58Z</date> <key>Date Added</key><date>2006-11-13T05:51:06Z</date> <key>Bit Rate</key><integer>220</integer> <key>Sample Rate</key><integer>44100</integer> <key>Comments</key><string>.: XXL Team :.</string> <key>Play Count</key><integer>3</integer> <key>Play Date</key><integer>3246229528</integer> <key>Play Date UTC</key><date>2006-11-13T09:25:28Z</date> <key>Persistent ID</key><string>B7F13C5664B77E97</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Yellowcard/Spiderman%202/Gifts%20and%20C +urses.mp3</string> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> <key>12524</key> <dict> <key>Track ID</key><integer>12524</integer> <key>Name</key><string>how about you</string> <key>Artist</key><string>Staind</string> <key>Album</key><string>14 Shades Of Grey</string> <key>Genre</key><string>Hard Rock</string> <key>Kind</key><string>MPEG audio file</string> <key>Size</key><integer>5729350</integer> <key>Total Time</key><integer>238706</integer> <key>Track Number</key><integer>2</integer> <key>Year</key><integer>2003</integer> <key>Date Modified</key><date>2006-11-13T08:59:13Z</date> <key>Date Added</key><date>2006-11-13T08:58:53Z</date> <key>Bit Rate</key><integer>192</integer> <key>Sample Rate</key><integer>44100</integer> <key>Play Count</key><integer>2</integer> <key>Play Date</key><integer>3246230728</integer> <key>Play Date UTC</key><date>2006-11-13T09:45:28Z</date> <key>Persistent ID</key><string>B7F13C5664B78013</string> <key>Track Type</key><string>File</string> <key>Location</key><string>file://localhost/C:/Documents%2 +0and%20Settings/Devin/Shared/Staind%20-%20How%20About%20You.mp3</stri +ng> <key>File Folder Count</key><integer>-1</integer> <key>Library Folder Count</key><integer>-1</integer> </dict> </dict> <key>Playlists</key> <array> <dict> <key>Name</key><string>sleep</string> <key>Playlist ID</key><integer>12378</integer> <key>Playlist Persistent ID</key><string>B7F13C5664B7800A< +/string> <key>All Items</key><true/> <key>Playlist Items</key> <array> <dict> <key>Track ID</key><integer>7843</integer> </dict> <dict> <key>Track ID</key><integer>8414</integer> </dict> <dict> <key>Track ID</key><integer>6639</integer> </dict> <dict> <key>Track ID</key><integer>8622</integer> </dict> <dict> <key>Track ID</key><integer>9608</integer> </dict> <dict> <key>Track ID</key><integer>8480</integer> </dict> <dict> <key>Track ID</key><integer>8503</integer> </dict> <dict> <key>Track ID</key><integer>8515</integer> </dict> <dict> <key>Track ID</key><integer>8491</integer> </dict> <dict> <key>Track ID</key><integer>12524</integer> </dict> <dict> <key>Track ID</key><integer>8232</integer> </dict> <dict> <key>Track ID</key><integer>8453</integer> </dict> <dict> <key>Track ID</key><integer>8586</integer> </dict> <dict> <key>Track ID</key><integer>8569</integer> </dict> </array> </dict> </array> </dict> </plist>
meh.

In reply to iTunes lacking on CPAN... by stonecolddevin

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.