firstfm 0.6.0 → 0.7.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/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
- :minor: 6
3
+ :minor: 7
4
4
  :patch: 0
5
5
  :build:
data/firstfm.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "firstfm"
8
- s.version = "0.6.0"
8
+ s.version = "0.7.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"]
12
- s.date = "2013-01-27"
12
+ s.date = "2013-07-14"
13
13
  s.description = "Firstfm is a ruby wrapper for the Last.fm APIs ( http://www.last.fm/api ). My main focus is to import events from Last.FM, but with time I will try to add support for all API methods."
14
14
  s.email = "aleksandr.lossenko@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "lib/firstfm/image.rb",
34
34
  "lib/firstfm/location.rb",
35
35
  "lib/firstfm/track.rb",
36
+ "lib/firstfm/user.rb",
36
37
  "lib/firstfm/venue.rb",
37
38
  "test/fixtures/artist.xml",
38
39
  "test/fixtures/artists.xml",
@@ -46,18 +47,20 @@ Gem::Specification.new do |s|
46
47
  "test/fixtures/get_images.xml",
47
48
  "test/fixtures/top_tracks.xml",
48
49
  "test/fixtures/tracks.xml",
50
+ "test/fixtures/user_artists.xml",
49
51
  "test/fixtures/venue.xml",
50
52
  "test/fixtures/venues.xml",
51
53
  "test/helper.rb",
52
54
  "test/test_artist.rb",
53
55
  "test/test_geo.rb",
54
56
  "test/test_track.rb",
57
+ "test/test_user.rb",
55
58
  "test/test_venue.rb"
56
59
  ]
57
60
  s.homepage = "http://github.com/egze/firstfm"
58
61
  s.licenses = ["MIT"]
59
62
  s.require_paths = ["lib"]
60
- s.rubygems_version = "1.8.24"
63
+ s.rubygems_version = "1.8.25"
61
64
  s.summary = "A ruby wrapper for the Last.fm APIs"
62
65
 
63
66
  if s.respond_to? :specification_version then
@@ -2,7 +2,7 @@ module Firstfm
2
2
 
3
3
  class Artist
4
4
 
5
- attr_accessor :name, :mbid, :url, :listeners, :streamable, :images
5
+ attr_accessor :name, :mbid, :url, :listeners, :streamable, :images, :playcount
6
6
 
7
7
  include HTTParty
8
8
  base_uri 'ws.audioscrobbler.com'
@@ -88,6 +88,7 @@ module Firstfm
88
88
  artist.listeners = hash["listeners"].to_i
89
89
  artist.streamable = hash["streamable"] == "1"
90
90
  artist.images = hash["image"]
91
+ artist.playcount = hash["playcount"].to_i
91
92
  end
92
93
  end
93
94
 
@@ -0,0 +1,21 @@
1
+ module Firstfm
2
+
3
+ class User
4
+
5
+ include HTTParty
6
+ base_uri 'ws.audioscrobbler.com'
7
+ format :xml
8
+
9
+ def self.get_top_artists(user, period = "overall", page = 1, limit = 50)
10
+ response = get("/2.0/", {query: {method: 'user.getTopArtists', user: user, period: period, page: page, limit: limit, api_key: Firstfm.config.api_key}})
11
+ artists_array = (response and response["lfm"] and response["lfm"]["topartists"] and response["lfm"]["topartists"]["artist"]) || []
12
+ artists = Artist.init_from_array(artists_array)
13
+ WillPaginate::Collection.create(page, limit) do |pager|
14
+ pager.replace artists
15
+ pager.total_entries = response['lfm']['topartists']['total'].to_i rescue 0
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ end
data/lib/firstfm.rb CHANGED
@@ -11,6 +11,7 @@ require 'firstfm/event'
11
11
  require 'firstfm/location'
12
12
  require 'firstfm/venue'
13
13
  require 'firstfm/geo'
14
+ require 'firstfm/user'
14
15
 
15
16
  module Firstfm
16
17
 
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <lfm status="ok">
3
+ <topartists user="RJ" type="overall" page="1" perPage="50" totalPages="115" total="5702">
4
+ <artist rank="1">
5
+ <name>Dream Theater</name>
6
+ <playcount>1797</playcount>
7
+ <mbid>28503ab7-8bf2-4666-a7bd-2644bfc7cb1d</mbid>
8
+ <url>http://www.last.fm/music/Dream+Theater</url>
9
+ <streamable>1</streamable>
10
+ <image size="small">http://userserve-ak.last.fm/serve/34/5623420.jpg</image>
11
+ <image size="medium">http://userserve-ak.last.fm/serve/64/5623420.jpg</image>
12
+ <image size="large">http://userserve-ak.last.fm/serve/126/5623420.jpg</image>
13
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/5623420.jpg</image>
14
+ <image size="mega">http://userserve-ak.last.fm/serve/500/5623420/Dream+Theater+dt.jpg</image>
15
+ </artist>
16
+ <artist rank="2">
17
+ <name>Dire Straits</name>
18
+ <playcount>1498</playcount>
19
+ <mbid>614e3804-7d34-41ba-857f-811bad7c2b7a</mbid>
20
+ <url>http://www.last.fm/music/Dire+Straits</url>
21
+ <streamable>1</streamable>
22
+ <image size="small">http://userserve-ak.last.fm/serve/34/12048127.jpg</image>
23
+ <image size="medium">http://userserve-ak.last.fm/serve/64/12048127.jpg</image>
24
+ <image size="large">http://userserve-ak.last.fm/serve/126/12048127.jpg</image>
25
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/12048127.jpg</image>
26
+ <image size="mega">http://userserve-ak.last.fm/serve/500/12048127/Dire+Straits+expresso+love.jpg</image>
27
+ </artist>
28
+ </topartists>
29
+ </lfm>
data/test/test_user.rb ADDED
@@ -0,0 +1,19 @@
1
+ require 'helper'
2
+
3
+ class TestUser < Test::Unit::TestCase
4
+
5
+ def test_should_get_top_artists
6
+ FakeWeb.register_uri(:get, %r|http://ws.audioscrobbler.com/|, :body => File.read(File.dirname(__FILE__) + "/fixtures/user_artists.xml"))
7
+ artists = Firstfm::User.get_top_artists("RJ")
8
+ assert_equal 2, artists.size
9
+ assert_equal 5702, artists.total_entries
10
+ artist = artists.first
11
+ assert_equal "Dream Theater", artist.name
12
+ assert_equal 1797, artist.playcount
13
+ assert_equal "http://www.last.fm/music/Dream+Theater", artist.url
14
+ assert_equal "28503ab7-8bf2-4666-a7bd-2644bfc7cb1d", artist.mbid
15
+ assert artist.streamable
16
+ assert_equal 5, artist.images.size
17
+ end
18
+
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firstfm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-27 00:00:00.000000000 Z
12
+ date: 2013-07-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -165,6 +165,7 @@ files:
165
165
  - lib/firstfm/image.rb
166
166
  - lib/firstfm/location.rb
167
167
  - lib/firstfm/track.rb
168
+ - lib/firstfm/user.rb
168
169
  - lib/firstfm/venue.rb
169
170
  - test/fixtures/artist.xml
170
171
  - test/fixtures/artists.xml
@@ -178,12 +179,14 @@ files:
178
179
  - test/fixtures/get_images.xml
179
180
  - test/fixtures/top_tracks.xml
180
181
  - test/fixtures/tracks.xml
182
+ - test/fixtures/user_artists.xml
181
183
  - test/fixtures/venue.xml
182
184
  - test/fixtures/venues.xml
183
185
  - test/helper.rb
184
186
  - test/test_artist.rb
185
187
  - test/test_geo.rb
186
188
  - test/test_track.rb
189
+ - test/test_user.rb
187
190
  - test/test_venue.rb
188
191
  homepage: http://github.com/egze/firstfm
189
192
  licenses:
@@ -200,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
200
203
  version: '0'
201
204
  segments:
202
205
  - 0
203
- hash: 3155602274475506363
206
+ hash: -964110322330808442
204
207
  required_rubygems_version: !ruby/object:Gem::Requirement
205
208
  none: false
206
209
  requirements:
@@ -209,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
212
  version: '0'
210
213
  requirements: []
211
214
  rubyforge_project:
212
- rubygems_version: 1.8.24
215
+ rubygems_version: 1.8.25
213
216
  signing_key:
214
217
  specification_version: 3
215
218
  summary: A ruby wrapper for the Last.fm APIs