shortwave 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. data/.document +5 -0
  2. data/.gitignore +10 -0
  3. data/.gitmodules +3 -0
  4. data/LICENSE +20 -0
  5. data/README.rdoc +74 -0
  6. data/Rakefile +133 -0
  7. data/VERSION +1 -0
  8. data/lib/shortwave.rb +12 -0
  9. data/lib/shortwave/authentication.rb +107 -0
  10. data/lib/shortwave/facade.rb +3 -0
  11. data/lib/shortwave/facade/build/facade_builder.rb +199 -0
  12. data/lib/shortwave/facade/build/facade_template.erb +17 -0
  13. data/lib/shortwave/facade/lastfm.rb +878 -0
  14. data/lib/shortwave/facade/remote.rb +86 -0
  15. data/lib/shortwave/model/album.rb +33 -0
  16. data/lib/shortwave/model/artist.rb +62 -0
  17. data/lib/shortwave/model/base_model.rb +112 -0
  18. data/lib/shortwave/model/chart_dates.rb +15 -0
  19. data/lib/shortwave/model/comparison.rb +15 -0
  20. data/lib/shortwave/model/event.rb +55 -0
  21. data/lib/shortwave/model/group.rb +26 -0
  22. data/lib/shortwave/model/location.rb +45 -0
  23. data/lib/shortwave/model/playlist.rb +36 -0
  24. data/lib/shortwave/model/shout.rb +21 -0
  25. data/lib/shortwave/model/tag.rb +47 -0
  26. data/lib/shortwave/model/track.rb +71 -0
  27. data/lib/shortwave/model/user.rb +70 -0
  28. data/lib/shortwave/model/venue.rb +37 -0
  29. data/lib/shortwave/model/weekly_charts.rb +31 -0
  30. data/lib/shortwave/providers.rb +161 -0
  31. data/shortwave.gemspec +178 -0
  32. data/test/authentication_test.rb +64 -0
  33. data/test/build/build_test.rb +25 -0
  34. data/test/build/data/intro.yml +2 -0
  35. data/test/build/data/screens/album_addTags.html +1238 -0
  36. data/test/build/data/screens/intro_truncated.html +426 -0
  37. data/test/build/data/screens/tasteometer_compare.html +1274 -0
  38. data/test/build/data/screens/user_getLovedTracks.html +1278 -0
  39. data/test/build/data/screens/venue_search.html +1261 -0
  40. data/test/build/facade_builder_test.rb +23 -0
  41. data/test/build/parameter_test.rb +43 -0
  42. data/test/build/remote_method_test.rb +47 -0
  43. data/test/build/ruby_class_test.rb +12 -0
  44. data/test/build/ruby_method_test.rb +137 -0
  45. data/test/helper.rb +35 -0
  46. data/test/model/album_test.rb +62 -0
  47. data/test/model/artist_test.rb +103 -0
  48. data/test/model/chart_dates_test.rb +11 -0
  49. data/test/model/comparison_test.rb +18 -0
  50. data/test/model/data/album_info.xml +38 -0
  51. data/test/model/data/album_search.xml +210 -0
  52. data/test/model/data/artist_info.xml +58 -0
  53. data/test/model/data/artist_search.xml +109 -0
  54. data/test/model/data/artist_shouts.xml +546 -0
  55. data/test/model/data/artist_top_fans.xml +405 -0
  56. data/test/model/data/event_info.xml +47 -0
  57. data/test/model/data/group_members.xml +242 -0
  58. data/test/model/data/group_weekly_album_chart.xml +1754 -0
  59. data/test/model/data/group_weekly_artist_chart.xml +604 -0
  60. data/test/model/data/group_weekly_track_chart.xml +1005 -0
  61. data/test/model/data/location_events.xml +383 -0
  62. data/test/model/data/ok.xml +2 -0
  63. data/test/model/data/playlist_fetch.xml +227 -0
  64. data/test/model/data/tag_search.xml +110 -0
  65. data/test/model/data/tag_similar.xml +254 -0
  66. data/test/model/data/tag_top_albums.xml +805 -0
  67. data/test/model/data/tag_top_artists.xml +605 -0
  68. data/test/model/data/tag_top_tags.xml +1254 -0
  69. data/test/model/data/tag_top_tracks.xml +843 -0
  70. data/test/model/data/tag_weekly_chart_list.xml +57 -0
  71. data/test/model/data/tasteometer_compare.xml +54 -0
  72. data/test/model/data/track_info.xml +53 -0
  73. data/test/model/data/track_search.xml +195 -0
  74. data/test/model/data/user_chartlist.xml +90 -0
  75. data/test/model/data/user_info.xml +16 -0
  76. data/test/model/data/user_neighbours.xml +484 -0
  77. data/test/model/data/user_playlists.xml +17 -0
  78. data/test/model/data/user_recent_tracks.xml +124 -0
  79. data/test/model/data/user_recommended_artists.xml +454 -0
  80. data/test/model/data/user_shouts.xml +9 -0
  81. data/test/model/data/user_weekly_artist_chart.xml +478 -0
  82. data/test/model/data/venue_events.xml +556 -0
  83. data/test/model/data/venue_past_events.xml +1778 -0
  84. data/test/model/data/venue_search.xml +355 -0
  85. data/test/model/event_test.rb +63 -0
  86. data/test/model/group_test.rb +45 -0
  87. data/test/model/location_test.rb +25 -0
  88. data/test/model/playlist_test.rb +51 -0
  89. data/test/model/shout_test.rb +23 -0
  90. data/test/model/tag_test.rb +39 -0
  91. data/test/model/track_test.rb +67 -0
  92. data/test/model/user_test.rb +125 -0
  93. data/test/model/venue_test.rb +60 -0
  94. data/test/provider/album_provider_test.rb +26 -0
  95. data/test/provider/artist_provider_test.rb +25 -0
  96. data/test/provider/group_provider_test.rb +9 -0
  97. data/test/provider/location_provider_test.rb +9 -0
  98. data/test/provider/playlist_provider_test.rb +12 -0
  99. data/test/provider/tag_provider_test.rb +24 -0
  100. data/test/provider/track_provider_test.rb +26 -0
  101. data/test/provider/user_provider_test.rb +11 -0
  102. data/test/provider/venue_provider_test.rb +15 -0
  103. data/test/provider_test_helper.rb +27 -0
  104. data/test/remote_test.rb +26 -0
  105. metadata +209 -0
@@ -0,0 +1,426 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3
+ <head profile="http://purl.org/uF/2008/03/">
4
+ <title>Test fixture page for Last.fm</title>
5
+ </head>
6
+
7
+
8
+ <body class="a-intro">
9
+ <div id="page" class=" ">
10
+ <div class="fixed full">
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+ <div id="header" class="clearit">
22
+ <div id="headerWrapper">
23
+ <h1><a href="/home" id="lastfmLogo">
24
+ <img src="http://cdn.last.fm/flatness/logo.6.png" width="103" height="50" alt="Last.fm" />
25
+ <img src="http://cdn.last.fm/flatness/logo_black.3.png" width="103" height="50" style="display: none;" alt="Last.fm" />
26
+ <span>Last.fm</span>
27
+ </a></h1>
28
+ <ul id="primaryNav" class="clearit">
29
+ <li id="musicNav">
30
+ <a href="/music">Music</a>
31
+ </li>
32
+ <li id="videosNav">
33
+ <a href="/videos">Videos</a>
34
+ </li>
35
+ <li id="listenNav">
36
+ <a href="/listen">Radio</a>
37
+ </li>
38
+ <li id="eventsNav">
39
+ <a href="/events">Events</a>
40
+ </li>
41
+ <li id="chartsNav">
42
+ <a href="/charts">Charts</a>
43
+ </li>
44
+ <li>
45
+ <form id="siteSearch" method="get" action="/search">
46
+
47
+ <select name="m" id="siteSearchSelect">
48
+ <option value="all">Music</option>
49
+ <option value="event">Event</option>
50
+ <option value="tag">Tag</option>
51
+ <option value="user">User</option>
52
+ <option value="group">Group</option>
53
+ <option value="label">Label</option>
54
+ </select>
55
+ <input id="siteSearchBox" placeholder="Search" type="text" autosave="fm.last.searchhistory" results="5" name="q" size="16" />
56
+
57
+ <input class="submit" type="submit" value="" title="Go" id="siteSearchSubmit" />
58
+ </form>
59
+ </li>
60
+ </ul>
61
+
62
+ <div id="idBadger">
63
+ <a href="/user/knaveofdiamonds" id="idBadgerUser" title="Roland Swingler, United Kingdom"><span class="userImage"><img width="16" height="16" alt="" src="http://userserve-ak.last.fm/serve/34s/10636291.jpg" /></span> <span>knaveofdiamonds</span></a><a href="/user/knaveofdiamonds" id="idBadgerDropper" title="Roland Swingler, United Kingdom">▼</a>
64
+ <ul id="idBadgerDropDown">
65
+ <li><a href="/home">Home</a></li>
66
+ <li><a href="/user/knaveofdiamonds" title="Roland Swingler, United Kingdom">Profile</a></li>
67
+ <li><a href="/home/recs">Recommended</a></li>
68
+ <li><a href="/user/knaveofdiamonds/library" title="">Library</a></li>
69
+ <li><a href="/user/knaveofdiamonds/events" title="">Events</a></li>
70
+ <li><a href="/settings">Settings</a></li>
71
+ </ul>
72
+ </div>
73
+ <div id="headLinks">
74
+ <p>
75
+ <a href="/login/logout">Log out</a> | <a href="/inbox">Inbox</a> |
76
+ <a href="#" title="Switch Colour Style" id="colourToggle">Paint it Black</a> |
77
+ <script>
78
+ $('colourToggle').observe('click', function (e) {
79
+ e.stop();
80
+ LFM.Display.colourToggle(e.element(), LFM.String.toRedStr, LFM.String.toBlackStr);
81
+ });
82
+ </script>
83
+ <a href="/help">Help</a>
84
+ |
85
+ <img src="http://cdn.last.fm/depth/flags/mini/globe.gif" id="langToggleFlag" alt="Change language" />
86
+ <a href="/api/intro?change=language" title="Click here to change your language" rel="nofollow" id="headerLangToggle">English</a>
87
+
88
+ </p>
89
+ </div>
90
+ </div><!-- #headerWrapper -->
91
+ </div>
92
+
93
+ <script>
94
+ LFM.Display.setupHeader(); new LFM.Activityfeed.DeleteListener();
95
+ </script>
96
+ <!-- Adserving start -->
97
+
98
+ <div id="LastAd_Skin" class="LastAd">
99
+ <div align="center">
100
+ <script type="text/javascript">
101
+ if(typeof writeSkin == 'function') writeSkin();
102
+ </script>
103
+ </div>
104
+ </div>
105
+ <script>
106
+ $("LastAd_Skin").hide();
107
+ </script>
108
+ <!-- Adserving end --><div id='content'>
109
+ <div class="fullWidth">
110
+ <div id="leftcol">
111
+ <h2>API Doc</h2>
112
+
113
+ <ul class="wspanel">
114
+ <li><a href="/api/intro">Overview</a></li>
115
+ <li><a href="/api/authentication">User Authentication</a></li>
116
+ <li><a href="/api/submissions">Submissions</a></li>
117
+ <li><a href="/api/radio">Radio API</a></li>
118
+ <li><a href="/api/playlists">Playlists</a></li>
119
+ <li><a href="/api/downloads">Downloads</a></li>
120
+ <li><a href="/api/rest">REST requests</a></li>
121
+ <li><a href="/api/xmlrpc">XML-RPC requests</a></li>
122
+ </ul>
123
+
124
+ <h2>API Methods</h2>
125
+ <ul class="wspanel">
126
+ <li class="package"><b>Album</b></li>
127
+ <ul>
128
+ <li><a href="/api/show/?service=302">album.addTags</a></li>
129
+ </ul>
130
+ <li class="package"><b>Tasteometer</b></li>
131
+ <ul>
132
+ <li><a href="/api/show/?service=258">tasteometer.compare</a></li>
133
+ </ul>
134
+ <li class="package"><b>User</b></li>
135
+ <ul>
136
+ <li><a href="/api/show/?service=329">user.getLovedTracks</a></li>
137
+ </ul>
138
+ <li class="package"><b>Venue</b></li>
139
+ <ul>
140
+ <li><a href="/api/show/?service=396">venue.search</a></li>
141
+ </ul>
142
+ </ul>
143
+ </div> <div id="main">
144
+ <div id="wstitle">
145
+ <h1 class="header"><a href="/api">Last.fm Web Services</a></h1>
146
+ <a href="/api/intro">API</a> | <a href="/api/feeds">Feeds</a> | <a href="/api/account">Your API Account</a>
147
+ </div> <h2>Overview</h2>
148
+ <p>
149
+ The Last.fm API allows you to call <i>methods</i> that respond in <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a> style xml. Individual methods are detailed in the menu on the left.</p>
150
+ <div class="wsdescription">The API root URL is located at <a href="http://ws.audioscrobbler.com/2.0/">http://ws.audioscrobbler.com/2.0/</a></div>
151
+ <p>
152
+ Generally speaking, you will send a <i>method</i> parameter expressed as 'package.method' along with method specific arguments to the root URL. The API supports multiple transport formats but will respond in Last.fm idiom xml by default.
153
+ </p>
154
+ <p>
155
+ Note:
156
+ <ul class="stations">
157
+ <li>Please use an identifiable User-Agent header on all requests. Like this you don't risk getting banned and it helps our logging.</li>
158
+ <li>Use common sense when deciding how many calls to make. For example, if you're making a web application, try not to hit the API on page load. You account may be suspended if your application is continuously making several calls per second. See our <a href="/api/tos">terms of service</a> for more.</li>
159
+ </ul>
160
+ </p>
161
+ <h3>Encoding</h3>
162
+ Use <a href="http://www.utf-8.com/">UTF-8</a> encoding when sending arguments to API methods.</li>
163
+ <h3>Request Styles</h3>
164
+ You can get more information on how to work with <a href="/api/rest">REST requests</a> or <a href="/api/xmlrpc">XML-RPC requests</a> when calling the Last.fm API.
165
+ <h3>Authentication</h3>
166
+ The <a href="/api/authentication">authentication protocol</a> allows you to perform actions on user accounts in a manner that is secure for Last.fm users. All write services require authentication.
167
+ <h3>Submissions</h3>
168
+ You can use our <a href="/api/submissions">submissions API</a> to submit listening information to Last.fm user profiles (aka 'Scrobbling'). Useful for media players looking to integrate with Last.fm.
169
+ <h3>Discussion</h3>
170
+ Join the <a href="http://www.last.fm/group/Last.fm%2520Web%2520Services">Last.fm Web Services</a> group to receive notifications about new Web Services, access to beta API's, provide feedback and discuss development with other developers.
171
+ </div>
172
+ </div>
173
+ </div>
174
+
175
+ <div id="LastFooter">
176
+
177
+ <div id="footer_ads" style="display: none;" class="clearit">
178
+ <div class="footer_ad_wrapper">
179
+
180
+ <!-- Adserving start -->
181
+
182
+ <div id="LastAd_Footer1" class="LastAd">
183
+ <div align="center">
184
+ <script type="text/javascript">
185
+ if ($("footer_ads")) $("footer_ads").show();
186
+ if(typeof writeFooter1 == 'function') writeFooter1();
187
+ </script>
188
+ </div>
189
+ </div>
190
+ <script>
191
+ $("LastAd_Footer1").hide();
192
+ </script>
193
+ <!-- Adserving end --> <!-- Adserving start -->
194
+
195
+ <div id="LastAd_Footer2" class="LastAd">
196
+ <div align="center">
197
+ <script type="text/javascript">
198
+ if ($("footer_ads")) $("footer_ads").show();
199
+ if(typeof writeFooter2 == 'function') writeFooter2();
200
+ </script>
201
+ </div>
202
+ </div>
203
+ <script>
204
+ $("LastAd_Footer2").hide();
205
+ </script>
206
+ <!-- Adserving end --> <!-- Adserving start -->
207
+
208
+ <div id="LastAd_Footer3" class="LastAd">
209
+ <div align="center">
210
+ <script type="text/javascript">
211
+ if ($("footer_ads")) $("footer_ads").show();
212
+ if(typeof writeFooter3 == 'function') writeFooter3();
213
+ </script>
214
+ </div>
215
+ </div>
216
+ <script>
217
+ $("LastAd_Footer3").hide();
218
+ </script>
219
+ <!-- Adserving end --> <!-- Adserving start -->
220
+
221
+ <div id="LastAd_Footer4" class="LastAd last">
222
+ <div align="center">
223
+ <script type="text/javascript">
224
+ if ($("footer_ads")) $("footer_ads").show();
225
+ if(typeof writeFooter4 == 'function') writeFooter4();
226
+ </script>
227
+ </div>
228
+ </div>
229
+ <script>
230
+ $("LastAd_Footer4").hide();
231
+ </script>
232
+ <!-- Adserving end -->
233
+ </div><!-- .footer_ad_wrapper -->
234
+ </div><!-- #footer_ads -->
235
+
236
+ <ul id="footerStuff" class="clearit">
237
+ <li></li>
238
+
239
+ <li><p id="uploadYourMusic">
240
+ <strong>Do you make music? Upload it!</strong><br /><a href="/uploadmusic?accountType=artist">Artists</a> or <a href="/uploadmusic?accountType=label">Labels</a>
241
+ </p></li>
242
+ </ul><!-- #footerStuff -->
243
+
244
+ <div id="footer_content">
245
+ <ul id="footerLinks" class="clearit">
246
+ <li class="first">
247
+ <dl>
248
+ <dt>Learn About Us</dt>
249
+ <dd><a href="/about/contact">Contact</a></dd>
250
+ <dd><a href="/about">About Us</a></dd>
251
+ <dd><a href="/about/team">Team</a></dd>
252
+ <dd><a href="/about/jobs">Jobs</a></dd>
253
+ <dd><a href="/resources">Media Kit</a></dd>
254
+ <dd><a href="/advertise">Advertise</a></dd>
255
+ </dl>
256
+ </li>
257
+ <li>
258
+ <dl>
259
+ <dt>Get Help</dt>
260
+ <dd><a href="/help/faq">FAQ</a></dd>
261
+ <dd><a href="/forum/21713">Website Support</a></dd>
262
+ <dd><a href="/forum/34905">Scrobbler Support</a></dd>
263
+ <dd><a href="/group/Last.fm+for+iPhone+and+iPod+Touch">iPhone Support</a></dd>
264
+ </dl>
265
+ </li>
266
+
267
+ <li>
268
+ <dl>
269
+ <dt>Join In</dt>
270
+ <dd><a href="/users">Find People</a></dd>
271
+ <dd><a href="/users/groups">Find Groups</a></dd>
272
+ <dd><a href="/forum">Forums</a></dd>
273
+ <dd><a href="/help/guidelines">Community Guidelines</a></dd>
274
+ <dd><a href="/about/moderators">Moderators</a></dd>
275
+ <dd><a href="/promotions">Contests &amp; Promotions</a></dd>
276
+ </dl>
277
+ </li>
278
+ <li class="last">
279
+ <dl>
280
+ <dt>Do More</dt>
281
+ <dd><a href="/download">Last.fm Scrobbler</a></dd>
282
+ <dd><a href="/download#content_ipod">iPod Scrobbler</a></dd>
283
+ <dd><a href="/download#content_iphone">iPhone App</a></dd>
284
+ <dd><a href="http://build.last.fm">More Apps</a></dd>
285
+ <dd><a href="/music/+free-music-downloads">Free Music Downloads</a></dd>
286
+ <dd><a href="/hardware">Hardware</a></dd>
287
+ <dd><a href="/widgets">Widgets</a></dd> <dd><a href="/tools/charts">Chart Images</a></dd>
288
+ <dd><a href="/subscribe">Subscribe</a></dd>
289
+ <dd><a href="/api">API</a></dd>
290
+ </dl>
291
+ </li>
292
+ </ul><!-- #footerLinks -->
293
+
294
+ <div id="justCantGetEnough" class="clearit">
295
+ <blockquote>“Pimp my Last.fm”</blockquote>
296
+ <p>
297
+ <strong>More Last.fm Sites:</strong>
298
+ <a href="http://blog.last.fm/">Blog</a>
299
+ | <a href="http://musicmanager.last.fm">Music Manager</a>
300
+ | <a href="http://build.last.fm">Build</a>
301
+ | <a href="http://playground.last.fm">Playground</a>
302
+ | <a href="http://www.last.fm/bestof/2008">Best of 2008</a>
303
+ </p>
304
+ </div>
305
+
306
+ <div id="legalities">
307
+ <div id="cbsi_f">
308
+ <form>
309
+ <script language="javascript">
310
+ document.write("<div><label class=\"rb_visit_txt\" for=\"cbsi_footer_menu\">Visit other Sites</label><select name=\"cbsi_footer_menu\" id=\"cbsi_footer_menu\" class=\"rb_visit_sel\"><option value=\"\">Select Site</option><option value=\"http://www.bnet.com\">BNET</option><option value=\"http://www.cbscares.com\">CBS Cares</option><option value=\"http://www.cbssports.com/cbscollegesports/\">CBS College Sports</option><option value=\"http://www.cbsradio.com/streaming/\">CBS Radio</option><option value=\"http://www.cbs.com\">CBS.com</option><option value=\"http://www.cbsnews.com\">CBSNews.com</option><option value=\"http://www.cbssports.com\">CBSSports.com</option><option value=\"http://www.chow.com\">CHOW</option><option value=\"http://www.cnet.com\">CNET</option><option value=\"http://www.cnetcontentsolutions.com\">CNET Content Solutions</option><option value=\"http://www.gamespot.com\">GameSpot</option><option value=\"http://www.cnetnetworks.com/advertise/media-kit/international.html?tag=ft\">International</option><option value=\"http://www.last.fm\">Last.fm</option><option value=\"http://www.maxpreps.com\">MaxPreps</option><option value=\"http://www.metacritic.com\">Metacritic.com</option><option value=\"http://moneywatch.bnet.com\">Moneywatch</option><option value=\"http://www.mp3.com\">MP3.com</option><option value=\"http://www.mysimon.com\">mySimon</option><option value=\"http://www.ncaa.com\">NCAA</option><option value=\"http://www.search.com\">Search.com</option><option value=\"http://www.shopper.com\">Shopper.com</option><option value=\"http://www.sho.com\">Showtime</option><option value=\"http://www.techrepublic.com\">TechRepublic</option><option value=\"http://www.theinsider.com\">The Insider</option><option value=\"http://www.tv.com\">TV.com</option><option value=\"http://www.urbanbaby.com\">UrbanBaby.com</option><option value=\"http://www.zdnet.com\">ZDNet</option></select><input type=\"button\" class=\"rb_visit_go\" value=\"Go\" onClick=\"window.location=document.getElementById('cbsi_footer_menu').options[document.getElementById('cbsi_footer_menu').selectedIndex].value;\" /></div>");
311
+ </script>
312
+ </form>
313
+ <noscript>
314
+ <a href="http://www.bnet.com">BNET</a> | <a href="http://www.cbscares.com">CBS Cares</a> | <a href="http://www.cbssports.com/cbscollegesports/">CBS College Sports</a> | <a href="http://www.cbsradio.com/streaming/">CBS Radio</a> | <a href="http://www.cbs.com">CBS.com</a> | <a href="http://www.cbsnews.com">CBSNews.com</a> | <a href="http://www.cbssports.com">CBSSports.com</a> | <a href="http://www.chow.com">CHOW</a> | <a href="http://www.cnet.com">CNET</a> | <a href="http://www.cnetcontentsolutions.com">CNET Content Solutions</a> | <a href="http://www.gamespot.com">GameSpot</a> | <a href="http://www.cnetnetworks.com/advertise/media-kit/international.html?tag=ft">International</a> | <a href="http://www.last.fm">Last.fm</a> | <a href="http://www.maxpreps.com">MaxPreps</a> | <a href="http://www.metacritic.com">Metacritic.com</a> | <a href="http://moneywatch.bnet.com">Moneywatch</a> | <a href="http://www.mp3.com">MP3.com</a> | <a href="http://www.mysimon.com">mySimon</a> | <a href="http://www.ncaa.com">NCAA</a> | <a href="http://www.search.com">Search.com</a> | <a href="http://www.shopper.com">Shopper.com</a> | <a href="http://www.sho.com">Showtime</a> | <a href="http://www.techrepublic.com">TechRepublic</a> | <a href="http://www.theinsider.com">The Insider</a> | <a href="http://www.tv.com">TV.com</a> | <a href="http://www.urbanbaby.com">UrbanBaby.com</a> | <a href="http://www.zdnet.com">ZDNet</a>
315
+ </noscript>
316
+ <p id="cbsi_f_pop">
317
+ Popular on CBS sites: <a href='http://www.cnet.com/apple-iphone.html'>iPhone 3G</a> | <a href='http://fantasynews.cbssports.com/fantasyfootball'>Fantasy Football</a> | <a href='http://moneywatch.bnet.com'>Moneywatch</a> | <a href='http://download.cnet.com/windows/antivirus-software/'>Antivirus Software</a> | <a href='http://www.chow.com/recipes'>Recipes</a> | <a href='http://www.gamespot.com/pc/strategy/spore/index.html'>Spore</a><!-- cbth:100 -->
318
+ </p>
319
+ </div> <p id="copy">
320
+ &copy; 2009 Last.fm Ltd. All rights reserved. |
321
+ <a href="/legal/terms" target="_blank">Terms of Use</a>
322
+ and <a href="/legal/privacy" target="_blank">Privacy Policy</a> | <span class="date">Updated November 21, 2008</span><br />
323
+
324
+ </p>
325
+ </div><!-- #legalities -->
326
+
327
+ </div>
328
+ </div><!-- #LastFooter -->
329
+
330
+ <ul id="langSelector" style="display: none; visibility: hidden;" class="nojs">
331
+
332
+
333
+ <li><a href="http://www.lastfm.de/api/intro?setlang=de" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/de.gif" /> <span>Deutsch</span></a></li>
334
+ <li><a href="http://www.lastfm.es/api/intro?setlang=es" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/es.gif" /> <span>Español</span></a></li>
335
+ <li><a href="http://www.lastfm.fr/api/intro?setlang=fr" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/fr.gif" /> <span>Français</span></a></li>
336
+ <li><a href="http://www.lastfm.it/api/intro?setlang=it" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/it.gif" /> <span>Italiano</span></a></li>
337
+ <li><a href="http://www.lastfm.jp/api/intro?setlang=jp" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/jp.gif" /> <span>日本語</span></a></li>
338
+ <li><a href="http://www.lastfm.pl/api/intro?setlang=pl" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/pl.gif" /> <span>Polski</span></a></li>
339
+ <li><a href="http://www.lastfm.com.br/api/intro?setlang=pt" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/pt.gif" /> <span>Português</span></a></li>
340
+ <li><a href="http://www.lastfm.ru/api/intro?setlang=ru" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/ru.gif" /> <span>Руccкий</span></a></li>
341
+ <li><a href="http://www.lastfm.se/api/intro?setlang=sv" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/se.gif" /> <span>Svenska</span></a></li>
342
+ <li><a href="http://www.lastfm.com.tr/api/intro?setlang=tr" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/tr.gif" /> <span>Türkçe</span></a></li>
343
+ <li><a href="http://cn.last.fm/api/intro?setlang=zh" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/zh.gif" /> <span>简体中文</span></a></li>
344
+
345
+ </ul>
346
+
347
+ <script>
348
+
349
+ $("langSelector").className = "js";
350
+ LFM.set("Page", {
351
+ navDropDown: new LFM.Display.DropDown(
352
+ "headerLangToggle",
353
+ "headerLangToggle",
354
+ "langSelector",
355
+ {
356
+ align: "right",
357
+ onShow: function (dropdown) {
358
+ dropdown.ddbody.setStyle({
359
+ top: (dropdown.ddbody.getStyle("top").toPixels() + 3) + "px"
360
+ });
361
+ }
362
+ }
363
+ )
364
+ });
365
+
366
+ </script>
367
+ <div id="multiButtonMenu" style="display: none;">
368
+ <div>
369
+ <ul class="lfmDropDownBody">
370
+ <li class="mAddToLibrary"><a href="#">Add to my Library</a></li>
371
+ <li class="mAddToFriends"><a href="#">Add to Friends</a></li>
372
+
373
+ <!-- <li class="save"><a href="#">Bookmark</a></li> -->
374
+ <li class="mSend"><a href="#">Share</a></li>
375
+
376
+ <li class="mLove"><a href="#">Love track</a></li>
377
+ <li class="mUnlove"><a href="#">Unlove track</a></li>
378
+ <li class="mBan"><a href="#">Ban track from radio</a></li>
379
+ <li class="mUnban"><a href="#">Unban track from radio</a></li>
380
+
381
+
382
+ <li class="mAddTags"><a href="#">Add tags</a></li>
383
+ <li class="mAddToPlaylist"><a href="#">Add to playlist</a></li>
384
+ <li class="mMessage"><a href="#">Send a message</a></li>
385
+ <li class="mEditDetails"><a href="#">Edit Details</a></li>
386
+ <li class="mMessageAll"><a href="#">Message All Users</a></li>
387
+ <li class="mEditPermissions"><a href="#">Edit Permissions</a></li>
388
+ <li class="mAbdicate"><a href="#">Abdicate</a></li>
389
+ <li class="mLeave"><a href="#">Leave Group</a></li>
390
+
391
+ <li class="mRemoveFromLibrary"><a href="#">Remove from your Library</a></li>
392
+
393
+ <li class="mLoading"><a href="#">&nbsp;</a></li>
394
+ </ul>
395
+ </div>
396
+ </div>
397
+
398
+
399
+ <script type="text/javascript" src="http://dw.com.com/js/dw.js"></script>
400
+ <script type="text/javascript">
401
+ DW.pageParams = {
402
+ siteid: '190',
403
+ ptid: '',
404
+ onid: ''
405
+ };
406
+ DW.clear();
407
+ </script>
408
+ <noscript>
409
+ <img src="http://dw.com.com/clear/c.gif?ts=1243081435&amp;sid=" />
410
+ </noscript>
411
+
412
+
413
+ <script src="http://surveys.cnet.com/html/surveys/1361.js"></script>
414
+
415
+ <script>
416
+
417
+ LFM.Button.MultiButton.setup();
418
+ LFM.Display.setMinHeight();
419
+
420
+ </script>
421
+
422
+ </div>
423
+ </div>
424
+ </div>
425
+ </body>
426
+ </html>
@@ -0,0 +1,1274 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3
+ <head profile="http://purl.org/uF/2008/03/">
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
+ <title>tasteometer.compare Web Service – Last.fm</title>
6
+ <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
7
+
8
+ <link rel="search" type="application/opensearchdescription+xml" href="http://cdn.last.fm/opensearch_desc.xml" title="Last.fm" />
9
+ <meta name="description" content="The world’s largest online music catalogue, with free music streaming, videos, photos, lyrics, charts, artist biographies, concerts and internet radio."/>
10
+ <meta http-equiv="content-language" content="en" />
11
+ <meta name="robots" content="NOODP" />
12
+
13
+ <link rel="icon" href="http://cdn.last.fm/flatness/favicon.2.ico" />
14
+ <link rel="icon" type="image/png" href="http://cdn.last.fm/flatness/favicon.2.png" />
15
+ <link rel="apple-touch-icon" href="http://cdn.last.fm/flatness/apple-touch-icon.png" />
16
+
17
+
18
+
19
+ <link type="text/html" rel="alternate" hreflang="de" href="http://www.lastfm.de/api/show?service=258" />
20
+ <link type="text/html" rel="alternate" hreflang="es" href="http://www.lastfm.es/api/show?service=258" />
21
+ <link type="text/html" rel="alternate" hreflang="fr" href="http://www.lastfm.fr/api/show?service=258" />
22
+ <link type="text/html" rel="alternate" hreflang="it" href="http://www.lastfm.it/api/show?service=258" />
23
+ <link type="text/html" rel="alternate" hreflang="ja" href="http://www.lastfm.jp/api/show?service=258" />
24
+ <link type="text/html" rel="alternate" hreflang="pl" href="http://www.lastfm.pl/api/show?service=258" />
25
+ <link type="text/html" rel="alternate" hreflang="pt" href="http://www.lastfm.com.br/api/show?service=258" />
26
+ <link type="text/html" rel="alternate" hreflang="ru" href="http://www.lastfm.ru/api/show?service=258" />
27
+ <link type="text/html" rel="alternate" hreflang="sv" href="http://www.lastfm.se/api/show?service=258" />
28
+ <link type="text/html" rel="alternate" hreflang="tr" href="http://www.lastfm.com.tr/api/show?service=258" />
29
+ <link type="text/html" rel="alternate" hreflang="cn" href="http://cn.last.fm/api/show?service=258" />
30
+
31
+
32
+ <!--[if LT IE 7]>
33
+ <style type="text/css">
34
+ .transparent_png {
35
+ behavior: url('/pngbehavior2.htc');
36
+ }
37
+ </style>
38
+ <![endif]-->
39
+ <link rel="stylesheet" href="http://cdn.last.fm/css/release-lastfm/130860/main.css" type="text/css" />
40
+ <link rel="stylesheet" href="http://cdn.last.fm/css/release-lastfm/130860/components.css" type="text/css" />
41
+ <link rel="stylesheet" href="http://cdn.last.fm/css/release-lastfm/130860/dialog.css" type="text/css" />
42
+ <link rel="stylesheet" href="http://cdn.last.fm/css/release-lastfm/130860/form/typeahead.css" type="text/css" />
43
+ <link rel="stylesheet" href="http://cdn.last.fm/css/release-lastfm/130860/dev/console.css" type="text/css" />
44
+
45
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/lib/prototype.js"></script>
46
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/lib/scriptaculous.js"></script>
47
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/lib/ufo.js"></script>
48
+
49
+ <!-- Create our namespace -->
50
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/LFM.js"></script>
51
+
52
+
53
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/console.js"></script>
54
+
55
+ <script type="text/javascript">
56
+
57
+ LFM.set("config", { FOD_TRACKING: false });
58
+
59
+ LFM.set("Session", {"cookieHost":".last.fm","host":"www.last.fm","staticHost":"http:\/\/cdn.last.fm","formtoken":"51819edea1f52c2f11ed0387d0c1ea5b2e05dafb","location":"gb","language":"en","loggedIn":true,"subscriber":false,"userURL":"\/user\/knaveofdiamonds","libraryURL":"\/user\/knaveofdiamonds\/library","userName":"knaveofdiamonds","prefersClient":false});
60
+
61
+
62
+
63
+ LFM.set("String", {
64
+ toRedStr: "Simply Red",
65
+ toBlackStr: "Paint it Black",
66
+
67
+ okText: "OK",
68
+ cancelText: "Cancel",
69
+ clickToEditText: "Click to edit",
70
+ savingText: "Saving…",
71
+ loadingText: "Loading…",
72
+ deletingText: "Deleting…",
73
+ thereWasAnError: "There was an error.",
74
+ dialogLoadError: "There was an error loading this dialog.",
75
+ fileTooBig: "Sorry, the file is too big.",
76
+ noFile: "Please choose a file.",
77
+ uploadCancelled: "Upload Cancelled.",
78
+ deleteMessageTitle: "Delete Message",
79
+ deleteMessagePrompt: "Are you sure you want to delete this message?",
80
+ deleteFriendPrompt: "Are you sure you want to delete this friend?",
81
+ deleteImage: "Are you sure you want to delete this image?",
82
+ deleteButtonText: "Delete",
83
+ done: "Done",
84
+
85
+
86
+ backText: "Back",
87
+
88
+ yesText: "Yes",
89
+ noText: "No",
90
+
91
+ saveText: "Save",
92
+ saveTitle: "Add to profile",
93
+
94
+ sendText: "Send",
95
+ sendTitle: "Share with friends",
96
+
97
+ addTitle: "Add to library",
98
+
99
+ tagTitle: "Add tags",
100
+
101
+ playlistTitle: "Add to playlist",
102
+
103
+ obsessionTitle: "Personalise your obsession",
104
+
105
+ befriendTitle: "Add a friend",
106
+
107
+ joinTitle: "Join this group",
108
+
109
+ loved: "Loved",
110
+
111
+ RemoveFromLibraryTitle: "Remove from library",
112
+
113
+ uploadImageTitle: "Upload Image",
114
+ uploadVideoTitle: "Upload Video",
115
+
116
+ usernoteTitle: "Add a note",
117
+
118
+ flageventTitle: "Flag for review",
119
+
120
+ setLocationTitle: "Set your Location",
121
+
122
+ newWindowTooltip: "This link will open in a new window",
123
+ unloadWarningMessage: "This will stop Radio Playback",
124
+ trackLoved: "You loved this track",
125
+ playbackStopped: "Playback stopped",
126
+ loadingTrackInfo: "Loading track information",
127
+ errorLoadingTrackInfo: "Error loading track information",
128
+
129
+ uploadMessages: {
130
+ mayTakeLonger: "Sorry, this may take slightly longer than usual. Hold on a couple of seconds.",
131
+ uploading: "Uploading…",
132
+ endUploading: "Done",
133
+ progressDisplay: "PERCENTUPLOADED% complete (TRANSFERRATE kb/s) – TIMEREMAINING seconds remaining",
134
+ progressComplete: "100% complete",
135
+ failedRetrying: "Failed retrying upload, bailed.",
136
+ processingMedia: "Processing media…",
137
+ unsupportedFormat: "Sorry, the file you uploaded isn’t encoded in a supported format. Please try again.",
138
+ uploadError: "There was an error uploading your video, please verify that the file you are uploading is not too large or of an incorrect format and try again."
139
+ }
140
+ });
141
+
142
+ LFM.set("Element", {
143
+ icon_loved_indicator: "<img class=\"loved_indicator_icon transparent_png\" width=\"11\" height=\"9\" src=\"http:\/\/cdn.last.fm\/flatness\/global\/icon_loved_indicator.2.png\" \/>",
144
+ icon_tag: "<img class=\"tag_icon transparent_png\" width=\"14\" height=\"14\" src=\"http:\/\/cdn.last.fm\/flatness\/global\/icon_tag3.png\" \/>",
145
+ icon_dismiss: "<img class=\"dismiss_icon transparent_png\" width=\"13\" height=\"13\" src=\"http:\/\/cdn.last.fm\/flatness\/global\/icon_delete.2.png\" \/>",
146
+ icon_play: "<img class=\"play_icon transparent_png\" width=\"17\" height=\"17\" alt=\"Play\" src=\"http:\/\/cdn.last.fm\/flatness\/global\/icon_play.png\" \/>"
147
+ }); </script>
148
+
149
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/components.js"></script>
150
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/flash.js"></script>
151
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/dialog.js"></script>
152
+ <script type="text/javascript" src="http://cdn.last.fm/javascript/release-lastfm/130861/form/typeahead.js"></script>
153
+
154
+ <script type="text/javascript">
155
+
156
+ document.observe("dom:loaded", function () {
157
+ if (typeof ieHover !== 'undefined') {
158
+ ieHover.setUp();
159
+ }
160
+ });
161
+
162
+ </script>
163
+
164
+ </head>
165
+
166
+
167
+ <body class="a-show">
168
+
169
+
170
+
171
+ <!-- SiteCatalyst code version: H.16.
172
+ Copyright 1997-2008 Omniture, Inc. More info available at
173
+ http://www.omniture.com -->
174
+
175
+ <script>var s = false, s_gi = false;</script>
176
+ <script src="http://cdn.last.fm/omniture/9/omniture-core.js"></script>
177
+ <script>
178
+
179
+ /* You may give each page an identifying name, server, and channel on
180
+ the next lines. */
181
+ if (s) {
182
+ s.pageName="Api/Show/";
183
+ s.server="";
184
+ s.channel="";
185
+ s.pageType="other";
186
+
187
+ s.prop1="api"; // namespace
188
+ s.prop2="show"; // controller
189
+ s.prop3=""; // action
190
+
191
+
192
+
193
+
194
+ s.prop10="lfm"; // logged in/out
195
+
196
+ s.prop12="last.fm"; // url extension
197
+
198
+ s.prop13=""; // Member user id
199
+
200
+ s.prop14=""; // Ad source
201
+ s.prop15=""; // Ad id
202
+ s.prop16=""; // Ad size
203
+ s.prop18=s.getTimeParting('h',0,2009); // Set hour
204
+ s.prop19=s.getTimeParting('d',0,2009); // Set day
205
+
206
+
207
+
208
+
209
+
210
+ s.prop32 = ""; // TODO: 1st day of visit
211
+ s.prop33 = "en";
212
+
213
+
214
+
215
+ /* Success Events */
216
+ s.events="";
217
+
218
+ /* E-commerce Variables */
219
+ // s.campaign="";
220
+ s.state="";
221
+ s.zip="";
222
+ s.products="";
223
+ s.purchaseID="";
224
+ s.eVar1="";
225
+ s.eVar2 = s.pageName; // Page name
226
+ s.eVar3="";
227
+
228
+
229
+ s.eVar10="lfm"; // logged in/out
230
+
231
+
232
+
233
+
234
+
235
+ s.eVar26=""; // OnClick Location
236
+ s.eVar27=""; // Download Platform
237
+ s.eVar28=""; // Buy/Download Location
238
+
239
+ s.eVar29=""; // TODO: 1st day of visit
240
+ s.eVar30=s.prop12; // url extension
241
+
242
+ s.eVar31=s.getNewRepeat(); // new/repeat visitor
243
+ s.eVar32=s.getDaysSinceLastVisit(); // Days since last visit
244
+
245
+ s.eVar33=""; // Ad source
246
+ s.eVar34=""; // Ad id
247
+ s.eVar35=""; // Ad size
248
+
249
+ s.eVar36=""; // Member user id
250
+
251
+ s.eVar37=s.prop33; // User language
252
+
253
+ s.eVar38="< 10,000"; // User scrobbles < 10,000
254
+
255
+
256
+ // Set vars to pass with exit/download/custom links called by s.tl()
257
+ // * Click location
258
+ s.linkTrackVars="eVar26";
259
+
260
+ /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
261
+ var s_code = s.t(); if (s_code) document.write(s_code);
262
+ }
263
+
264
+ </script>
265
+ <script type="text/javascript"><!--
266
+ if(navigator.appVersion.indexOf('MSIE')>=0)document.write(unescape('%3C')+'\!-'+'-')
267
+ //--></script>
268
+ <!--/DO NOT REMOVE/-->
269
+ <!-- End SiteCatalyst code version: H.11. -->
270
+
271
+ <script type="text/javascript" src="http://edge.quantserve.com/quant.js"></script>
272
+ <script type="text/javascript">
273
+
274
+ var _qoptions = {
275
+ labels: "LastFM"
276
+ };
277
+ var _qacct="p-51jhoCdjGFIVU";
278
+ quantserve();
279
+
280
+ </script>
281
+ <noscript>
282
+ <a href="http://www.quantcast.com/p-51jhoCdjGFIVU" target="_blank"><img src="http://pixel.quantserve.com/pixel/p-51jhoCdjGFIVU.gif?labels=LastFM" height="1" width="1" alt="" /></a>
283
+ </noscript>
284
+ <div id="page" class=" ">
285
+ <div class="fixed full">
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+ <div id="header" class="clearit">
297
+ <div id="headerWrapper">
298
+ <h1><a href="/home" id="lastfmLogo">
299
+ <img src="http://cdn.last.fm/flatness/logo.6.png" width="103" height="50" alt="Last.fm" />
300
+ <img src="http://cdn.last.fm/flatness/logo_black.3.png" width="103" height="50" style="display: none;" alt="Last.fm" />
301
+ <span>Last.fm</span>
302
+ </a></h1>
303
+ <ul id="primaryNav" class="clearit">
304
+ <li id="musicNav">
305
+ <a href="/music">Music</a>
306
+ </li>
307
+ <li id="videosNav">
308
+ <a href="/videos">Videos</a>
309
+ </li>
310
+ <li id="listenNav">
311
+ <a href="/listen">Radio</a>
312
+ </li>
313
+ <li id="eventsNav">
314
+ <a href="/events">Events</a>
315
+ </li>
316
+ <li id="chartsNav">
317
+ <a href="/charts">Charts</a>
318
+ </li>
319
+ <li>
320
+ <form id="siteSearch" method="get" action="/search">
321
+
322
+ <select name="m" id="siteSearchSelect">
323
+ <option value="all">Music</option>
324
+ <option value="event">Event</option>
325
+ <option value="tag">Tag</option>
326
+ <option value="user">User</option>
327
+ <option value="group">Group</option>
328
+ <option value="label">Label</option>
329
+ </select>
330
+ <input id="siteSearchBox" placeholder="Search" type="text" autosave="fm.last.searchhistory" results="5" name="q" size="16" />
331
+
332
+ <input class="submit" type="submit" value="" title="Go" id="siteSearchSubmit" />
333
+ </form>
334
+ </li>
335
+ </ul>
336
+
337
+ <div id="idBadger">
338
+ <a href="/user/knaveofdiamonds" id="idBadgerUser" title="Roland Swingler, United Kingdom"><span class="userImage"><img width="16" height="16" alt="" src="http://userserve-ak.last.fm/serve/34s/10636291.jpg" /></span> <span>knaveofdiamonds</span></a><a href="/user/knaveofdiamonds" id="idBadgerDropper" title="Roland Swingler, United Kingdom">▼</a>
339
+ <ul id="idBadgerDropDown">
340
+ <li><a href="/home">Home</a></li>
341
+ <li><a href="/user/knaveofdiamonds" title="Roland Swingler, United Kingdom">Profile</a></li>
342
+ <li><a href="/home/recs">Recommended</a></li>
343
+ <li><a href="/user/knaveofdiamonds/library" title="">Library</a></li>
344
+ <li><a href="/user/knaveofdiamonds/events" title="">Events</a></li>
345
+ <li><a href="/settings">Settings</a></li>
346
+ </ul>
347
+ </div>
348
+ <div id="headLinks">
349
+ <p>
350
+ <a href="/login/logout">Log out</a> | <a href="/inbox">Inbox</a> |
351
+ <a href="#" title="Switch Colour Style" id="colourToggle">Paint it Black</a> |
352
+ <script>
353
+ $('colourToggle').observe('click', function (e) {
354
+ e.stop();
355
+ LFM.Display.colourToggle(e.element(), LFM.String.toRedStr, LFM.String.toBlackStr);
356
+ });
357
+ </script>
358
+ <a href="/help">Help</a>
359
+ |
360
+ <img src="http://cdn.last.fm/depth/flags/mini/globe.gif" id="langToggleFlag" alt="Change language" />
361
+ <a href="/api/show?service=258&amp;change=language" title="Click here to change your language" rel="nofollow" id="headerLangToggle">English</a>
362
+
363
+ </p>
364
+ </div>
365
+ </div><!-- #headerWrapper -->
366
+ </div>
367
+
368
+ <script>
369
+ LFM.Display.setupHeader(); new LFM.Activityfeed.DeleteListener();
370
+ </script>
371
+ <!-- Adserving start -->
372
+
373
+ <div id="LastAd_Skin" class="LastAd">
374
+ <div align="center">
375
+ <script type="text/javascript">
376
+ if(typeof writeSkin == 'function') writeSkin();
377
+ </script>
378
+ </div>
379
+ </div>
380
+ <script>
381
+ $("LastAd_Skin").hide();
382
+ </script>
383
+ <!-- Adserving end --><div id='content'>
384
+ <div class="fullWidth">
385
+
386
+
387
+ <style type="text/css">
388
+
389
+ body {
390
+ padding:0px 0px 0px 20px;
391
+ color:#000;
392
+ text-align:left;
393
+ }
394
+
395
+ a,a:link,a:visited {
396
+ text-decoration:none;
397
+ color:#D01F3C;
398
+ }
399
+
400
+ #content a:hover {
401
+ background-color:#D01F3C;
402
+ color:#FFF;
403
+ }
404
+
405
+ p.sampleurl a {
406
+ word-wrap:break-word;
407
+ text-wrap:unrestricted;
408
+ }
409
+
410
+ a.auth:hover {
411
+ background-color:#FFF;
412
+ color:#000;
413
+ }
414
+
415
+ a.auth {
416
+ color:#000;
417
+ }
418
+
419
+ a.cancel,a.cancel:link,a.cancel:active,a.cancel:visited,a.cancel:hover {
420
+ text-decoration:underline;
421
+ text-underline:solid #D01F3C;
422
+ text-underline-style:solid;
423
+ }
424
+
425
+ ul {
426
+ list-style-type:none;
427
+ padding:0px 0px 0px 10px;
428
+ margin:2px 0px 2px 0px;
429
+ }
430
+
431
+ #main p {
432
+ line-height:1.3em;
433
+ }
434
+
435
+ li {
436
+ padding:0px 0px 0px 0px;
437
+ margin:0px 0px 0px 0px;
438
+ }
439
+
440
+ #content h1,h2,h3 {
441
+ font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;
442
+ font-size:14px;
443
+ color:#000;
444
+ clear:none;
445
+ margin-top:10px;
446
+ }
447
+
448
+ dd {
449
+ margin:5px 0px 5px 20px;
450
+ }
451
+
452
+ ol {
453
+ margin:5px 0px 5px 20px;
454
+ list-style-type:decimal;
455
+ }
456
+
457
+ #content h1 {
458
+ padding-bottom:2px;
459
+ margin:8px 0 10px 0px;
460
+ }
461
+
462
+ h4 {
463
+ color:#000;
464
+ margin-top:5px;
465
+ }
466
+
467
+ .wstesttitle {
468
+ border-bottom:1px solid #CCC;
469
+ font-weight:Bold;
470
+ }
471
+
472
+ .wstestpass {
473
+ background:#C1FFC1;
474
+ padding:10px;
475
+ border:1px dotted #CCC;
476
+ }
477
+
478
+ #grant {
479
+ clear: both;
480
+ float:left;
481
+ padding-left:0;
482
+ padding-right:10px;
483
+ margin-left:0px;
484
+ }
485
+
486
+ #apigroup ul {
487
+ padding-left:0px;
488
+ padding-top:4px;
489
+ }
490
+
491
+ h2 {
492
+ color:#D01F3C;
493
+ margin-bottom:10px;
494
+ margin-top:12px;
495
+ font-size:16px;
496
+ }
497
+
498
+ #leftcol h2{
499
+ color:#000;
500
+ }
501
+
502
+ #leftcol {
503
+ float:left;
504
+ padding:20px 20px 20px 20px;
505
+ background-color:#F0F0F0;
506
+ margin-bottom:20px;
507
+ }
508
+
509
+ ul.wspanel {
510
+ padding-left:0px;
511
+ }
512
+
513
+ .wspanel li.package {
514
+ margin-top:5px;
515
+ }
516
+
517
+ .param {
518
+ font-style:italic;
519
+ font-weight:bold;
520
+ }
521
+
522
+ #main {
523
+ padding:0px 0 0 20px;
524
+ margin:0px 0 0 220px;
525
+ }
526
+
527
+ #wsdescriptor {
528
+ padding-top:0px;
529
+ }
530
+
531
+ textarea {
532
+ width:auto;
533
+ margin-bottom:10px;
534
+ }
535
+
536
+ p {
537
+ padding:8px 2px 2px 0px;
538
+ margin:2px;
539
+ }
540
+
541
+ .wsdescription {
542
+ padding:10px 10px 10px 10px;
543
+ margin-top:5px;
544
+ background:#ffd;
545
+ border:1px dotted #CCC;
546
+ }
547
+
548
+ #wstitle {
549
+ padding-bottom:4px;
550
+ padding-left:55px;
551
+ background-image:url(http://cdn.last.fm/webclient/lastfmlogo.jpg);
552
+ background-repeat:no-repeat;
553
+ background-position: 0 0;
554
+ }
555
+
556
+ .feeds td.feed {
557
+ color:#666;
558
+ width:100%;
559
+ }
560
+
561
+ #blurb {
562
+ background-color:#F0F0F0;
563
+ width:500px;
564
+ padding:10px;
565
+ padding-bottom:20px;
566
+ font-size:16px;
567
+ line-height:1.4em;
568
+ }
569
+
570
+ #apigroup {
571
+ float:right;
572
+ width:260px;
573
+ padding:0px 30px;
574
+ }
575
+
576
+ #build {
577
+ clear:right;
578
+ margin-top:15px;
579
+ }
580
+
581
+ .title {
582
+ border-bottom:1px solid #CCC;
583
+ }
584
+
585
+ #methods {
586
+ clear:left;
587
+ }
588
+
589
+ #apigroup h2 {
590
+ margin-top:6px;
591
+ margin-bottom:6px;
592
+ }
593
+
594
+ ul#apps {
595
+ padding-left:0px;
596
+ }
597
+
598
+ ul#apps li.item {
599
+ cursor:pointer;
600
+ float:left;
601
+ line-height:14px;
602
+ overflow:hidden;
603
+ padding:0px;
604
+ width:260px;
605
+ }
606
+
607
+ ul#apps li.item p.basic {
608
+ width:250px;
609
+ color:#000;
610
+ font-weight:bold;
611
+ }
612
+
613
+ ul#apps li.item a:hover {
614
+ background-color:#F0F0F0;
615
+ }
616
+
617
+ h2.package {
618
+ color:#000;
619
+ }
620
+
621
+ #methods .col {
622
+ float:left;
623
+ width:260px;
624
+ }
625
+
626
+ div.appsimage {
627
+ overflow:hidden;
628
+ width:240px;
629
+ height:100px;
630
+ }
631
+
632
+ ul#apps a.itemlink {
633
+ color:#333;
634
+ display:block;
635
+ height:190px;
636
+ padding:10px;
637
+ padding-top:0px;
638
+ margin-bottom:10px;
639
+ position:relative;
640
+ text-decoration:none;
641
+ width:250px;
642
+ }
643
+
644
+ #content h1.header a,#content h1.header a:hover,#content h1.header a:visited{
645
+ color:#000;
646
+ text-decoration:none;
647
+ background-color:#FFFFFF;
648
+ }
649
+
650
+ ul#apps p.itemdesc {
651
+ width:250px;
652
+ }
653
+
654
+ ul#apps li.item a {
655
+ width:260px;
656
+ }
657
+
658
+ #intro {
659
+ margin-top:5px;
660
+ }
661
+
662
+
663
+ td.feed .title {
664
+ color:#000;
665
+ border-bottom:none;
666
+ }
667
+
668
+ .feeds td {
669
+ width:100px;
670
+ border-bottom: 1px solid #F0F0F0;
671
+ margin:0px;
672
+ }
673
+
674
+ h3.feed {
675
+ color:#D01F3C;
676
+ border-bottom: 1px solid #CCC;
677
+ padding-bottom:5px;
678
+ }
679
+
680
+ .feeds {
681
+ }
682
+
683
+ .feeds .last td{
684
+ border-bottom:none;
685
+ }
686
+ #wstitle h1 {
687
+ font-size:24px;
688
+ line-height:1.0 em;
689
+ font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;
690
+ margin-bottom:2px;
691
+ }
692
+
693
+ #content h1 {
694
+ padding-top:6px;
695
+ font-size:24px;
696
+ }
697
+
698
+ #wsurl {
699
+ padding:4px 0 0 10px;
700
+ }
701
+
702
+ #sample {
703
+ overflow:hidden;
704
+ }
705
+
706
+ ul.stations {
707
+ margin-left:20px;
708
+ }
709
+
710
+ ul.stations li {
711
+ list-style-type:disc;
712
+ margin-left:8px;
713
+ padding:2px 0 0 5px;
714
+ }
715
+
716
+ ul.stationpanel li {
717
+ padding:4px 0 4px 0;
718
+ }
719
+
720
+ pre {
721
+ background-color:#F0F0F0;
722
+ padding:10px;
723
+ line-height:1.2em;
724
+ margin:5px 0 5px 0;
725
+ }
726
+
727
+ textarea:hover {
728
+ }
729
+
730
+ button {
731
+ font-size:12px;
732
+ }
733
+
734
+ td {
735
+ padding:5px 0 5px 5px;
736
+ }
737
+
738
+ table.ws {
739
+ text-align:left;
740
+ }
741
+
742
+ table.ws td,table.ws th,table.ws tr {
743
+ padding:3px;
744
+ }
745
+
746
+ .highlight {
747
+ }
748
+
749
+ #footer {
750
+ padding:10px 0 0 0px;
751
+ margin:20px 0 40px 240px;
752
+ width:700px;
753
+ color:#666;
754
+ border-top:1px solid #CCC;
755
+ }
756
+
757
+ </style>
758
+ <div id="leftcol">
759
+ <h2>API Doc</h2>
760
+
761
+ <ul class="wspanel">
762
+ <li><a href="/api/intro">Overview</a></li>
763
+ <li><a href="/api/authentication">User Authentication</a></li>
764
+ <li><a href="/api/submissions">Submissions</a></li>
765
+ <li><a href="/api/radio">Radio API</a></li>
766
+ <li><a href="/api/playlists">Playlists</a></li>
767
+ <li><a href="/api/downloads">Downloads</a></li>
768
+ <li><a href="/api/rest">REST requests</a></li>
769
+ <li><a href="/api/xmlrpc">XML-RPC requests</a></li>
770
+ </ul>
771
+
772
+ <h2>API Methods</h2>
773
+ <ul class="wspanel">
774
+ <li class="package"><b>Album</b></li>
775
+ <ul>
776
+ <li><a href="/api/show/?service=302">album.addTags</a></li>
777
+ <li><a href="/api/show/?service=290">album.getInfo</a></li>
778
+ <li><a href="/api/show/?service=317">album.getTags</a></li>
779
+ <li><a href="/api/show/?service=314">album.removeTag</a></li>
780
+ <li><a href="/api/show/?service=357">album.search</a></li>
781
+ </ul>
782
+ <li class="package"><b>Artist</b></li>
783
+ <ul>
784
+ <li><a href="/api/show/?service=303">artist.addTags</a></li>
785
+ <li><a href="/api/show/?service=117">artist.getEvents</a></li>
786
+ <li><a href="/api/show/?service=407">artist.getImages</a></li>
787
+ <li><a href="/api/show/?service=267">artist.getInfo</a></li>
788
+ <li><a href="/api/show/?service=397">artist.getShouts</a></li>
789
+ <li><a href="/api/show/?service=119">artist.getSimilar</a></li>
790
+ <li><a href="/api/show/?service=318">artist.getTags</a></li>
791
+ <li><a href="/api/show/?service=287">artist.getTopAlbums</a></li>
792
+ <li><a href="/api/show/?service=310">artist.getTopFans</a></li>
793
+ <li><a href="/api/show/?service=288">artist.getTopTags</a></li>
794
+ <li><a href="/api/show/?service=277">artist.getTopTracks</a></li>
795
+ <li><a href="/api/show/?service=315">artist.removeTag</a></li>
796
+ <li><a href="/api/show/?service=272">artist.search</a></li>
797
+ <li><a href="/api/show/?service=306">artist.share</a></li>
798
+ <li><a href="/api/show/?service=408">artist.shout</a></li>
799
+ </ul>
800
+ <li class="package"><b>Auth</b></li>
801
+ <ul>
802
+ <li><a href="/api/show/?service=266">auth.getMobileSession</a></li>
803
+ <li><a href="/api/show/?service=125">auth.getSession</a></li>
804
+ <li><a href="/api/show/?service=265">auth.getToken</a></li>
805
+ <li><a href="/api/show/?service=133">auth.getWebSession</a></li>
806
+ </ul>
807
+ <li class="package"><b>Event</b></li>
808
+ <ul>
809
+ <li><a href="/api/show/?service=307">event.attend</a></li>
810
+ <li><a href="/api/show/?service=391">event.getAttendees</a></li>
811
+ <li><a href="/api/show/?service=292">event.getInfo</a></li>
812
+ <li><a href="/api/show/?service=399">event.getShouts</a></li>
813
+ <li><a href="/api/show/?service=350">event.share</a></li>
814
+ <li><a href="/api/show/?service=409">event.shout</a></li>
815
+ </ul>
816
+ <li class="package"><b>Geo</b></li>
817
+ <ul>
818
+ <li><a href="/api/show/?service=270">geo.getEvents</a></li>
819
+ <li><a href="/api/show/?service=297">geo.getTopArtists</a></li>
820
+ <li><a href="/api/show/?service=298">geo.getTopTracks</a></li>
821
+ </ul>
822
+ <li class="package"><b>Group</b></li>
823
+ <ul>
824
+ <li><a href="/api/show/?service=379">group.getMembers</a></li>
825
+ <li><a href="/api/show/?service=293">group.getWeeklyAlbumChart</a></li>
826
+ <li><a href="/api/show/?service=294">group.getWeeklyArtistChart</a></li>
827
+ <li><a href="/api/show/?service=295">group.getWeeklyChartList</a></li>
828
+ <li><a href="/api/show/?service=296">group.getWeeklyTrackChart</a></li>
829
+ </ul>
830
+ <li class="package"><b>Library</b></li>
831
+ <ul>
832
+ <li><a href="/api/show/?service=370">library.addAlbum</a></li>
833
+ <li><a href="/api/show/?service=371">library.addArtist</a></li>
834
+ <li><a href="/api/show/?service=372">library.addTrack</a></li>
835
+ <li><a href="/api/show/?service=321">library.getAlbums</a></li>
836
+ <li><a href="/api/show/?service=322">library.getArtists</a></li>
837
+ <li><a href="/api/show/?service=323">library.getTracks</a></li>
838
+ </ul>
839
+ <li class="package"><b>Playlist</b></li>
840
+ <ul>
841
+ <li><a href="/api/show/?service=337">playlist.addTrack</a></li>
842
+ <li><a href="/api/show/?service=365">playlist.create</a></li>
843
+ <li><a href="/api/show/?service=271">playlist.fetch</a></li>
844
+ </ul>
845
+ <li class="package"><b>Radio</b></li>
846
+ <ul>
847
+ <li><a href="/api/show/?service=256">radio.getPlaylist</a></li>
848
+ <li><a href="/api/show/?service=160">radio.tune</a></li>
849
+ </ul>
850
+ <li class="package"><b>Tag</b></li>
851
+ <ul>
852
+ <li><a href="/api/show/?service=311">tag.getSimilar</a></li>
853
+ <li><a href="/api/show/?service=283">tag.getTopAlbums</a></li>
854
+ <li><a href="/api/show/?service=284">tag.getTopArtists</a></li>
855
+ <li><a href="/api/show/?service=276">tag.getTopTags</a></li>
856
+ <li><a href="/api/show/?service=285">tag.getTopTracks</a></li>
857
+ <li><a href="/api/show/?service=358">tag.getWeeklyArtistChart</a></li>
858
+ <li><a href="/api/show/?service=359">tag.getWeeklyChartList</a></li>
859
+ <li><a href="/api/show/?service=273">tag.search</a></li>
860
+ </ul>
861
+ <li class="package"><b>Tasteometer</b></li>
862
+ <ul>
863
+ <li><a href="/api/show/?service=258">tasteometer.compare</a></li>
864
+ </ul>
865
+ <li class="package"><b>Track</b></li>
866
+ <ul>
867
+ <li><a href="/api/show/?service=304">track.addTags</a></li>
868
+ <li><a href="/api/show/?service=261">track.ban</a></li>
869
+ <li><a href="/api/show/?service=356">track.getInfo</a></li>
870
+ <li><a href="/api/show/?service=319">track.getSimilar</a></li>
871
+ <li><a href="/api/show/?service=320">track.getTags</a></li>
872
+ <li><a href="/api/show/?service=312">track.getTopFans</a></li>
873
+ <li><a href="/api/show/?service=289">track.getTopTags</a></li>
874
+ <li><a href="/api/show/?service=260">track.love</a></li>
875
+ <li><a href="/api/show/?service=316">track.removeTag</a></li>
876
+ <li><a href="/api/show/?service=286">track.search</a></li>
877
+ <li><a href="/api/show/?service=305">track.share</a></li>
878
+ </ul>
879
+ <li class="package"><b>User</b></li>
880
+ <ul>
881
+ <li><a href="/api/show/?service=291">user.getEvents</a></li>
882
+ <li><a href="/api/show/?service=263">user.getFriends</a></li>
883
+ <li><a href="/api/show/?service=344">user.getInfo</a></li>
884
+ <li><a href="/api/show/?service=329">user.getLovedTracks</a></li>
885
+ <li><a href="/api/show/?service=264">user.getNeighbours</a></li>
886
+ <li><a href="/api/show/?service=343">user.getPastEvents</a></li>
887
+ <li><a href="/api/show/?service=313">user.getPlaylists</a></li>
888
+ <li><a href="/api/show/?service=278">user.getRecentTracks</a></li>
889
+ <li><a href="/api/show/?service=388">user.getRecommendedArtists</a></li>
890
+ <li><a href="/api/show/?service=375">user.getRecommendedEvents</a></li>
891
+ <li><a href="/api/show/?service=401">user.getShouts</a></li>
892
+ <li><a href="/api/show/?service=299">user.getTopAlbums</a></li>
893
+ <li><a href="/api/show/?service=300">user.getTopArtists</a></li>
894
+ <li><a href="/api/show/?service=123">user.getTopTags</a></li>
895
+ <li><a href="/api/show/?service=301">user.getTopTracks</a></li>
896
+ <li><a href="/api/show/?service=279">user.getWeeklyAlbumChart</a></li>
897
+ <li><a href="/api/show/?service=281">user.getWeeklyArtistChart</a></li>
898
+ <li><a href="/api/show/?service=280">user.getWeeklyChartList</a></li>
899
+ <li><a href="/api/show/?service=282">user.getWeeklyTrackChart</a></li>
900
+ <li><a href="/api/show/?service=411">user.shout</a></li>
901
+ </ul>
902
+ <li class="package"><b>Venue</b></li>
903
+ <ul>
904
+ <li><a href="/api/show/?service=394">venue.getEvents</a></li>
905
+ <li><a href="/api/show/?service=395">venue.getPastEvents</a></li>
906
+ <li><a href="/api/show/?service=396">venue.search</a></li>
907
+ </ul>
908
+ </ul>
909
+ </div> <div id="main">
910
+ <div id="wstitle">
911
+ <h1 class="header"><a href="/api">Last.fm Web Services</a></h1>
912
+ <a href="/api/intro">API</a> | <a href="/api/feeds">Feeds</a> | <a href="/api/account">Your API Account</a>
913
+ </div> <h1>tasteometer.compare</h1>
914
+ <div class="wsdescription">
915
+ Get a Tasteometer score from two inputs, along with a list of shared
916
+ artists. If the input is a User or a Myspace URL, some additional
917
+ information is returned.
918
+ </div>
919
+ <p class="sampleurl">
920
+ e.g. <a href="http://ws.audioscrobbler.com/2.0/?method=tasteometer.compare&type1=user&type2=user&value1=joanofarctan&value2=mirandason&api_key=b25b959554ed76058ac220b7b2e0a026">http://ws.audioscrobbler.com/2.0/?method=tasteometer.compare&type1=user&type2=user&value1=joano...</a>
921
+ </p>
922
+ <div id="wsdescriptor">
923
+ <h2>Params</h2>
924
+ <span class="param">type[1|2]</span> (Required x 2) : 'user' | 'artists' | 'myspace'<br />
925
+ <span class="param">value[1|2]</span> (Required x 2) : [Last.fm username] | [Comma-separated artist names] | [MySpace profile URL]<br />
926
+ <span class="param">limit</span> (Optional, default = 5) : How many shared artists to display<br />
927
+ <span class="param">api_key</span> (Required) : A Last.fm API key.<br />
928
+ <h2>Auth</h2>
929
+
930
+ This service does <b>not</b> require authentication.
931
+ <h2>Sample Response</h2>
932
+ <script type="text/javascript">
933
+
934
+ function showWSExcerptSubmit() {
935
+ $('updateexcerpt').style.display = 'block';
936
+ }
937
+
938
+ function hideWSExcerptSubmit() {
939
+ $('updateexcerpt').style.display = 'none';
940
+ }
941
+
942
+ function showWSExcerptSuccess() {
943
+ $('success').style.display = 'block';
944
+ }
945
+
946
+ function updateExcerpt(excerpt,service) {
947
+ new Ajax.Request('/api/updateExcerpt', {
948
+ method: 'post',
949
+ parameters: 'excerpt='+encodeURIComponent(excerpt.value)+'&service='+service.value,
950
+ onSuccess: onUpdateExcerpt
951
+ });
952
+ }
953
+
954
+ function onUpdateExcerpt(response) {
955
+ if(response.responseText) {
956
+ hideWSExcerptSubmit();
957
+ showWSExcerptSuccess();
958
+ $('excerpt').onblur();
959
+ }
960
+ }
961
+
962
+ </script>
963
+ <div id="sample"><pre>&lt;lfm status=&quot;ok&quot;&gt;
964
+ &lt;comparison&gt;
965
+ &lt;result&gt;
966
+ &lt;score&gt;0.74&lt;/score&gt;
967
+ &lt;artists matches=&quot;43&quot;&gt;
968
+ &lt;artist&gt;
969
+ &lt;name&gt;Radiohead&lt;/name&gt;
970
+ &lt;url&gt;http://www.last.fm/music/Radiohead&lt;/url&gt;
971
+ &lt;image size=&quot;large&quot;&gt;http://userserve-ak.last.fm/serve/160/169665.gif&lt;/image&gt;
972
+ &lt;image size=&quot;medium&quot;&gt;http://userserve-ak.last.fm/serve/85/169665.gif&lt;/image&gt;
973
+ &lt;image size=&quot;small&quot;&gt;http://userserve-ak.last.fm/serve/50/169665.gif&lt;/image&gt;
974
+ &lt;/artist&gt;
975
+ &lt;artist&gt;
976
+ &lt;name&gt;The Beatles&lt;/name&gt;
977
+ &lt;url&gt;http://www.last.fm/music/The+Beatles&lt;/url&gt;
978
+ &lt;image size=&quot;large&quot;&gt;http://userserve-ak.last.fm/serve/160/153358.jpg&lt;/image&gt;
979
+ &lt;image size=&quot;medium&quot;&gt;http://userserve-ak.last.fm/serve/85/153358.jpg&lt;/image&gt;
980
+ &lt;image size=&quot;small&quot;&gt;http://userserve-ak.last.fm/serve/50/153358.jpg&lt;/image&gt;
981
+ &lt;/artist&gt;
982
+ &lt;/artists&gt;
983
+ &lt;/result&gt;
984
+ &lt;input&gt;
985
+ &lt;user&gt;
986
+ &lt;name&gt;jwheare&lt;/name&gt;
987
+ &lt;url&gt;http://www.last.fm/user/jwheare/&lt;/url&gt;
988
+ &lt;image size=&quot;large&quot;&gt;http://userserve-ak.last.fm/serve/160/857567.png&lt;/image&gt;
989
+ &lt;image size=&quot;medium&quot;&gt;http://userserve-ak.last.fm/serve/85/857567.png&lt;/image&gt;
990
+ &lt;image size=&quot;small&quot;&gt;http://userserve-ak.last.fm/serve/50/857567.png&lt;/image&gt;
991
+ &lt;/user&gt;
992
+ &lt;myspace&gt;
993
+ &lt;url&gt;http://www.myspace.com/mcscrobbler&lt;/url&gt;
994
+ &lt;image&gt;http://x.myspace.com/images/clear.gif&lt;/image&gt;
995
+ &lt;/myspace&gt;
996
+ &lt;/input&gt;
997
+ &lt;/comparison&gt;
998
+ &lt;/lfm&gt;</pre></div>
999
+
1000
+ <h2>Errors</h2>
1001
+ <ul>
1002
+ <li><span class="param">2</span> : Invalid service -This service does not exist</li>
1003
+ <li><span class="param">3</span> : Invalid Method - No method with that name in this package</li>
1004
+ <li><span class="param">4</span> : Authentication Failed - You do not have permissions to access the service</li>
1005
+ <li><span class="param">5</span> : Invalid format - This service doesn't exist in that format</li>
1006
+ <li><span class="param">6</span> : Invalid parameters - Your request is missing a required parameter</li>
1007
+ <li><span class="param">7</span> : Invalid resource specified</li>
1008
+ <li><span class="param">9</span> : Invalid session key - Please re-authenticate</li>
1009
+ <li><span class="param">10</span> : Invalid API key - You must be granted a valid key by last.fm</li>
1010
+ <li><span class="param">11</span> : Service Offline - This service is temporarily offline. Try again later.</li>
1011
+ <li><span class="param">12</span> : Subscription Error - The user needs to be subscribed in order to do that</li>
1012
+ <li><span class="param">13</span> : Invalid method signature supplied</li>
1013
+ <li><span class="param">18</span> : This user has no free radio plays left. Subscription required.</li>
1014
+ </ul>
1015
+ </div>
1016
+ </div>
1017
+ </div>
1018
+ </div>
1019
+
1020
+ <div id="LastFooter">
1021
+
1022
+ <div id="footer_ads" style="display: none;" class="clearit">
1023
+ <div class="footer_ad_wrapper">
1024
+
1025
+ <!-- Adserving start -->
1026
+
1027
+ <div id="LastAd_Footer1" class="LastAd">
1028
+ <div align="center">
1029
+ <script type="text/javascript">
1030
+ if ($("footer_ads")) $("footer_ads").show();
1031
+ if(typeof writeFooter1 == 'function') writeFooter1();
1032
+ </script>
1033
+ </div>
1034
+ </div>
1035
+ <script>
1036
+ $("LastAd_Footer1").hide();
1037
+ </script>
1038
+ <!-- Adserving end --> <!-- Adserving start -->
1039
+
1040
+ <div id="LastAd_Footer2" class="LastAd">
1041
+ <div align="center">
1042
+ <script type="text/javascript">
1043
+ if ($("footer_ads")) $("footer_ads").show();
1044
+ if(typeof writeFooter2 == 'function') writeFooter2();
1045
+ </script>
1046
+ </div>
1047
+ </div>
1048
+ <script>
1049
+ $("LastAd_Footer2").hide();
1050
+ </script>
1051
+ <!-- Adserving end --> <!-- Adserving start -->
1052
+
1053
+ <div id="LastAd_Footer3" class="LastAd">
1054
+ <div align="center">
1055
+ <script type="text/javascript">
1056
+ if ($("footer_ads")) $("footer_ads").show();
1057
+ if(typeof writeFooter3 == 'function') writeFooter3();
1058
+ </script>
1059
+ </div>
1060
+ </div>
1061
+ <script>
1062
+ $("LastAd_Footer3").hide();
1063
+ </script>
1064
+ <!-- Adserving end --> <!-- Adserving start -->
1065
+
1066
+ <div id="LastAd_Footer4" class="LastAd last">
1067
+ <div align="center">
1068
+ <script type="text/javascript">
1069
+ if ($("footer_ads")) $("footer_ads").show();
1070
+ if(typeof writeFooter4 == 'function') writeFooter4();
1071
+ </script>
1072
+ </div>
1073
+ </div>
1074
+ <script>
1075
+ $("LastAd_Footer4").hide();
1076
+ </script>
1077
+ <!-- Adserving end -->
1078
+ </div><!-- .footer_ad_wrapper -->
1079
+ </div><!-- #footer_ads -->
1080
+
1081
+ <ul id="footerStuff" class="clearit">
1082
+ <li><div id="footerMessage">
1083
+ <h3>What’s New</h3>
1084
+ <div class="bbcode">It’s here. Welcome to the new Last.fm! <a href="http://blog.last.fm/2008/07/17/lastfm-the-next-generation">Read all about it on our blog</a>.</div>
1085
+ </div><!-- #footerMessage --></li>
1086
+
1087
+ <li><p id="uploadYourMusic">
1088
+ <strong>Do you make music? Upload it!</strong><br /><a href="/uploadmusic?accountType=artist">Artists</a> or <a href="/uploadmusic?accountType=label">Labels</a>
1089
+ </p></li>
1090
+ </ul><!-- #footerStuff -->
1091
+
1092
+ <div id="footer_content">
1093
+ <ul id="footerLinks" class="clearit">
1094
+ <li class="first">
1095
+ <dl>
1096
+ <dt>Learn About Us</dt>
1097
+ <dd><a href="/about/contact">Contact</a></dd>
1098
+ <dd><a href="/about">About Us</a></dd>
1099
+ <dd><a href="/about/team">Team</a></dd>
1100
+ <dd><a href="/about/jobs">Jobs</a></dd>
1101
+ <dd><a href="/resources">Media Kit</a></dd>
1102
+ <dd><a href="/advertise">Advertise</a></dd>
1103
+ </dl>
1104
+ </li>
1105
+ <li>
1106
+ <dl>
1107
+ <dt>Get Help</dt>
1108
+ <dd><a href="/help/faq">FAQ</a></dd>
1109
+ <dd><a href="/forum/21713">Website Support</a></dd>
1110
+ <dd><a href="/forum/34905">Scrobbler Support</a></dd>
1111
+ <dd><a href="/group/Last.fm+for+iPhone+and+iPod+Touch">iPhone Support</a></dd>
1112
+ </dl>
1113
+ </li>
1114
+
1115
+ <li>
1116
+ <dl>
1117
+ <dt>Join In</dt>
1118
+ <dd><a href="/users">Find People</a></dd>
1119
+ <dd><a href="/users/groups">Find Groups</a></dd>
1120
+ <dd><a href="/forum">Forums</a></dd>
1121
+ <dd><a href="/help/guidelines">Community Guidelines</a></dd>
1122
+ <dd><a href="/about/moderators">Moderators</a></dd>
1123
+ <dd><a href="/promotions">Contests &amp; Promotions</a></dd>
1124
+ </dl>
1125
+ </li>
1126
+ <li class="last">
1127
+ <dl>
1128
+ <dt>Do More</dt>
1129
+ <dd><a href="/download">Last.fm Scrobbler</a></dd>
1130
+ <dd><a href="/download#content_ipod">iPod Scrobbler</a></dd>
1131
+ <dd><a href="/download#content_iphone">iPhone App</a></dd>
1132
+ <dd><a href="http://build.last.fm">More Apps</a></dd>
1133
+ <dd><a href="/music/+free-music-downloads">Free Music Downloads</a></dd>
1134
+ <dd><a href="/hardware">Hardware</a></dd>
1135
+ <dd><a href="/widgets">Widgets</a></dd> <dd><a href="/tools/charts">Chart Images</a></dd>
1136
+ <dd><a href="/subscribe">Subscribe</a></dd>
1137
+ <dd><a href="/api">API</a></dd>
1138
+ </dl>
1139
+ </li>
1140
+ </ul><!-- #footerLinks -->
1141
+
1142
+ <div id="justCantGetEnough" class="clearit">
1143
+ <blockquote>“Is that a Last.fm in your pocket, or are you just pleased to see me?”</blockquote>
1144
+ <p>
1145
+ <strong>More Last.fm Sites:</strong>
1146
+ <a href="http://blog.last.fm/">Blog</a>
1147
+ | <a href="http://musicmanager.last.fm">Music Manager</a>
1148
+ | <a href="http://build.last.fm">Build</a>
1149
+ | <a href="http://playground.last.fm">Playground</a>
1150
+ | <a href="http://www.last.fm/bestof/2008">Best of 2008</a>
1151
+ </p>
1152
+ </div>
1153
+
1154
+ <div id="legalities">
1155
+ <div id="cbsi_f">
1156
+ <form>
1157
+ <script language="javascript">
1158
+ document.write("<div><label class=\"rb_visit_txt\" for=\"cbsi_footer_menu\">Visit other Sites</label><select name=\"cbsi_footer_menu\" id=\"cbsi_footer_menu\" class=\"rb_visit_sel\"><option value=\"\">Select Site</option><option value=\"http://www.bnet.com\">BNET</option><option value=\"http://www.cbscares.com\">CBS Cares</option><option value=\"http://www.cbssports.com/cbscollegesports/\">CBS College Sports</option><option value=\"http://www.cbsradio.com/streaming/\">CBS Radio</option><option value=\"http://www.cbs.com\">CBS.com</option><option value=\"http://www.cbsnews.com\">CBSNews.com</option><option value=\"http://www.cbssports.com\">CBSSports.com</option><option value=\"http://www.chow.com\">CHOW</option><option value=\"http://www.cnet.com\">CNET</option><option value=\"http://www.cnetcontentsolutions.com\">CNET Content Solutions</option><option value=\"http://www.gamespot.com\">GameSpot</option><option value=\"http://www.cnetnetworks.com/advertise/media-kit/international.html?tag=ft\">International</option><option value=\"http://www.last.fm\">Last.fm</option><option value=\"http://www.maxpreps.com\">MaxPreps</option><option value=\"http://www.metacritic.com\">Metacritic.com</option><option value=\"http://moneywatch.bnet.com\">Moneywatch</option><option value=\"http://www.mp3.com\">MP3.com</option><option value=\"http://www.mysimon.com\">mySimon</option><option value=\"http://www.ncaa.com\">NCAA</option><option value=\"http://www.search.com\">Search.com</option><option value=\"http://www.shopper.com\">Shopper.com</option><option value=\"http://www.sho.com\">Showtime</option><option value=\"http://www.techrepublic.com\">TechRepublic</option><option value=\"http://www.theinsider.com\">The Insider</option><option value=\"http://www.tv.com\">TV.com</option><option value=\"http://www.urbanbaby.com\">UrbanBaby.com</option><option value=\"http://www.zdnet.com\">ZDNet</option></select><input type=\"button\" class=\"rb_visit_go\" value=\"Go\" onClick=\"window.location=document.getElementById('cbsi_footer_menu').options[document.getElementById('cbsi_footer_menu').selectedIndex].value;\" /></div>");
1159
+ </script>
1160
+ </form>
1161
+ <noscript>
1162
+ <a href="http://www.bnet.com">BNET</a> | <a href="http://www.cbscares.com">CBS Cares</a> | <a href="http://www.cbssports.com/cbscollegesports/">CBS College Sports</a> | <a href="http://www.cbsradio.com/streaming/">CBS Radio</a> | <a href="http://www.cbs.com">CBS.com</a> | <a href="http://www.cbsnews.com">CBSNews.com</a> | <a href="http://www.cbssports.com">CBSSports.com</a> | <a href="http://www.chow.com">CHOW</a> | <a href="http://www.cnet.com">CNET</a> | <a href="http://www.cnetcontentsolutions.com">CNET Content Solutions</a> | <a href="http://www.gamespot.com">GameSpot</a> | <a href="http://www.cnetnetworks.com/advertise/media-kit/international.html?tag=ft">International</a> | <a href="http://www.last.fm">Last.fm</a> | <a href="http://www.maxpreps.com">MaxPreps</a> | <a href="http://www.metacritic.com">Metacritic.com</a> | <a href="http://moneywatch.bnet.com">Moneywatch</a> | <a href="http://www.mp3.com">MP3.com</a> | <a href="http://www.mysimon.com">mySimon</a> | <a href="http://www.ncaa.com">NCAA</a> | <a href="http://www.search.com">Search.com</a> | <a href="http://www.shopper.com">Shopper.com</a> | <a href="http://www.sho.com">Showtime</a> | <a href="http://www.techrepublic.com">TechRepublic</a> | <a href="http://www.theinsider.com">The Insider</a> | <a href="http://www.tv.com">TV.com</a> | <a href="http://www.urbanbaby.com">UrbanBaby.com</a> | <a href="http://www.zdnet.com">ZDNet</a>
1163
+ </noscript>
1164
+ <p id="cbsi_f_pop">
1165
+ Popular on CBS sites: <a href='http://www.cnet.com/apple-iphone.html'>iPhone 3G</a> | <a href='http://fantasynews.cbssports.com/fantasyfootball'>Fantasy Football</a> | <a href='http://moneywatch.bnet.com'>Moneywatch</a> | <a href='http://download.cnet.com/windows/antivirus-software/'>Antivirus Software</a> | <a href='http://www.chow.com/recipes'>Recipes</a> | <a href='http://www.gamespot.com/pc/strategy/spore/index.html'>Spore</a><!-- cbth:100 -->
1166
+ </p>
1167
+ </div> <p id="copy">
1168
+ &copy; 2009 Last.fm Ltd. All rights reserved. |
1169
+ <a href="/legal/terms" target="_blank">Terms of Use</a>
1170
+ and <a href="/legal/privacy" target="_blank">Privacy Policy</a> | <span class="date">Updated November 21, 2008</span><br />
1171
+
1172
+ </p>
1173
+ </div><!-- #legalities -->
1174
+
1175
+ </div>
1176
+ </div><!-- #LastFooter -->
1177
+
1178
+ <ul id="langSelector" style="display: none; visibility: hidden;" class="nojs">
1179
+
1180
+
1181
+ <li><a href="http://www.lastfm.de/api/show?service=258&amp;setlang=de" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/de.gif" /> <span>Deutsch</span></a></li>
1182
+ <li><a href="http://www.lastfm.es/api/show?service=258&amp;setlang=es" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/es.gif" /> <span>Español</span></a></li>
1183
+ <li><a href="http://www.lastfm.fr/api/show?service=258&amp;setlang=fr" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/fr.gif" /> <span>Français</span></a></li>
1184
+ <li><a href="http://www.lastfm.it/api/show?service=258&amp;setlang=it" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/it.gif" /> <span>Italiano</span></a></li>
1185
+ <li><a href="http://www.lastfm.jp/api/show?service=258&amp;setlang=jp" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/jp.gif" /> <span>日本語</span></a></li>
1186
+ <li><a href="http://www.lastfm.pl/api/show?service=258&amp;setlang=pl" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/pl.gif" /> <span>Polski</span></a></li>
1187
+ <li><a href="http://www.lastfm.com.br/api/show?service=258&amp;setlang=pt" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/pt.gif" /> <span>Português</span></a></li>
1188
+ <li><a href="http://www.lastfm.ru/api/show?service=258&amp;setlang=ru" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/ru.gif" /> <span>Руccкий</span></a></li>
1189
+ <li><a href="http://www.lastfm.se/api/show?service=258&amp;setlang=sv" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/se.gif" /> <span>Svenska</span></a></li>
1190
+ <li><a href="http://www.lastfm.com.tr/api/show?service=258&amp;setlang=tr" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/tr.gif" /> <span>Türkçe</span></a></li>
1191
+ <li><a href="http://cn.last.fm/api/show?service=258&amp;setlang=zh" class="icon"><img src="http://cdn.last.fm/depth/flags/mini/zh.gif" /> <span>简体中文</span></a></li>
1192
+
1193
+ </ul>
1194
+
1195
+ <script>
1196
+
1197
+ $("langSelector").className = "js";
1198
+ LFM.set("Page", {
1199
+ navDropDown: new LFM.Display.DropDown(
1200
+ "headerLangToggle",
1201
+ "headerLangToggle",
1202
+ "langSelector",
1203
+ {
1204
+ align: "right",
1205
+ onShow: function (dropdown) {
1206
+ dropdown.ddbody.setStyle({
1207
+ top: (dropdown.ddbody.getStyle("top").toPixels() + 3) + "px"
1208
+ });
1209
+ }
1210
+ }
1211
+ )
1212
+ });
1213
+
1214
+ </script>
1215
+ <div id="multiButtonMenu" style="display: none;">
1216
+ <div>
1217
+ <ul class="lfmDropDownBody">
1218
+ <li class="mAddToLibrary"><a href="#">Add to my Library</a></li>
1219
+ <li class="mAddToFriends"><a href="#">Add to Friends</a></li>
1220
+
1221
+ <!-- <li class="save"><a href="#">Bookmark</a></li> -->
1222
+ <li class="mSend"><a href="#">Share</a></li>
1223
+
1224
+ <li class="mLove"><a href="#">Love track</a></li>
1225
+ <li class="mUnlove"><a href="#">Unlove track</a></li>
1226
+ <li class="mBan"><a href="#">Ban track from radio</a></li>
1227
+ <li class="mUnban"><a href="#">Unban track from radio</a></li>
1228
+
1229
+
1230
+ <li class="mAddTags"><a href="#">Add tags</a></li>
1231
+ <li class="mAddToPlaylist"><a href="#">Add to playlist</a></li>
1232
+ <li class="mMessage"><a href="#">Send a message</a></li>
1233
+ <li class="mEditDetails"><a href="#">Edit Details</a></li>
1234
+ <li class="mMessageAll"><a href="#">Message All Users</a></li>
1235
+ <li class="mEditPermissions"><a href="#">Edit Permissions</a></li>
1236
+ <li class="mAbdicate"><a href="#">Abdicate</a></li>
1237
+ <li class="mLeave"><a href="#">Leave Group</a></li>
1238
+
1239
+ <li class="mRemoveFromLibrary"><a href="#">Remove from your Library</a></li>
1240
+
1241
+ <li class="mLoading"><a href="#">&nbsp;</a></li>
1242
+ </ul>
1243
+ </div>
1244
+ </div>
1245
+
1246
+
1247
+ <script type="text/javascript" src="http://dw.com.com/js/dw.js"></script>
1248
+ <script type="text/javascript">
1249
+ DW.pageParams = {
1250
+ siteid: '190',
1251
+ ptid: '',
1252
+ onid: ''
1253
+ };
1254
+ DW.clear();
1255
+ </script>
1256
+ <noscript>
1257
+ <img src="http://dw.com.com/clear/c.gif?ts=1242849516&amp;sid=" />
1258
+ </noscript>
1259
+
1260
+
1261
+ <script src="http://surveys.cnet.com/html/surveys/1361.js"></script>
1262
+
1263
+ <script>
1264
+
1265
+ LFM.Button.MultiButton.setup();
1266
+ LFM.Display.setMinHeight();
1267
+
1268
+ </script>
1269
+
1270
+ </div>
1271
+ </div>
1272
+ </div>
1273
+ </body>
1274
+ </html>