shortwave 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>