firstfm 0.0.2 → 0.1.0

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.
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>