firstfm 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -20,3 +20,9 @@ My main focus is to import events from Last.FM, but with time I will try to add
20
20
 
21
21
  Firstfm::Geo.get_events :location => "Berlin"
22
22
 
23
+ Firstfm::Artist.search "Eminem"
24
+
25
+ Firstfm::Artist.get_top_tracks "Eminem"
26
+
27
+ Firstfm::Track.search "Believe"
28
+
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- :major: 0
3
- :minor: 0
2
+ :minor: 1
3
+ :patch: 0
4
4
  :build:
5
- :patch: 2
5
+ :major: 0
data/firstfm.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{firstfm}
8
- s.version = "0.0.2"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Aleksandr Lossenko"]
@@ -25,18 +25,25 @@ Gem::Specification.new do |s|
25
25
  "VERSION.yml",
26
26
  "firstfm.gemspec",
27
27
  "lib/firstfm.rb",
28
+ "lib/firstfm/artist.rb",
28
29
  "lib/firstfm/event.rb",
29
30
  "lib/firstfm/geo.rb",
30
31
  "lib/firstfm/location.rb",
32
+ "lib/firstfm/track.rb",
31
33
  "lib/firstfm/venue.rb",
34
+ "test/fixtures/artists.xml",
32
35
  "test/fixtures/event.xml",
33
36
  "test/fixtures/events.xml",
34
37
  "test/fixtures/geo_event.xml",
35
38
  "test/fixtures/geo_events.xml",
39
+ "test/fixtures/top_tracks.xml",
40
+ "test/fixtures/tracks.xml",
36
41
  "test/fixtures/venue.xml",
37
42
  "test/fixtures/venues.xml",
38
43
  "test/helper.rb",
44
+ "test/test_artist.rb",
39
45
  "test/test_geo.rb",
46
+ "test/test_track.rb",
40
47
  "test/test_venue.rb"
41
48
  ]
42
49
  s.homepage = %q{http://github.com/egze/firstfm}
@@ -0,0 +1,57 @@
1
+ module Firstfm
2
+
3
+ class Artist
4
+
5
+ attr_accessor :name, :mbid, :url, :listeners, :streamable, :images
6
+
7
+ include HTTParty
8
+ base_uri 'ws.audioscrobbler.com'
9
+ format :xml
10
+
11
+ def initialize(params = {})
12
+ @name = params[:name]
13
+ end
14
+
15
+ def self.search(artist, page = 1, limit = 50)
16
+ response = get("/2.0/", {:query => {:method => 'artist.search', :artist => artist, :page => page, :limit => limit, :api_key => Firstfm::CONFIG['api_key']}})
17
+ artists_array = (response and response["lfm"] and response["lfm"]["results"] and response["lfm"]["results"]["artistmatches"] and response["lfm"]["results"]["artistmatches"]["artist"]) || []
18
+ artists = Artist.init_from_array(artists_array)
19
+ WillPaginate::Collection.create(page, limit) do |pager|
20
+ pager.replace artists
21
+ pager.total_entries = response['lfm']['results']['opensearch:totalResults'].to_i
22
+ end
23
+ end
24
+
25
+ def self.get_top_tracks(artist, page = 1, limit = 50)
26
+ response = get("/2.0/", {:query => {:method => 'artist.getTopTracks', :artist => artist, :page => page, :limit => limit, :api_key => Firstfm::CONFIG['api_key']}})
27
+ tracks_array = (response and response["lfm"] and response["lfm"]["toptracks"] and response["lfm"]["toptracks"]["track"]) || []
28
+ tracks = Track.init_from_array(tracks_array)
29
+ WillPaginate::Collection.create(page, limit) do |pager|
30
+ pager.replace tracks
31
+ pager.total_entries = response["lfm"]["toptracks"]["total"].to_i
32
+ end
33
+ end
34
+
35
+ def self.init_from_array(array)
36
+ return [] unless array.is_a?(Array)
37
+ array.inject([]) do |arr, artist|
38
+ arr << init_from_hash(artist)
39
+ arr
40
+ end
41
+ end
42
+
43
+ def self.init_from_hash(hash)
44
+ return nil unless hash.is_a?(Hash)
45
+ Artist.new.tap do |artist|
46
+ artist.name = hash["name"]
47
+ artist.mbid = hash["mbid"]
48
+ artist.url = hash["url"]
49
+ artist.listeners = hash["listeners"].to_i
50
+ artist.streamable = hash["streamable"] == "1"
51
+ artist.images = hash["image"]
52
+ end
53
+ end
54
+
55
+ end
56
+
57
+ end
@@ -0,0 +1,45 @@
1
+ module Firstfm
2
+
3
+ class Track
4
+
5
+ attr_accessor :name, :artist, :url, :streamable, :listeners, :images, :mbid, :rank
6
+
7
+ include HTTParty
8
+ base_uri 'ws.audioscrobbler.com'
9
+ format :xml
10
+
11
+ def self.search(track, page = 1, limit = 50)
12
+ response = get("/2.0/", {:query => {:method => 'tracks.search', :track => track, :page => page, :limit => limit, :api_key => Firstfm::CONFIG['api_key']}})
13
+ tracks_array = (response and response["lfm"] and response["lfm"]["results"] and response["lfm"]["results"]["trackmatches"] and response["lfm"]["results"]["trackmatches"]["track"]) || []
14
+ tracks = Track.init_from_array(tracks_array)
15
+ WillPaginate::Collection.create(page, limit) do |pager|
16
+ pager.replace tracks
17
+ pager.total_entries = response['lfm']['results']['opensearch:totalResults'].to_i
18
+ end
19
+ end
20
+
21
+ def self.init_from_array(array)
22
+ return [] unless array.is_a?(Array)
23
+ array.inject([]) do |arr, track|
24
+ arr << init_from_hash(track)
25
+ arr
26
+ end
27
+ end
28
+
29
+ def self.init_from_hash(hash)
30
+ return nil unless hash.is_a?(Hash)
31
+ Track.new.tap do |track|
32
+ track.rank = hash["rank"].to_i
33
+ track.name = hash["name"]
34
+ track.mbid = hash["mbid"]
35
+ track.url = hash["url"]
36
+ track.listeners = hash["listeners"].to_i
37
+ track.streamable = hash["streamable"] == "1"
38
+ track.images = hash["image"]
39
+ track.artist = hash["artist"].is_a?(Hash) ? Artist.init_from_hash(hash["artist"]) : Artist.new(:name => hash["artist"])
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ end
data/lib/firstfm.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'yaml'
2
2
  require 'httparty'
3
3
  require 'will_paginate'
4
+ require 'firstfm/track'
5
+ require 'firstfm/artist'
4
6
  require 'firstfm/event'
5
7
  require 'firstfm/location'
6
8
  require 'firstfm/venue'
@@ -0,0 +1,371 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <lfm status='ok'>
3
+ <results xmlns:opensearch='http://a9.com/-/spec/opensearch/1.1/' for='cher'>
4
+ <opensearch:Query searchTerms='cher' startPage='1' role='request' />
5
+ <opensearch:totalResults>424</opensearch:totalResults>
6
+ <opensearch:startIndex>0</opensearch:startIndex>
7
+ <opensearch:itemsPerPage>30</opensearch:itemsPerPage>
8
+ <artistmatches>
9
+ <artist>
10
+ <name>Cher</name>
11
+ <listeners>666642</listeners>
12
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
13
+ <url>http://www.last.fm/music/Cher</url>
14
+ <streamable>1</streamable>
15
+ <image size='small'>http://userserve-ak.last.fm/serve/34/62875209.png</image>
16
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/62875209.png</image>
17
+ <image size='large'>http://userserve-ak.last.fm/serve/126/62875209.png</image>
18
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/62875209.png</image>
19
+ <image size='mega'>http://userserve-ak.last.fm/serve/500/62875209/Cher.png</image>
20
+ </artist>
21
+ <artist>
22
+ <name>Sonny &amp; Cher</name>
23
+ <listeners>146938</listeners>
24
+ <mbid>3d6e4b6d-2700-458c-9722-9021965a8164</mbid>
25
+ <url>http://www.last.fm/music/Sonny%2B%2526%2BCher</url>
26
+ <streamable>1</streamable>
27
+ <image size='small'>http://userserve-ak.last.fm/serve/34/244080.jpg</image>
28
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/244080.jpg</image>
29
+ <image size='large'>http://userserve-ak.last.fm/serve/126/244080.jpg</image>
30
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/244080.jpg</image>
31
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/244080/Sonny++Cher.jpg</image>
32
+ </artist>
33
+ <artist>
34
+ <name>Cher Lloyd</name>
35
+ <listeners>4803</listeners>
36
+ <mbid></mbid>
37
+ <url>http://www.last.fm/music/Cher+Lloyd</url>
38
+ <streamable>0</streamable>
39
+ <image size='small'>http://userserve-ak.last.fm/serve/34/64921624.png</image>
40
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/64921624.png</image>
41
+ <image size='large'>http://userserve-ak.last.fm/serve/126/64921624.png</image>
42
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/64921624.png</image>
43
+ <image size='mega'>http://userserve-ak.last.fm/serve/500/64921624/Cher+Lloyd.png</image>
44
+ </artist>
45
+ <artist>
46
+ <name>Tina Turner, Elton John, Cher</name>
47
+ <listeners>3474</listeners>
48
+ <mbid></mbid>
49
+ <url>http://www.last.fm/music/Tina+Turner%2C+Elton+John%2C+Cher</url>
50
+ <streamable>0</streamable>
51
+ <image size='small'>http://userserve-ak.last.fm/serve/34/51873367.jpg</image>
52
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/51873367.jpg</image>
53
+ <image size='large'>http://userserve-ak.last.fm/serve/126/51873367.jpg</image>
54
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/51873367.jpg</image>
55
+ <image size='mega'>http://userserve-ak.last.fm/serve/500/51873367/Tina+Turner+Elton+John+Cher+divaslive99front.jpg</image>
56
+ </artist>
57
+ <artist>
58
+ <name>Meat Loaf &amp; Cher</name>
59
+ <listeners>2256</listeners>
60
+ <mbid></mbid>
61
+ <url>http://www.last.fm/music/Meat%2BLoaf%2B%2526%2BCher</url>
62
+ <streamable>0</streamable>
63
+ <image size='small'>http://userserve-ak.last.fm/serve/34/573414.jpg</image>
64
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/573414.jpg</image>
65
+ <image size='large'>http://userserve-ak.last.fm/serve/126/573414.jpg</image>
66
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/573414.jpg</image>
67
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/573414/Meat+Loaf++Cher.jpg</image>
68
+ </artist>
69
+ <artist>
70
+ <name>Peter Cetera &amp; Cher</name>
71
+ <listeners>1136</listeners>
72
+ <mbid></mbid>
73
+ <url>http://www.last.fm/music/Peter%2BCetera%2B%2526%2BCher</url>
74
+ <streamable>0</streamable>
75
+ <image size='small'>http://userserve-ak.last.fm/serve/34/21678855.jpg</image>
76
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/21678855.jpg</image>
77
+ <image size='large'>http://userserve-ak.last.fm/serve/126/21678855.jpg</image>
78
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/21678855.jpg</image>
79
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/21678855/Peter+Cetera++Cher+beztytuu.jpg</image>
80
+ </artist>
81
+ <artist>
82
+ <name>Cher --do you believe in life</name>
83
+ <listeners>1073</listeners>
84
+ <mbid></mbid>
85
+ <url>http://www.last.fm/music/Cher+--do+you+believe+in+life</url>
86
+ <streamable>0</streamable>
87
+ <image size='small'></image>
88
+ <image size='medium'></image>
89
+ <image size='large'></image>
90
+ <image size='extralarge'></image>
91
+ <image size='mega'></image>
92
+ </artist>
93
+ <artist>
94
+ <name>Cher w/ Beavis &amp; Butt-Head</name>
95
+ <listeners>662</listeners>
96
+ <mbid></mbid>
97
+ <url>http://www.last.fm/music/Cher%2Bw%252F%2BBeavis%2B%2526%2BButt-Head</url>
98
+ <streamable>0</streamable>
99
+ <image size='small'>http://userserve-ak.last.fm/serve/34/3033501.jpg</image>
100
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/3033501.jpg</image>
101
+ <image size='large'>http://userserve-ak.last.fm/serve/126/3033501.jpg</image>
102
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/3033501.jpg</image>
103
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/3033501/Cher+w+Beavis++ButtHead+1b.jpg</image>
104
+ </artist>
105
+ <artist>
106
+ <name>Cher &amp; Peter Cetra</name>
107
+ <listeners>616</listeners>
108
+ <mbid></mbid>
109
+ <url>http://www.last.fm/music/Cher%2B%2526%2BPeter%2BCetra</url>
110
+ <streamable>0</streamable>
111
+ <image size='small'></image>
112
+ <image size='medium'></image>
113
+ <image size='large'></image>
114
+ <image size='extralarge'></image>
115
+ <image size='mega'></image>
116
+ </artist>
117
+ <artist>
118
+ <name>DJ Earworm feat. Madonna, Cher, Whitney Houston</name>
119
+ <listeners>615</listeners>
120
+ <mbid></mbid>
121
+ <url>http://www.last.fm/music/DJ+Earworm+feat.+Madonna%2C+Cher%2C+Whitney+Houston</url>
122
+ <streamable>0</streamable>
123
+ <image size='small'>http://userserve-ak.last.fm/serve/34/58696065.png</image>
124
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/58696065.png</image>
125
+ <image size='large'>http://userserve-ak.last.fm/serve/126/58696065.png</image>
126
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/58696065.png</image>
127
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/58696065/DJ+Earworm+feat+Madonna+Cher+Whitney+Houston+lastfmkeepstatsclean.png</image>
128
+ </artist>
129
+ <artist>
130
+ <name>Cher/Peter Cetera</name>
131
+ <listeners>553</listeners>
132
+ <mbid></mbid>
133
+ <url>http://www.last.fm/music/Cher%252FPeter%2BCetera</url>
134
+ <streamable>0</streamable>
135
+ <image size='small'></image>
136
+ <image size='medium'></image>
137
+ <image size='large'></image>
138
+ <image size='extralarge'></image>
139
+ <image size='mega'></image>
140
+ </artist>
141
+ <artist>
142
+ <name>Cher, Chrissie Hynde &amp; Neneh Cherry</name>
143
+ <listeners>568</listeners>
144
+ <mbid></mbid>
145
+ <url>http://www.last.fm/music/Cher%252C%2BChrissie%2BHynde%2B%2526%2BNeneh%2BCherry</url>
146
+ <streamable>0</streamable>
147
+ <image size='small'>http://userserve-ak.last.fm/serve/34/32728887.jpg</image>
148
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/32728887.jpg</image>
149
+ <image size='large'>http://userserve-ak.last.fm/serve/126/32728887.jpg</image>
150
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/32728887.jpg</image>
151
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/32728887/Cher+Chrissie+Hynde++Neneh+Cherry+lovecanbuildabridge.jpg</image>
152
+ </artist>
153
+ <artist>
154
+ <name>Cher With Beavis And Butthead</name>
155
+ <listeners>500</listeners>
156
+ <mbid></mbid>
157
+ <url>http://www.last.fm/music/Cher+With+Beavis+And+Butthead</url>
158
+ <streamable>0</streamable>
159
+ <image size='small'>http://userserve-ak.last.fm/serve/34/560290.jpg</image>
160
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/560290.jpg</image>
161
+ <image size='large'>http://userserve-ak.last.fm/serve/126/560290.jpg</image>
162
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/560290.jpg</image>
163
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/560290/Cher+With+Beavis+And+Butthead.jpg</image>
164
+ </artist>
165
+ <artist>
166
+ <name>Cher With Beavis And Butt-head</name>
167
+ <listeners>514</listeners>
168
+ <mbid>b0bafb6e-16e3-4084-920e-6e081475838d</mbid>
169
+ <url>http://www.last.fm/music/Cher+With+Beavis+And+Butt-head</url>
170
+ <streamable>0</streamable>
171
+ <image size='small'>http://userserve-ak.last.fm/serve/34/35267195.jpg</image>
172
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/35267195.jpg</image>
173
+ <image size='large'>http://userserve-ak.last.fm/serve/126/35267195.jpg</image>
174
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/35267195.jpg</image>
175
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/35267195/Cher+With+Beavis+And+Butthead.jpg</image>
176
+ </artist>
177
+ <artist>
178
+ <name>Cher, Chrissie Hynde &amp; Neneh Cherry with Eric Clapton</name>
179
+ <listeners>486</listeners>
180
+ <mbid></mbid>
181
+ <url>http://www.last.fm/music/Cher%252C%2BChrissie%2BHynde%2B%2526%2BNeneh%2BCherry%2Bwith%2BEric%2BClapton</url>
182
+ <streamable>0</streamable>
183
+ <image size='small'>http://userserve-ak.last.fm/serve/34/29792815.jpg</image>
184
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/29792815.jpg</image>
185
+ <image size='large'>http://userserve-ak.last.fm/serve/126/29792815.jpg</image>
186
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/29792815.jpg</image>
187
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/29792815/Cher+Chrissie+Hynde++Neneh+Cherry+with+Eric+Clapto+Cher+Chrissie+Hynde++Neneh+Che.jpg</image>
188
+ </artist>
189
+ <artist>
190
+ <name>Madonna vs. Cher vs. Whitney Houston vs. George Kranz</name>
191
+ <listeners>417</listeners>
192
+ <mbid></mbid>
193
+ <url>http://www.last.fm/music/Madonna+vs.+Cher+vs.+Whitney+Houston+vs.+George+Kranz</url>
194
+ <streamable>0</streamable>
195
+ <image size='small'></image>
196
+ <image size='medium'></image>
197
+ <image size='large'></image>
198
+ <image size='extralarge'></image>
199
+ <image size='mega'></image>
200
+ </artist>
201
+ <artist>
202
+ <name>Cher, Chrissie Hynde and Neneh Cherry</name>
203
+ <listeners>334</listeners>
204
+ <mbid></mbid>
205
+ <url>http://www.last.fm/music/Cher%2C+Chrissie+Hynde+and+Neneh+Cherry</url>
206
+ <streamable>1</streamable>
207
+ <image size='small'>http://userserve-ak.last.fm/serve/34/39963631.png</image>
208
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/39963631.png</image>
209
+ <image size='large'>http://userserve-ak.last.fm/serve/126/39963631.png</image>
210
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/39963631.png</image>
211
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/39963631/Cher+Chrissie+Hynde+and+Neneh+Cherry+lcbab.png</image>
212
+ </artist>
213
+ <artist>
214
+ <name>Meat Loaf (with Cher) - Dead Ringer For Love</name>
215
+ <listeners>333</listeners>
216
+ <mbid></mbid>
217
+ <url>http://www.last.fm/music/Meat+Loaf+%28with+Cher%29+-+Dead+Ringer+For+Love</url>
218
+ <streamable>0</streamable>
219
+ <image size='small'></image>
220
+ <image size='medium'></image>
221
+ <image size='large'></image>
222
+ <image size='extralarge'></image>
223
+ <image size='mega'></image>
224
+ </artist>
225
+ <artist>
226
+ <name>Cher/Meatloaf</name>
227
+ <listeners>247</listeners>
228
+ <mbid></mbid>
229
+ <url>http://www.last.fm/music/Cher%252FMeatloaf</url>
230
+ <streamable>0</streamable>
231
+ <image size='small'></image>
232
+ <image size='medium'></image>
233
+ <image size='large'></image>
234
+ <image size='extralarge'></image>
235
+ <image size='mega'></image>
236
+ </artist>
237
+ <artist>
238
+ <name>Peter Cetera and Cher</name>
239
+ <listeners>225</listeners>
240
+ <mbid></mbid>
241
+ <url>http://www.last.fm/music/Peter+Cetera+and+Cher</url>
242
+ <streamable>0</streamable>
243
+ <image size='small'></image>
244
+ <image size='medium'></image>
245
+ <image size='large'></image>
246
+ <image size='extralarge'></image>
247
+ <image size='mega'></image>
248
+ </artist>
249
+ <artist>
250
+ <name>Chér</name>
251
+ <listeners>49</listeners>
252
+ <mbid></mbid>
253
+ <url>http://www.last.fm/music/Ch%C3%A9r</url>
254
+ <streamable>0</streamable>
255
+ <image size='small'></image>
256
+ <image size='medium'></image>
257
+ <image size='large'></image>
258
+ <image size='extralarge'></image>
259
+ <image size='mega'></image>
260
+ </artist>
261
+ <artist>
262
+ <name>Rosie &amp; Cher</name>
263
+ <listeners>156</listeners>
264
+ <mbid></mbid>
265
+ <url>http://www.last.fm/music/+noredirect/Rosie%2B%2526%2BCher</url>
266
+ <streamable>0</streamable>
267
+ <image size='small'></image>
268
+ <image size='medium'></image>
269
+ <image size='large'></image>
270
+ <image size='extralarge'></image>
271
+ <image size='mega'></image>
272
+ </artist>
273
+ <artist>
274
+ <name>Beavis &amp; Butt-Head/Cher</name>
275
+ <listeners>216</listeners>
276
+ <mbid></mbid>
277
+ <url>http://www.last.fm/music/Beavis%2B%2526%2BButt-Head%252FCher</url>
278
+ <streamable>0</streamable>
279
+ <image size='small'></image>
280
+ <image size='medium'></image>
281
+ <image size='large'></image>
282
+ <image size='extralarge'></image>
283
+ <image size='mega'></image>
284
+ </artist>
285
+ <artist>
286
+ <name>Cher vs. Snoop Dogg</name>
287
+ <listeners>179</listeners>
288
+ <mbid></mbid>
289
+ <url>http://www.last.fm/music/Cher+vs.+Snoop+Dogg</url>
290
+ <streamable>0</streamable>
291
+ <image size='small'></image>
292
+ <image size='medium'></image>
293
+ <image size='large'></image>
294
+ <image size='extralarge'></image>
295
+ <image size='mega'></image>
296
+ </artist>
297
+ <artist>
298
+ <name>Cher with Beavis &amp; Butthead</name>
299
+ <listeners>176</listeners>
300
+ <mbid></mbid>
301
+ <url>http://www.last.fm/music/Cher%2Bwith%2BBeavis%2B%2526%2BButthead</url>
302
+ <streamable>0</streamable>
303
+ <image size='small'>http://userserve-ak.last.fm/serve/34/4227292.jpg</image>
304
+ <image size='medium'>http://userserve-ak.last.fm/serve/64/4227292.jpg</image>
305
+ <image size='large'>http://userserve-ak.last.fm/serve/126/4227292.jpg</image>
306
+ <image size='extralarge'>http://userserve-ak.last.fm/serve/252/4227292.jpg</image>
307
+ <image size='mega'>http://userserve-ak.last.fm/serve/_/4227292/Cher+with+Beavis++Butthead+Video+screenshot.jpg</image>
308
+ </artist>
309
+ <artist>
310
+ <name>cher.</name>
311
+ <listeners>14</listeners>
312
+ <mbid></mbid>
313
+ <url>http://www.last.fm/music/cher.</url>
314
+ <streamable>0</streamable>
315
+ <image size='small'></image>
316
+ <image size='medium'></image>
317
+ <image size='large'></image>
318
+ <image size='extralarge'></image>
319
+ <image size='mega'></image>
320
+ </artist>
321
+ <artist>
322
+ <name>Cher-</name>
323
+ <listeners>12</listeners>
324
+ <mbid></mbid>
325
+ <url>http://www.last.fm/music/Cher-</url>
326
+ <streamable>0</streamable>
327
+ <image size='small'></image>
328
+ <image size='medium'></image>
329
+ <image size='large'></image>
330
+ <image size='extralarge'></image>
331
+ <image size='mega'></image>
332
+ </artist>
333
+ <artist>
334
+ <name>´Cher</name>
335
+ <listeners>9</listeners>
336
+ <mbid></mbid>
337
+ <url>http://www.last.fm/music/%C2%B4Cher</url>
338
+ <streamable>0</streamable>
339
+ <image size='small'></image>
340
+ <image size='medium'></image>
341
+ <image size='large'></image>
342
+ <image size='extralarge'></image>
343
+ <image size='mega'></image>
344
+ </artist>
345
+ <artist>
346
+ <name>Meat Loaf (with Cher) - Dead..</name>
347
+ <listeners>189</listeners>
348
+ <mbid></mbid>
349
+ <url>http://www.last.fm/music/Meat+Loaf+%28with+Cher%29+-+Dead..</url>
350
+ <streamable>0</streamable>
351
+ <image size='small'></image>
352
+ <image size='medium'></image>
353
+ <image size='large'></image>
354
+ <image size='extralarge'></image>
355
+ <image size='mega'></image>
356
+ </artist>
357
+ <artist>
358
+ <name>Cher &amp; Rosie</name>
359
+ <listeners>128</listeners>
360
+ <mbid></mbid>
361
+ <url>http://www.last.fm/music/Cher%2B%2526%2BRosie</url>
362
+ <streamable>0</streamable>
363
+ <image size='small'></image>
364
+ <image size='medium'></image>
365
+ <image size='large'></image>
366
+ <image size='extralarge'></image>
367
+ <image size='mega'></image>
368
+ </artist>
369
+ </artistmatches>
370
+ </results>
371
+ </lfm>