lastfm 1.26.0 → 1.27.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -2
- data/.travis.yml +3 -0
- data/README.md +14 -5
- data/lastfm.gemspec +3 -4
- data/lib/lastfm.rb +0 -1
- data/lib/lastfm/method_category/album.rb +68 -1
- data/lib/lastfm/method_category/artist.rb +7 -0
- data/lib/lastfm/method_category/base.rb +1 -1
- data/lib/lastfm/method_category/track.rb +5 -2
- data/lib/lastfm/method_category/user.rb +2 -2
- data/lib/lastfm/response.rb +19 -1
- data/lib/lastfm/util.rb +6 -11
- data/spec/fixtures/album_get_buylinks.xml +31 -0
- data/spec/fixtures/album_get_info_without_release_date.xml +184 -0
- data/spec/fixtures/album_get_shouts.xml +15 -0
- data/spec/fixtures/album_get_tags.xml +13 -0
- data/spec/fixtures/album_get_top_tags.xml +15 -0
- data/spec/fixtures/album_search.xml +35 -0
- data/spec/fixtures/album_search_no_match.xml +10 -0
- data/spec/fixtures/album_search_single_album.xml +23 -0
- data/spec/fixtures/artist_get_correction.xml +12 -0
- data/spec/fixtures/artist_search.xml +1 -1
- data/spec/fixtures/tag_search.xml +1 -1
- data/spec/fixtures/track_search_no_match.xml +11 -0
- data/spec/fixtures/track_search_single_track.xml +1 -1
- data/spec/fixtures/user_get_loved_tracks_no_tracks.xml +5 -0
- data/spec/fixtures/user_get_loved_tracks_single_track.xml +17 -0
- data/spec/lastfm_spec.rb +34 -34
- data/spec/method_category_spec.rb +1 -1
- data/spec/method_specs/album_spec.rb +255 -25
- data/spec/method_specs/artist_spec.rb +82 -70
- data/spec/method_specs/chart_spec.rb +13 -13
- data/spec/method_specs/event_spec.rb +3 -3
- data/spec/method_specs/geo_spec.rb +13 -13
- data/spec/method_specs/group_spec.rb +4 -4
- data/spec/method_specs/library_spec.rb +7 -7
- data/spec/method_specs/radio_spec.rb +10 -10
- data/spec/method_specs/tag_spec.rb +28 -28
- data/spec/method_specs/tasteometer_spec.rb +4 -4
- data/spec/method_specs/track_spec.rb +91 -73
- data/spec/method_specs/user_spec.rb +124 -94
- data/spec/response_spec.rb +6 -6
- data/spec/util_spec.rb +16 -16
- metadata +33 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97fb464cf27713555c45f696a2c7489906c6d8dc
|
4
|
+
data.tar.gz: 93856d36bde02f40e1b9180f151e29363fc51ef8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f0c940d644e5fd4f4c55d0c77ef4e1fa8be5e5252e9e00a2552296745ab4f892478da72d09021b752a7770035c76e065cd8941d900b3d16c2bf6afaa04e3259
|
7
|
+
data.tar.gz: 874c706e479275dbff678f62bee3dd87767e8c074722dd4bc08161a1981becbb80608a118f35abdd536353781cbed9c654be7de32a98cb06786289ad29db9d8e
|
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
--color
|
2
|
+
--format documentation
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -24,6 +24,7 @@ lastfm.track.update_now_playing(artist: 'Hujiko Pro', track: 'acid acid 7riddim'
|
|
24
24
|
* 1.9.3
|
25
25
|
* 2.0.0
|
26
26
|
* 2.1.0
|
27
|
+
* 2.2.0
|
27
28
|
|
28
29
|
## Supported API Methods
|
29
30
|
|
@@ -31,11 +32,19 @@ It supports methods which require [authentication](http://www.last.fm/api/authen
|
|
31
32
|
|
32
33
|
### Album
|
33
34
|
|
35
|
+
* [album.addTags](http://www.last.fm/api/show/album.addTags)
|
36
|
+
* [album.getBuylinks](http://www.last.fm/api/show/album.getBuylinks)
|
34
37
|
* [album.getInfo](http://www.last.fm/api/show?service=290)
|
38
|
+
* [album.getShouts](http://www.last.fm/api/show/album.getShouts)
|
39
|
+
* [album.getTags](http://www.last.fm/api/show/album.getTags)
|
40
|
+
* [album.getTopTags](http://www.last.fm/api/show/album.getTopTags)
|
41
|
+
* [album.removeTag](http://www.last.fm/api/show/album.removeTag)
|
42
|
+
* [album.search](http://www.last.fm/api/show/album.search)
|
43
|
+
* [album.share](http://www.last.fm/api/show/album.share)
|
35
44
|
|
36
45
|
### Artist
|
37
46
|
|
38
|
-
* [artist.
|
47
|
+
* ~~[artist.gets](http://www.last.fm/api/show?service=117)~~ deleted
|
39
48
|
* [artist.getInfo](http://www.last.fm/api/show?service=267)
|
40
49
|
* [artist.getSimilar](http://www.last.fm/api/show?service=267)
|
41
50
|
* [artist.getTags](http://www.last.fm/api/show?service=267)
|
@@ -53,7 +62,7 @@ It supports methods which require [authentication](http://www.last.fm/api/authen
|
|
53
62
|
|
54
63
|
### Event
|
55
64
|
|
56
|
-
* [event.getInfo](http://www.last.fm/api/show/event.getInfo)
|
65
|
+
* ~~[event.getInfo](http://www.last.fm/api/show/event.getInfo)~~ deleted
|
57
66
|
|
58
67
|
### Radio
|
59
68
|
|
@@ -69,7 +78,7 @@ It supports methods which require [authentication](http://www.last.fm/api/authen
|
|
69
78
|
|
70
79
|
### Tasteometer
|
71
80
|
|
72
|
-
* [tasteometer.compare](http://www.last.fm/api/show/tasteometer.compare)
|
81
|
+
* ~~[tasteometer.compare](http://www.last.fm/api/show/tasteometer.compare)~~ deleted
|
73
82
|
|
74
83
|
### Track
|
75
84
|
|
@@ -97,7 +106,7 @@ It supports methods which require [authentication](http://www.last.fm/api/authen
|
|
97
106
|
* [user.getNeighbours](http://www.last.fm/api/show?service=264)
|
98
107
|
* [user.getPersonalTags](http://www.last.fm/api/show/user.getPersonalTags)
|
99
108
|
* [user.getRecentTracks](http://www.last.fm/api/show?service=278)
|
100
|
-
* [user.getRecommendedEvents](http://www.last.fm/api/show/user.getRecommendedEvents)
|
109
|
+
* ~~[user.getRecommendedEvents](http://www.last.fm/api/show/user.getRecommendedEvents)~~ deleted
|
101
110
|
* [user.getRecommendedArtists](http://www.last.fm/api/show/user.getRecommendedArtists)
|
102
111
|
* [user.getTopArtists](http://www.last.fm/api/show/user.getTopArtists)
|
103
112
|
* [user.getTopAlbums](http://www.last.fm/api/show/user.getTopAlbums)
|
@@ -110,7 +119,7 @@ It supports methods which require [authentication](http://www.last.fm/api/authen
|
|
110
119
|
|
111
120
|
### Geo
|
112
121
|
|
113
|
-
* [geo.getEvents](http://www.last.fm/api/show?service#270)
|
122
|
+
* ~~[geo.getEvents](http://www.last.fm/api/show?service#270)~~ deleted
|
114
123
|
|
115
124
|
### Group
|
116
125
|
|
data/lastfm.gemspec
CHANGED
@@ -12,13 +12,12 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
13
13
|
gem.name = %q{lastfm}
|
14
14
|
gem.require_paths = ["lib"]
|
15
|
-
gem.version = "1.
|
15
|
+
gem.version = "1.27.4"
|
16
16
|
gem.license = 'MIT'
|
17
17
|
|
18
18
|
gem.add_dependency "xml-simple"
|
19
19
|
gem.add_dependency "httparty"
|
20
|
-
gem.add_dependency 'activesupport', '>= 3.2.0'
|
21
20
|
|
22
|
-
gem.add_development_dependency('rspec', ['~>
|
23
|
-
gem.add_development_dependency('rake')
|
21
|
+
gem.add_development_dependency('rspec', ['~> 3.4.0'])
|
22
|
+
gem.add_development_dependency('rake', '< 12.3.3')
|
24
23
|
end
|
data/lib/lastfm.rb
CHANGED
@@ -1,15 +1,82 @@
|
|
1
1
|
class Lastfm
|
2
2
|
module MethodCategory
|
3
3
|
class Album < Base
|
4
|
+
write_method :add_tags, :required => [:artist, :album, :tags]
|
5
|
+
|
6
|
+
write_method :remove_tag, :required => [:artist, :album, :tag]
|
7
|
+
|
8
|
+
write_method(
|
9
|
+
:share,
|
10
|
+
:required => [:artist, :album, :recipient],
|
11
|
+
:optional => [
|
12
|
+
[:public, nil],
|
13
|
+
[:message, nil]
|
14
|
+
]
|
15
|
+
)
|
16
|
+
|
17
|
+
regular_method(
|
18
|
+
:get_buylinks,
|
19
|
+
:required => any_params([:artist, :album, :country], [:mbid, :country]),
|
20
|
+
:optional => [
|
21
|
+
[:autocorrect, nil]
|
22
|
+
]
|
23
|
+
) do |response|
|
24
|
+
response.xml['affiliations']
|
25
|
+
end
|
26
|
+
|
4
27
|
regular_method(
|
5
28
|
:get_info,
|
6
29
|
:required => any_params([:artist, :album], :mbid)
|
7
30
|
) do |response|
|
8
31
|
result = response.xml['album']
|
9
32
|
|
10
|
-
result['releasedate'].lstrip! unless result['releasedate'].empty?
|
33
|
+
result['releasedate'].lstrip! unless result.nil? || result['releasedate'].nil? || result['releasedate'].empty?
|
11
34
|
result
|
12
35
|
end
|
36
|
+
|
37
|
+
regular_method(
|
38
|
+
:get_shouts,
|
39
|
+
:required => any_params([:artist, :album], :mbid),
|
40
|
+
:optional => [
|
41
|
+
[:limit, nil],
|
42
|
+
[:autocorrect, nil],
|
43
|
+
[:page, nil]
|
44
|
+
]
|
45
|
+
) do |response|
|
46
|
+
response.xml['shouts']['shout'] = Util.force_array(response.xml['shouts']['shout'])
|
47
|
+
end
|
48
|
+
|
49
|
+
regular_method(
|
50
|
+
:get_top_tags,
|
51
|
+
:required => [:artist, :album],
|
52
|
+
:optional => [
|
53
|
+
[:autocorrect, nil]
|
54
|
+
]
|
55
|
+
) do |response|
|
56
|
+
response.xml['toptags']['tag'] = Util.force_array(response.xml['toptags']['tag'])
|
57
|
+
end
|
58
|
+
|
59
|
+
regular_method(
|
60
|
+
:search,
|
61
|
+
:required => [:album],
|
62
|
+
:optional => [
|
63
|
+
[:limit, nil],
|
64
|
+
[:page, nil]
|
65
|
+
]
|
66
|
+
) do |response|
|
67
|
+
response.xml['results']['albummatches']['album'] = Util.force_array(response.xml['results']['albummatches']['album'])
|
68
|
+
response.xml
|
69
|
+
end
|
70
|
+
|
71
|
+
method_with_authentication(
|
72
|
+
:get_tags,
|
73
|
+
:required => any_params([:artist, :album], :mbid),
|
74
|
+
:optional => [
|
75
|
+
[:autocorrect, nil],
|
76
|
+
]
|
77
|
+
) do |response|
|
78
|
+
response.xml['tags']['tag'] = Util.force_array(response.xml['tags']['tag'])
|
79
|
+
end
|
13
80
|
end
|
14
81
|
end
|
15
82
|
end
|
@@ -22,6 +22,13 @@ class Lastfm
|
|
22
22
|
response.xml['artist']
|
23
23
|
end
|
24
24
|
|
25
|
+
regular_method(
|
26
|
+
:get_correction,
|
27
|
+
:required => [:artist]
|
28
|
+
) do |response|
|
29
|
+
response.xml['corrections']['correction']
|
30
|
+
end
|
31
|
+
|
25
32
|
regular_method(
|
26
33
|
:get_events,
|
27
34
|
:required => any_params([:artist], [:mbid])
|
@@ -71,7 +71,10 @@ class Lastfm
|
|
71
71
|
|
72
72
|
regular_method(
|
73
73
|
:get_similar,
|
74
|
-
:required => [:artist, :track]
|
74
|
+
:required => [:artist, :track],
|
75
|
+
:optional => [
|
76
|
+
[:limit, nil]
|
77
|
+
]
|
75
78
|
) do |response|
|
76
79
|
response.xml['similartracks']['track'][1 .. -1]
|
77
80
|
end
|
@@ -89,7 +92,7 @@ class Lastfm
|
|
89
92
|
response.xml
|
90
93
|
end
|
91
94
|
|
92
|
-
|
95
|
+
regular_method(
|
93
96
|
:get_tags,
|
94
97
|
:required => [:artist, :track]
|
95
98
|
) do |response|
|
@@ -14,7 +14,7 @@ class Lastfm
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def get_info(*args)
|
17
|
-
method =
|
17
|
+
method = 'getInfo'
|
18
18
|
response = if args.any?
|
19
19
|
options = Lastfm::Util.build_options(args, [:user], [])
|
20
20
|
request(method, options)
|
@@ -33,7 +33,7 @@ class Lastfm
|
|
33
33
|
[:page, nil]
|
34
34
|
]
|
35
35
|
) do |response|
|
36
|
-
response.xml['lovedtracks']['track']
|
36
|
+
response.xml['lovedtracks']['track'] = Util.force_array(response.xml['lovedtracks']['track'])
|
37
37
|
end
|
38
38
|
|
39
39
|
regular_method(
|
data/lib/lastfm/response.rb
CHANGED
@@ -6,9 +6,13 @@ class Lastfm
|
|
6
6
|
attr_reader :xml
|
7
7
|
|
8
8
|
def initialize(body)
|
9
|
+
# workaround for https://github.com/youpy/ruby-lastfm/issues/83
|
10
|
+
body = fix_body(body)
|
11
|
+
|
9
12
|
@xml = XmlSimple.xml_in(body, 'ForceArray' => ['image', 'tag', 'user', 'event', 'correction'])
|
10
13
|
rescue REXML::ParseException
|
11
|
-
@xml = XmlSimple.xml_in(body.encode(Encoding.find("ISO-8859-1"), :undef => :replace),
|
14
|
+
@xml = XmlSimple.xml_in(body.encode(Encoding.find("ISO-8859-1"), :undef => :replace),
|
15
|
+
'ForceArray' => ['image', 'tag', 'user', 'event', 'correction'])
|
12
16
|
end
|
13
17
|
|
14
18
|
def success?
|
@@ -22,5 +26,19 @@ class Lastfm
|
|
22
26
|
def error
|
23
27
|
@xml['error']['code'].to_i
|
24
28
|
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def fix_body(body)
|
33
|
+
namespace_attr = 'xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"'
|
34
|
+
|
35
|
+
body.sub(/(<results[^>]*)/) do |str|
|
36
|
+
if str.match(namespace_attr)
|
37
|
+
str
|
38
|
+
else
|
39
|
+
'%s %s' % [str, namespace_attr]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
25
43
|
end
|
26
44
|
end
|
data/lib/lastfm/util.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class Lastfm
|
2
2
|
class Util
|
3
3
|
def self.force_array(array_or_something)
|
4
|
-
array_or_something.kind_of?(Array) ? array_or_something : [array_or_something]
|
4
|
+
array_or_something.kind_of?(Array) ? array_or_something : [array_or_something].compact
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.build_options(args, mandatory, optional)
|
@@ -14,18 +14,13 @@ class Lastfm
|
|
14
14
|
|
15
15
|
def self.build_options_from_hash(options, mandatory, optional)
|
16
16
|
candidates = mandatory.kind_of?(AnyParams) ? mandatory.candidates : [mandatory]
|
17
|
-
candidates.
|
18
|
-
Array(params).
|
19
|
-
|
20
|
-
|
21
|
-
raise ArgumentError.new("%s is required" % param)
|
22
|
-
else
|
23
|
-
next
|
24
|
-
end
|
25
|
-
end
|
17
|
+
candidates.each do |params|
|
18
|
+
missing_param = Array(params).any? { |param| !options.key?(param) }
|
19
|
+
if missing_param && params.equal?(candidates.last)
|
20
|
+
raise ArgumentError.new("%s is required" % candidates.map{ |c| Array(c).join(', ')}.join(' or '))
|
26
21
|
end
|
27
22
|
|
28
|
-
break
|
23
|
+
break unless missing_param
|
29
24
|
end
|
30
25
|
|
31
26
|
optional.each do |name, value|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<lfm status="ok">
|
3
|
+
<affiliations>
|
4
|
+
<physicals>
|
5
|
+
<affiliation>
|
6
|
+
<supplierName>Amazon</supplierName>
|
7
|
+
<price>
|
8
|
+
<currency>GBP</currency>
|
9
|
+
<amount>6.34</amount>
|
10
|
+
<formatted>£6.34</formatted>
|
11
|
+
</price>
|
12
|
+
<buyLink>http://www.last.fm/affiliate/byid/8/3418994/1/ws.album.buylinks.f4e2585261d8d10d3297e181d68940fc</buyLink>
|
13
|
+
<supplierIcon>http://cdn.last.fm/favicons/1/amazon.gif</supplierIcon>
|
14
|
+
<isSearch>0</isSearch>
|
15
|
+
</affiliation>
|
16
|
+
</physicals>
|
17
|
+
<downloads>
|
18
|
+
<affiliation>
|
19
|
+
<supplierName>Amazon MP3</supplierName>
|
20
|
+
<price>
|
21
|
+
<currency>GBP</currency>
|
22
|
+
<amount>7.99</amount>
|
23
|
+
<formatted>£7.99</formatted>
|
24
|
+
</price>
|
25
|
+
<buyLink>http://www.last.fm/affiliate/byid/8/3418994/44/ws.album.buylinks.f4e2585261d8d10d3297e181d68940fc</buyLink>
|
26
|
+
<supplierIcon>http://cdn.last.fm/favicons/amazon-mp3-16x16-a.gif</supplierIcon>
|
27
|
+
<isSearch>0</isSearch>
|
28
|
+
</affiliation>
|
29
|
+
</downloads>
|
30
|
+
</affiliations>
|
31
|
+
</lfm>
|
@@ -0,0 +1,184 @@
|
|
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
|
+
<image size="small">http://userserve-ak.last.fm/serve/34s/42806845.png</image>
|
10
|
+
<image size="medium">http://userserve-ak.last.fm/serve/64s/42806845.png</image>
|
11
|
+
<image size="large">http://userserve-ak.last.fm/serve/174s/42806845.png</image>
|
12
|
+
<image size="extralarge">http://userserve-ak.last.fm/serve/300x300/42806845.png</image>
|
13
|
+
<image size="mega">http://userserve-ak.last.fm/serve/_/42806845/Believe++600++600+PNG.png</image>
|
14
|
+
<listeners>179749</listeners>
|
15
|
+
<playcount>838056</playcount>
|
16
|
+
<tracks>
|
17
|
+
<track rank="1">
|
18
|
+
<name>Believe</name>
|
19
|
+
<duration>239</duration>
|
20
|
+
<mbid/>
|
21
|
+
<url>http://www.last.fm/music/Cher/_/Believe</url>
|
22
|
+
<streamable fulltrack="0">1</streamable>
|
23
|
+
<artist>
|
24
|
+
<name>Cher</name>
|
25
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
26
|
+
<url>http://www.last.fm/music/Cher</url>
|
27
|
+
</artist>
|
28
|
+
</track>
|
29
|
+
<track rank="2">
|
30
|
+
<name>The Power</name>
|
31
|
+
<duration>235</duration>
|
32
|
+
<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>
|
41
|
+
<track rank="3">
|
42
|
+
<name>Runaway</name>
|
43
|
+
<duration>285</duration>
|
44
|
+
<mbid/>
|
45
|
+
<url>http://www.last.fm/music/Cher/_/Runaway</url>
|
46
|
+
<streamable fulltrack="0">0</streamable>
|
47
|
+
<artist>
|
48
|
+
<name>Cher</name>
|
49
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
50
|
+
<url>http://www.last.fm/music/Cher</url>
|
51
|
+
</artist>
|
52
|
+
</track>
|
53
|
+
<track rank="4">
|
54
|
+
<name>All Or Nothing</name>
|
55
|
+
<duration>237</duration>
|
56
|
+
<mbid/>
|
57
|
+
<url>http://www.last.fm/music/Cher/_/All+Or+Nothing</url>
|
58
|
+
<streamable fulltrack="0">1</streamable>
|
59
|
+
<artist>
|
60
|
+
<name>Cher</name>
|
61
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
62
|
+
<url>http://www.last.fm/music/Cher</url>
|
63
|
+
</artist>
|
64
|
+
</track>
|
65
|
+
<track rank="5">
|
66
|
+
<name>Strong Enough</name>
|
67
|
+
<duration>223</duration>
|
68
|
+
<mbid/>
|
69
|
+
<url>http://www.last.fm/music/Cher/_/Strong+Enough</url>
|
70
|
+
<streamable fulltrack="0">1</streamable>
|
71
|
+
<artist>
|
72
|
+
<name>Cher</name>
|
73
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
74
|
+
<url>http://www.last.fm/music/Cher</url>
|
75
|
+
</artist>
|
76
|
+
</track>
|
77
|
+
<track rank="6">
|
78
|
+
<name>Dov'è l'amore</name>
|
79
|
+
<duration>257</duration>
|
80
|
+
<mbid/>
|
81
|
+
<url>http://www.last.fm/music/Cher/_/Dov%27%C3%A8+l%27amore</url>
|
82
|
+
<streamable fulltrack="0">0</streamable>
|
83
|
+
<artist>
|
84
|
+
<name>Cher</name>
|
85
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
86
|
+
<url>http://www.last.fm/music/Cher</url>
|
87
|
+
</artist>
|
88
|
+
</track>
|
89
|
+
<track rank="7">
|
90
|
+
<name>Takin' Back My Heart</name>
|
91
|
+
<duration>271</duration>
|
92
|
+
<mbid/>
|
93
|
+
<url>http://www.last.fm/music/Cher/_/Takin%27+Back+My+Heart</url>
|
94
|
+
<streamable fulltrack="0">0</streamable>
|
95
|
+
<artist>
|
96
|
+
<name>Cher</name>
|
97
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
98
|
+
<url>http://www.last.fm/music/Cher</url>
|
99
|
+
</artist>
|
100
|
+
</track>
|
101
|
+
<track rank="8">
|
102
|
+
<name>Taxi Taxi</name>
|
103
|
+
<duration>302</duration>
|
104
|
+
<mbid/>
|
105
|
+
<url>http://www.last.fm/music/Cher/_/Taxi+Taxi</url>
|
106
|
+
<streamable fulltrack="0">0</streamable>
|
107
|
+
<artist>
|
108
|
+
<name>Cher</name>
|
109
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
110
|
+
<url>http://www.last.fm/music/Cher</url>
|
111
|
+
</artist>
|
112
|
+
</track>
|
113
|
+
<track rank="9">
|
114
|
+
<name>Love Is the Groove</name>
|
115
|
+
<duration>270</duration>
|
116
|
+
<mbid/>
|
117
|
+
<url>http://www.last.fm/music/Cher/_/Love+Is+the+Groove</url>
|
118
|
+
<streamable fulltrack="0">0</streamable>
|
119
|
+
<artist>
|
120
|
+
<name>Cher</name>
|
121
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
122
|
+
<url>http://www.last.fm/music/Cher</url>
|
123
|
+
</artist>
|
124
|
+
</track>
|
125
|
+
<track rank="10">
|
126
|
+
<name>We All Sleep Alone</name>
|
127
|
+
<duration>233</duration>
|
128
|
+
<mbid/>
|
129
|
+
<url>http://www.last.fm/music/Cher/_/We+All+Sleep+Alone</url>
|
130
|
+
<streamable fulltrack="0">1</streamable>
|
131
|
+
<artist>
|
132
|
+
<name>Cher</name>
|
133
|
+
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
|
134
|
+
<url>http://www.last.fm/music/Cher</url>
|
135
|
+
</artist>
|
136
|
+
</track>
|
137
|
+
</tracks>
|
138
|
+
<toptags>
|
139
|
+
<tag>
|
140
|
+
<name>pop</name>
|
141
|
+
<url>http://www.last.fm/tag/pop</url>
|
142
|
+
</tag>
|
143
|
+
<tag>
|
144
|
+
<name>90s</name>
|
145
|
+
<url>http://www.last.fm/tag/90s</url>
|
146
|
+
</tag>
|
147
|
+
<tag>
|
148
|
+
<name>dance</name>
|
149
|
+
<url>http://www.last.fm/tag/dance</url>
|
150
|
+
</tag>
|
151
|
+
<tag>
|
152
|
+
<name>1998</name>
|
153
|
+
<url>http://www.last.fm/tag/1998</url>
|
154
|
+
</tag>
|
155
|
+
<tag>
|
156
|
+
<name>albums i own</name>
|
157
|
+
<url>http://www.last.fm/tag/albums%20i%20own</url>
|
158
|
+
</tag>
|
159
|
+
</toptags>
|
160
|
+
<wiki>
|
161
|
+
<published>Sat, 6 Mar 2010 16:48:03 +0000</published>
|
162
|
+
<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 "Record of the Year", "Best Pop Album" and winning "Best Dance Recording" for the single "Believe". ]]></summary>
|
163
|
+
<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 "Record of the Year", "Best Pop Album" and winning "Best Dance Recording" for the single "Believe".
|
164
|
+
|
165
|
+
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.
|
166
|
+
|
167
|
+
The album featured a change in Cher's music; in addition, Believe presented a vocally stronger Cher and a massive use of vocoder and Auto-Tune. In 1999, the album received 3 Grammy Awards nominations for "Record of the Year", "Best Pop Album" and winning "Best Dance Recording". Throughout 1999 and into 2000 Cher was nominated and winning many awards for the album including a Billboard Music Award for "Female Vocalist of the Year", Lifelong Contribution Awards and a Star on the Walk of Fame shared with former Sonny Bono. The boost in Cher's popularity led to a very successful Do You Believe? Tour.
|
168
|
+
|
169
|
+
The album was dedicated to Sonny Bono, Cher's former husband who died earlier that year from a skiing accident.
|
170
|
+
|
171
|
+
Cher also recorded a cover version of "Love Is in the Air" during early sessions for this album. Although never officially released, the song has leaked on file sharing networks.
|
172
|
+
|
173
|
+
Singles
|
174
|
+
|
175
|
+
|
176
|
+
"Believe"
|
177
|
+
"Strong Enough"
|
178
|
+
"All or Nothing"
|
179
|
+
"Dov'è L'Amore"
|
180
|
+
|
181
|
+
User-contributed text is available under the Creative Commons By-SA License and may also be available under the GNU FDL.]]></content>
|
182
|
+
</wiki>
|
183
|
+
</album>
|
184
|
+
</lfm>
|