lastfm 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/README.rdoc +24 -11
  2. data/VERSION +1 -1
  3. data/lib/lastfm.rb +25 -15
  4. data/lib/lastfm/method_category/artist.rb +9 -0
  5. data/lib/lastfm/method_category/event.rb +9 -0
  6. data/lib/lastfm/method_category/tag.rb +9 -0
  7. data/lib/lastfm/method_category/user.rb +34 -17
  8. data/spec/fixtures/album_get_info.xml +168 -157
  9. data/spec/fixtures/artist_get_events.xml +13 -13
  10. data/spec/fixtures/artist_get_info.xml +93 -93
  11. data/spec/fixtures/artist_get_similar.xml +12 -0
  12. data/spec/fixtures/artist_get_tags.xml +13 -0
  13. data/spec/fixtures/event_get_info.xml +39 -0
  14. data/spec/fixtures/geo_get_events.xml +4 -4
  15. data/spec/fixtures/library_get_artists.xml +1 -0
  16. data/spec/fixtures/library_get_tracks.xml +15 -14
  17. data/spec/fixtures/ng.xml +2 -1
  18. data/spec/fixtures/ok.xml +87 -102
  19. data/spec/fixtures/tag_get_top_artists.xml +60 -0
  20. data/spec/fixtures/track_get_correction.xml +2 -1
  21. data/spec/fixtures/track_get_info.xml +47 -53
  22. data/spec/fixtures/track_get_info_force_array.xml +28 -31
  23. data/spec/fixtures/track_get_similar.xml +75 -5078
  24. data/spec/fixtures/track_get_tags.xml +10 -10
  25. data/spec/fixtures/track_get_top_fans.xml +23 -26
  26. data/spec/fixtures/track_get_top_tags.xml +13 -13
  27. data/spec/fixtures/track_search.xml +31 -33
  28. data/spec/fixtures/user_get_friends.xml +2 -1
  29. data/spec/fixtures/user_get_info.xml +2 -1
  30. data/spec/fixtures/user_get_loved_tracks.xml +23 -22
  31. data/spec/fixtures/user_get_neighbours.xml +54 -502
  32. data/spec/fixtures/user_get_personal_tags.xml +29 -0
  33. data/spec/fixtures/user_get_personal_tags_albums.xml +21 -0
  34. data/spec/fixtures/user_get_personal_tags_artists.xml +62 -0
  35. data/spec/fixtures/user_get_personal_tags_tracks.xml +87 -0
  36. data/spec/fixtures/user_get_recent_tracks.xml +2 -1
  37. data/spec/fixtures/user_get_top_albums.xml +22 -22
  38. data/spec/fixtures/user_get_top_artists.xml +22 -22
  39. data/spec/fixtures/user_get_top_tags.xml +30 -0
  40. data/spec/fixtures/user_get_top_tracks.xml +24 -23
  41. data/spec/lastfm_spec.rb +33 -516
  42. data/spec/method_specs/album_spec.rb +30 -0
  43. data/spec/method_specs/artist_spec.rb +79 -0
  44. data/spec/method_specs/event_spec.rb +17 -0
  45. data/spec/method_specs/geo_spec.rb +33 -0
  46. data/spec/method_specs/library_spec.rb +37 -0
  47. data/spec/method_specs/tag_spec.rb +25 -0
  48. data/spec/method_specs/track_spec.rb +224 -0
  49. data/spec/method_specs/user_spec.rb +214 -0
  50. data/spec/response_spec.rb +4 -4
  51. data/spec/spec_helper.rb +15 -0
  52. data/spec/util_spec.rb +4 -4
  53. metadata +34 -15
data/README.rdoc CHANGED
@@ -21,12 +21,31 @@ A Ruby interface for Last.fm Web Services v2.0
21
21
 
22
22
  It supports methods which require {authentication}[http://www.last.fm/api/authentication].
23
23
 
24
+ === Album
25
+
26
+ * {album.getInfo}[http://www.last.fm/api/show?service=290]
27
+
28
+ === Artist
29
+
30
+ * {artist.getEvents}[http://www.lastfm.jp/api/show?service=117]
31
+ * {artist.getInfo}[http://www.last.fm/api/show?service=267]
32
+ * {artist.getSimilar}[http://www.last.fm/api/show?service=267]
33
+ * {artist.getTags}[http://www.last.fm/api/show?service=267]
34
+
24
35
  === Auth
25
36
 
26
37
  * {auth.getMobileSession}[http://www.lastfm.jp/api/show?service=266]
27
38
  * {auth.getToken}[http://www.lastfm.jp/api/show?service=265]
28
39
  * {auth.getSession}[http://www.lastfm.jp/api/show?service=125]
29
40
 
41
+ === Event
42
+
43
+ * {event.getInfo}[http://www.lastfm.jp/api/show/event.getInfo]
44
+
45
+ === Tag
46
+
47
+ * {tag.getTopArtists}[http://www.lastfm.jp/api/show/tag.getTopArtists]
48
+
30
49
  === Track
31
50
 
32
51
  * {track.addTags}[http://www.lastfm.jp/api/show?service=304]
@@ -44,25 +63,18 @@ It supports methods which require {authentication}[http://www.last.fm/api/authen
44
63
  * {track.share}[http://www.lastfm.jp/api/show?service=305]
45
64
  * {track.updateNowPlaying}[http://www.lastfm.jp/api/show?service=454]
46
65
 
47
- === Album
48
-
49
- * {album.getInfo}[http://www.last.fm/api/show?service=290]
50
-
51
- === Artist
52
-
53
- * {artist.getEvents}[http://www.lastfm.jp/api/show?service=117]
54
- * {artist.getInfo}[http://www.last.fm/api/show?service=267]
55
-
56
66
  === User
57
67
 
58
68
  * {user.getFriends}[http://www.lastfm.jp/api/show?service=263]
59
69
  * {user.getInfo}[http://www.lastfm.jp/api/show?service=344]
60
70
  * {user.getLovedTracks}[http://www.lastfm.jp/api/show/user.getLovedTracks]
61
71
  * {user.getNeighbours}[http://www.lastfm.jp/api/show?service=264]
72
+ * {user.getPersonalTags}[http://www.lastfm.jp/api/show/user.getPersonalTags]
73
+ * {user.getRecentTracks}[http://www.lastfm.jp/api/show?service=278]
62
74
  * {user.getTopArtists}[http://www.lastfm.jp/api/show/user.getTopArtists]
63
- * {user.getTopAlbuns}[http://www.lastfm.jp/api/show/user.getTopAlbums]
75
+ * {user.getTopAlbums}[http://www.lastfm.jp/api/show/user.getTopAlbums]
76
+ * {user.getTopTags}[http://www.lastfm.jp/api/show/user.getTopTags]
64
77
  * {user.getTopTracks}[http://www.lastfm.jp/api/show/user.getTopTracks]
65
- * {user.getRecentTracks}[http://www.lastfm.jp/api/show?service=278]
66
78
 
67
79
  === Geo
68
80
 
@@ -101,6 +113,7 @@ It supports methods which require {authentication}[http://www.last.fm/api/authen
101
113
  * {Kyle Fleming}[https://github.com/Garthex]
102
114
  * {Lucas}[https://github.com/lfzawacki]
103
115
  * {Johan Oskarsson}[https://github.com/johanoskarsson]
116
+ * {Paul Miller}[https://github.com/paulmillr]
104
117
 
105
118
  == Note on Patches/Pull Requests
106
119
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.0
1
+ 1.4.0
data/lib/lastfm.rb CHANGED
@@ -6,13 +6,15 @@ require 'active_support/core_ext/string/inflections'
6
6
  require 'lastfm/util'
7
7
  require 'lastfm/response'
8
8
  require 'lastfm/method_category/base'
9
- require 'lastfm/method_category/auth'
10
- require 'lastfm/method_category/track'
11
- require 'lastfm/method_category/artist'
12
9
  require 'lastfm/method_category/album'
13
- require 'lastfm/method_category/user'
10
+ require 'lastfm/method_category/artist'
11
+ require 'lastfm/method_category/auth'
12
+ require 'lastfm/method_category/event'
14
13
  require 'lastfm/method_category/geo'
15
14
  require 'lastfm/method_category/library'
15
+ require 'lastfm/method_category/tag'
16
+ require 'lastfm/method_category/track'
17
+ require 'lastfm/method_category/user'
16
18
 
17
19
  class Lastfm
18
20
  API_ROOT = 'http://ws.audioscrobbler.com/2.0'
@@ -37,24 +39,20 @@ class Lastfm
37
39
  @api_secret = api_secret
38
40
  end
39
41
 
40
- def auth
41
- MethodCategory::Auth.new(self)
42
- end
43
-
44
- def track
45
- MethodCategory::Track.new(self)
42
+ def album
43
+ MethodCategory::Album.new(self)
46
44
  end
47
45
 
48
46
  def artist
49
47
  MethodCategory::Artist.new(self)
50
48
  end
51
-
52
- def album
53
- MethodCategory::Album.new(self)
49
+
50
+ def auth
51
+ MethodCategory::Auth.new(self)
54
52
  end
55
53
 
56
- def user
57
- MethodCategory::User.new(self)
54
+ def event
55
+ MethodCategory::Event.new(self)
58
56
  end
59
57
 
60
58
  def geo
@@ -65,6 +63,18 @@ class Lastfm
65
63
  MethodCategory::Library.new(self)
66
64
  end
67
65
 
66
+ def tag
67
+ MethodCategory::Tag.new(self)
68
+ end
69
+
70
+ def track
71
+ MethodCategory::Track.new(self)
72
+ end
73
+
74
+ def user
75
+ MethodCategory::User.new(self)
76
+ end
77
+
68
78
  def request(method, params = {}, http_method = :get, with_signature = false, with_session = false)
69
79
  params[:method] = method
70
80
  params[:api_key] = @api_key
@@ -4,9 +4,18 @@ class Lastfm
4
4
  regular_method :get_info, [:artist], [] do |response|
5
5
  response.xml['artist']
6
6
  end
7
+
7
8
  regular_method :get_events, [:artist], [] do |response|
8
9
  response.xml['events']['event']
9
10
  end
11
+
12
+ regular_method :get_similar, [:artist], [] do |response|
13
+ response.xml['similarartists']['artist']
14
+ end
15
+
16
+ regular_method :get_tags, [:artist], [[:user, nil], [:mbid, nil], [:autocorrect, nil]] do |response|
17
+ response.xml['tags']['tag']
18
+ end
10
19
  end
11
20
  end
12
21
  end
@@ -0,0 +1,9 @@
1
+ class Lastfm
2
+ module MethodCategory
3
+ class Event < Base
4
+ regular_method :get_info, [:event], [] do |response|
5
+ response.xml['event'].first
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class Lastfm
2
+ module MethodCategory
3
+ class Tag < Base
4
+ regular_method :get_top_artists, [:tag], [[:limit, nil], [:page, nil]] do |response|
5
+ response.xml['topartists']['artist']
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,40 +1,57 @@
1
1
  class Lastfm
2
2
  module MethodCategory
3
3
  class User < Base
4
- regular_method :get_info, [:user], [] do |response|
5
- response.xml['user'][0]
6
- end
7
-
8
- regular_method :get_top_albums, [:user], [[:period, nil], [:limit, nil], [:page, nil]] do |response|
9
- response.xml['topalbums']['album']
10
- end
11
-
12
- regular_method :get_top_artists, [:user], [[:period, nil], [:limit, nil], [:page, nil]] do |response|
13
- response.xml['topartists']['artist']
4
+ regular_method :get_friends, [:user], [[:recenttracks, nil], [:limit, nil], [:page, nil]] do |response|
5
+ response.xml['friends']['user']
14
6
  end
15
7
 
16
- regular_method :get_top_tracks, [:user], [[:period, nil], [:limit, nil], [:page, nil]] do |response|
17
- response.xml['toptracks']['track']
8
+ regular_method :get_info, [:user], [] do |response|
9
+ response.xml['user'][0]
18
10
  end
19
11
 
20
12
  regular_method :get_loved_tracks, [:user], [[:period, nil], [:limit, nil], [:page, nil]] do |response|
21
13
  response.xml['lovedtracks']['track']
22
14
  end
23
15
 
24
- regular_method :get_friends, [:user], [[:recenttracks, nil], [:limit, nil], [:page, nil]] do |response|
25
- response.xml['friends']['user']
26
- end
27
-
28
16
  regular_method :get_neighbours, [:user], [[:recenttracks, nil], [:limit, nil], [:page, nil]] do |response|
29
17
  neighbours = response.xml['neighbours']['user']
30
- #ignore first "user" as this is an attribute, not an object
18
+ # Ignore first "user" as this is an attribute, not an object.
31
19
  neighbours.delete_at(0) if neighbours[0].is_a? String
32
20
  neighbours
33
21
  end
34
22
 
23
+ regular_method :get_personal_tags, [:user, :tag], [[:taggingtype, 'artist'], [:limit, nil], [:page, nil]] do |response|
24
+ taggings = response.xml['taggings']
25
+ result = if taggings['artists']
26
+ taggings['artists']['artist']
27
+ elsif taggings['albums']
28
+ taggings['albums']['album']
29
+ elsif taggings['tracks']
30
+ taggings['tracks']['track']
31
+ end
32
+
33
+ Lastfm::Util::force_array(result)
34
+ end
35
+
35
36
  regular_method :get_recent_tracks, [:user], [[:limit, nil], [:page, nil], [:to, nil], [:from, nil]] do |response|
36
37
  response.xml['recenttracks']['track']
37
38
  end
39
+
40
+ regular_method :get_top_albums, [:user], [[:period, nil], [:limit, nil], [:page, nil]] do |response|
41
+ response.xml['topalbums']['album']
42
+ end
43
+
44
+ regular_method :get_top_artists, [:user], [[:period, nil], [:limit, nil], [:page, nil]] do |response|
45
+ response.xml['topartists']['artist']
46
+ end
47
+
48
+ regular_method :get_top_tags, [:user], [[:limit, nil]] do |response|
49
+ response.xml['toptags']['tag']
50
+ end
51
+
52
+ regular_method :get_top_tracks, [:user], [[:period, nil], [:limit, nil], [:page, nil]] do |response|
53
+ response.xml['toptracks']['track']
54
+ end
38
55
  end
39
56
  end
40
57
  end
@@ -1,157 +1,167 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <lfm status="ok">
3
- <album>
4
- <name>Believe</name>
5
- <artist>Cher</artist>
6
- <id>2026126</id>
7
- <mbid>61bf0388-b8a9-48f4-81d1-7eb02706dfb0</mbid>
8
- <url>http://www.last.fm/music/Cher/Believe</url>
9
- <releasedate> 6 Apr 1999, 00:00</releasedate>
10
- <image size="small">http://userserve-ak.last.fm/serve/34s/42806845.png</image>
11
- <image size="medium">http://userserve-ak.last.fm/serve/64s/42806845.png</image>
12
- <image size="large">http://userserve-ak.last.fm/serve/174s/42806845.png</image>
13
- <image size="extralarge">http://userserve-ak.last.fm/serve/300x300/42806845.png</image>
14
- <image size="mega">http://userserve-ak.last.fm/serve/_/42806845/Believe++600++600+PNG.png</image>
15
- <listeners>179749</listeners>
16
- <playcount>838056</playcount>
17
- <tracks>
18
- <track rank="1">
19
- <name>Believe</name>
20
- <duration>239</duration>
21
- <mbid></mbid>
22
- <url>http://www.last.fm/music/Cher/_/Believe</url>
23
- <streamable fulltrack="0">1</streamable>
24
- <artist>
25
- <name>Cher</name>
26
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
27
- <url>http://www.last.fm/music/Cher</url>
28
- </artist>
29
- </track> <track rank="2">
30
- <name>The Power</name>
31
- <duration>235</duration>
32
- <mbid></mbid>
33
- <url>http://www.last.fm/music/Cher/_/The+Power</url>
34
- <streamable fulltrack="0">0</streamable>
35
- <artist>
36
- <name>Cher</name>
37
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
38
- <url>http://www.last.fm/music/Cher</url>
39
- </artist>
40
- </track> <track rank="3">
41
- <name>Runaway</name>
42
- <duration>285</duration>
43
- <mbid></mbid>
44
- <url>http://www.last.fm/music/Cher/_/Runaway</url>
45
- <streamable fulltrack="0">0</streamable>
46
- <artist>
47
- <name>Cher</name>
48
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
49
- <url>http://www.last.fm/music/Cher</url>
50
- </artist>
51
- </track> <track rank="4">
52
- <name>All Or Nothing</name>
53
- <duration>237</duration>
54
- <mbid></mbid>
55
- <url>http://www.last.fm/music/Cher/_/All+Or+Nothing</url>
56
- <streamable fulltrack="0">1</streamable>
57
- <artist>
58
- <name>Cher</name>
59
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
60
- <url>http://www.last.fm/music/Cher</url>
61
- </artist>
62
- </track> <track rank="5">
63
- <name>Strong Enough</name>
64
- <duration>223</duration>
65
- <mbid></mbid>
66
- <url>http://www.last.fm/music/Cher/_/Strong+Enough</url>
67
- <streamable fulltrack="0">1</streamable>
68
- <artist>
69
- <name>Cher</name>
70
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
71
- <url>http://www.last.fm/music/Cher</url>
72
- </artist>
73
- </track> <track rank="6">
74
- <name>Dov'è l'amore</name>
75
- <duration>257</duration>
76
- <mbid></mbid>
77
- <url>http://www.last.fm/music/Cher/_/Dov%27%C3%A8+l%27amore</url>
78
- <streamable fulltrack="0">0</streamable>
79
- <artist>
80
- <name>Cher</name>
81
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
82
- <url>http://www.last.fm/music/Cher</url>
83
- </artist>
84
- </track> <track rank="7">
85
- <name>Takin' Back My Heart</name>
86
- <duration>271</duration>
87
- <mbid></mbid>
88
- <url>http://www.last.fm/music/Cher/_/Takin%27+Back+My+Heart</url>
89
- <streamable fulltrack="0">0</streamable>
90
- <artist>
91
- <name>Cher</name>
92
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
93
- <url>http://www.last.fm/music/Cher</url>
94
- </artist>
95
- </track> <track rank="8">
96
- <name>Taxi Taxi</name>
97
- <duration>302</duration>
98
- <mbid></mbid>
99
- <url>http://www.last.fm/music/Cher/_/Taxi+Taxi</url>
100
- <streamable fulltrack="0">0</streamable>
101
- <artist>
102
- <name>Cher</name>
103
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
104
- <url>http://www.last.fm/music/Cher</url>
105
- </artist>
106
- </track> <track rank="9">
107
- <name>Love Is the Groove</name>
108
- <duration>270</duration>
109
- <mbid></mbid>
110
- <url>http://www.last.fm/music/Cher/_/Love+Is+the+Groove</url>
111
- <streamable fulltrack="0">0</streamable>
112
- <artist>
113
- <name>Cher</name>
114
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
115
- <url>http://www.last.fm/music/Cher</url>
116
- </artist>
117
- </track> <track rank="10">
118
- <name>We All Sleep Alone</name>
119
- <duration>233</duration>
120
- <mbid></mbid>
121
- <url>http://www.last.fm/music/Cher/_/We+All+Sleep+Alone</url>
122
- <streamable fulltrack="0">1</streamable>
123
- <artist>
124
- <name>Cher</name>
125
- <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
126
- <url>http://www.last.fm/music/Cher</url>
127
- </artist>
128
- </track> </tracks>
129
- <toptags>
130
- <tag>
131
- <name>pop</name>
132
- <url>http://www.last.fm/tag/pop</url>
133
- </tag>
134
- <tag>
135
- <name>90s</name>
136
- <url>http://www.last.fm/tag/90s</url>
137
- </tag>
138
- <tag>
139
- <name>dance</name>
140
- <url>http://www.last.fm/tag/dance</url>
141
- </tag>
142
- <tag>
143
- <name>1998</name>
144
- <url>http://www.last.fm/tag/1998</url>
145
- </tag>
146
- <tag>
147
- <name>albums i own</name>
148
- <url>http://www.last.fm/tag/albums%20i%20own</url>
149
- </tag>
150
- </toptags>
151
- <wiki>
152
- <published>Sat, 6 Mar 2010 16:48:03 +0000</published>
153
- <summary><![CDATA[Believe is the twenty-third studio album by American singer-actress Cher, released on November 10, 1998 by Warner Bros. Records. The RIAA certified it Quadruple Platinum on December 23, 1999, recognizing four million shipments in the United States; Worldwide, the album has sold more than 20 million copies, making it the biggest-selling album of her career. In 1999 the album received three Grammy Awards nominations including &quot;Record of the Year&quot;, &quot;Best Pop Album&quot; and winning &quot;Best Dance Recording&quot; for the single &quot;Believe&quot;. ]]></summary>
154
- <content><![CDATA[Believe is the twenty-third studio album by American singer-actress Cher, released on November 10, 1998 by Warner Bros. Records. The RIAA certified it Quadruple Platinum on December 23, 1999, recognizing four million shipments in the United States; Worldwide, the album has sold more than 20 million copies, making it the biggest-selling album of her career. In 1999 the album received three Grammy Awards nominations including &quot;Record of the Year&quot;, &quot;Best Pop Album&quot; and winning &quot;Best Dance Recording&quot; for the single &quot;Believe&quot;.
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <lfm status="ok">
3
+ <album>
4
+ <name>Believe</name>
5
+ <artist>Cher</artist>
6
+ <id>2026126</id>
7
+ <mbid>61bf0388-b8a9-48f4-81d1-7eb02706dfb0</mbid>
8
+ <url>http://www.last.fm/music/Cher/Believe</url>
9
+ <releasedate> 6 Apr 1999, 00:00</releasedate>
10
+ <image size="small">http://userserve-ak.last.fm/serve/34s/42806845.png</image>
11
+ <image size="medium">http://userserve-ak.last.fm/serve/64s/42806845.png</image>
12
+ <image size="large">http://userserve-ak.last.fm/serve/174s/42806845.png</image>
13
+ <image size="extralarge">http://userserve-ak.last.fm/serve/300x300/42806845.png</image>
14
+ <image size="mega">http://userserve-ak.last.fm/serve/_/42806845/Believe++600++600+PNG.png</image>
15
+ <listeners>179749</listeners>
16
+ <playcount>838056</playcount>
17
+ <tracks>
18
+ <track rank="1">
19
+ <name>Believe</name>
20
+ <duration>239</duration>
21
+ <mbid/>
22
+ <url>http://www.last.fm/music/Cher/_/Believe</url>
23
+ <streamable fulltrack="0">1</streamable>
24
+ <artist>
25
+ <name>Cher</name>
26
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
27
+ <url>http://www.last.fm/music/Cher</url>
28
+ </artist>
29
+ </track>
30
+ <track rank="2">
31
+ <name>The Power</name>
32
+ <duration>235</duration>
33
+ <mbid/>
34
+ <url>http://www.last.fm/music/Cher/_/The+Power</url>
35
+ <streamable fulltrack="0">0</streamable>
36
+ <artist>
37
+ <name>Cher</name>
38
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
39
+ <url>http://www.last.fm/music/Cher</url>
40
+ </artist>
41
+ </track>
42
+ <track rank="3">
43
+ <name>Runaway</name>
44
+ <duration>285</duration>
45
+ <mbid/>
46
+ <url>http://www.last.fm/music/Cher/_/Runaway</url>
47
+ <streamable fulltrack="0">0</streamable>
48
+ <artist>
49
+ <name>Cher</name>
50
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
51
+ <url>http://www.last.fm/music/Cher</url>
52
+ </artist>
53
+ </track>
54
+ <track rank="4">
55
+ <name>All Or Nothing</name>
56
+ <duration>237</duration>
57
+ <mbid/>
58
+ <url>http://www.last.fm/music/Cher/_/All+Or+Nothing</url>
59
+ <streamable fulltrack="0">1</streamable>
60
+ <artist>
61
+ <name>Cher</name>
62
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
63
+ <url>http://www.last.fm/music/Cher</url>
64
+ </artist>
65
+ </track>
66
+ <track rank="5">
67
+ <name>Strong Enough</name>
68
+ <duration>223</duration>
69
+ <mbid/>
70
+ <url>http://www.last.fm/music/Cher/_/Strong+Enough</url>
71
+ <streamable fulltrack="0">1</streamable>
72
+ <artist>
73
+ <name>Cher</name>
74
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
75
+ <url>http://www.last.fm/music/Cher</url>
76
+ </artist>
77
+ </track>
78
+ <track rank="6">
79
+ <name>Dov'è l'amore</name>
80
+ <duration>257</duration>
81
+ <mbid/>
82
+ <url>http://www.last.fm/music/Cher/_/Dov%27%C3%A8+l%27amore</url>
83
+ <streamable fulltrack="0">0</streamable>
84
+ <artist>
85
+ <name>Cher</name>
86
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
87
+ <url>http://www.last.fm/music/Cher</url>
88
+ </artist>
89
+ </track>
90
+ <track rank="7">
91
+ <name>Takin' Back My Heart</name>
92
+ <duration>271</duration>
93
+ <mbid/>
94
+ <url>http://www.last.fm/music/Cher/_/Takin%27+Back+My+Heart</url>
95
+ <streamable fulltrack="0">0</streamable>
96
+ <artist>
97
+ <name>Cher</name>
98
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
99
+ <url>http://www.last.fm/music/Cher</url>
100
+ </artist>
101
+ </track>
102
+ <track rank="8">
103
+ <name>Taxi Taxi</name>
104
+ <duration>302</duration>
105
+ <mbid/>
106
+ <url>http://www.last.fm/music/Cher/_/Taxi+Taxi</url>
107
+ <streamable fulltrack="0">0</streamable>
108
+ <artist>
109
+ <name>Cher</name>
110
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
111
+ <url>http://www.last.fm/music/Cher</url>
112
+ </artist>
113
+ </track>
114
+ <track rank="9">
115
+ <name>Love Is the Groove</name>
116
+ <duration>270</duration>
117
+ <mbid/>
118
+ <url>http://www.last.fm/music/Cher/_/Love+Is+the+Groove</url>
119
+ <streamable fulltrack="0">0</streamable>
120
+ <artist>
121
+ <name>Cher</name>
122
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
123
+ <url>http://www.last.fm/music/Cher</url>
124
+ </artist>
125
+ </track>
126
+ <track rank="10">
127
+ <name>We All Sleep Alone</name>
128
+ <duration>233</duration>
129
+ <mbid/>
130
+ <url>http://www.last.fm/music/Cher/_/We+All+Sleep+Alone</url>
131
+ <streamable fulltrack="0">1</streamable>
132
+ <artist>
133
+ <name>Cher</name>
134
+ <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
135
+ <url>http://www.last.fm/music/Cher</url>
136
+ </artist>
137
+ </track>
138
+ </tracks>
139
+ <toptags>
140
+ <tag>
141
+ <name>pop</name>
142
+ <url>http://www.last.fm/tag/pop</url>
143
+ </tag>
144
+ <tag>
145
+ <name>90s</name>
146
+ <url>http://www.last.fm/tag/90s</url>
147
+ </tag>
148
+ <tag>
149
+ <name>dance</name>
150
+ <url>http://www.last.fm/tag/dance</url>
151
+ </tag>
152
+ <tag>
153
+ <name>1998</name>
154
+ <url>http://www.last.fm/tag/1998</url>
155
+ </tag>
156
+ <tag>
157
+ <name>albums i own</name>
158
+ <url>http://www.last.fm/tag/albums%20i%20own</url>
159
+ </tag>
160
+ </toptags>
161
+ <wiki>
162
+ <published>Sat, 6 Mar 2010 16:48:03 +0000</published>
163
+ <summary><![CDATA[Believe is the twenty-third studio album by American singer-actress Cher, released on November 10, 1998 by Warner Bros. Records. The RIAA certified it Quadruple Platinum on December 23, 1999, recognizing four million shipments in the United States; Worldwide, the album has sold more than 20 million copies, making it the biggest-selling album of her career. In 1999 the album received three Grammy Awards nominations including &quot;Record of the Year&quot;, &quot;Best Pop Album&quot; and winning &quot;Best Dance Recording&quot; for the single &quot;Believe&quot;. ]]></summary>
164
+ <content><![CDATA[Believe is the twenty-third studio album by American singer-actress Cher, released on November 10, 1998 by Warner Bros. Records. The RIAA certified it Quadruple Platinum on December 23, 1999, recognizing four million shipments in the United States; Worldwide, the album has sold more than 20 million copies, making it the biggest-selling album of her career. In 1999 the album received three Grammy Awards nominations including &quot;Record of the Year&quot;, &quot;Best Pop Album&quot; and winning &quot;Best Dance Recording&quot; for the single &quot;Believe&quot;.
155
165
 
156
166
  It was released by Warner Bros. Records at the end of 1998. The album was executive produced by Rob Dickens. Upon its debut, critical reception was generally positive. Believe became Cher's most commercially-successful release, reached number one and Top 10 all over the world. In the United States, the album was released on November 10, 1998, and reached number four on the Billboard 200 chart, where it was certified four times platinum.
157
167
 
@@ -169,6 +179,7 @@
169
179
  &quot;All or Nothing&quot;
170
180
  &quot;Dov'è L'Amore&quot;
171
181
 
172
- User-contributed text is available under the Creative Commons By-SA License and may also be available under the GNU FDL.]]></content>
173
- </wiki>
174
- </album></lfm>
182
+ User-contributed text is available under the Creative Commons By-SA License and may also be available under the GNU FDL.]]></content>
183
+ </wiki>
184
+ </album>
185
+ </lfm>