firstfm 0.4.1 → 0.5.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 +10 -2
- data/VERSION.yml +2 -2
- data/firstfm.gemspec +3 -2
- data/lib/firstfm/artist.rb +4 -4
- data/lib/firstfm/configuration.rb +24 -0
- data/lib/firstfm/geo.rb +3 -3
- data/lib/firstfm/track.rb +1 -1
- data/lib/firstfm/venue.rb +2 -2
- data/lib/firstfm.rb +2 -1
- data/test/helper.rb +5 -0
- metadata +4 -3
data/README.rdoc
CHANGED
@@ -8,9 +8,17 @@ My main focus is to import events from Last.FM, but with time I will try to add
|
|
8
8
|
|
9
9
|
sudo gem install firstfm
|
10
10
|
|
11
|
-
|
11
|
+
or add to your Gemfile
|
12
12
|
|
13
|
-
|
13
|
+
gem 'firstfm'
|
14
|
+
|
15
|
+
== Configuration
|
16
|
+
|
17
|
+
This goes to your initializers/firstfm.rb
|
18
|
+
|
19
|
+
Firstfm.configure do |ffm|
|
20
|
+
ffm.api_key = "YOUR_KEY_HERE"
|
21
|
+
end
|
14
22
|
|
15
23
|
== Usage
|
16
24
|
|
data/VERSION.yml
CHANGED
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.
|
8
|
+
s.version = "0.5.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 = "
|
12
|
+
s.date = "2013-01-02"
|
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 = [
|
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
"firstfm.gemspec",
|
28
28
|
"lib/firstfm.rb",
|
29
29
|
"lib/firstfm/artist.rb",
|
30
|
+
"lib/firstfm/configuration.rb",
|
30
31
|
"lib/firstfm/event.rb",
|
31
32
|
"lib/firstfm/geo.rb",
|
32
33
|
"lib/firstfm/image.rb",
|
data/lib/firstfm/artist.rb
CHANGED
@@ -20,7 +20,7 @@ module Firstfm
|
|
20
20
|
|
21
21
|
def get_tags
|
22
22
|
name_params = self.mbid.nil? ? {:artist => self.name} : {:mbid => self.mbid}
|
23
|
-
response = self.class.get("/2.0/", {:query => {:method => 'artist.getInfo', :api_key => Firstfm
|
23
|
+
response = self.class.get("/2.0/", {:query => {:method => 'artist.getInfo', :api_key => Firstfm.config.api_key}.merge(name_params)})
|
24
24
|
tags_array = (response["lfm"] and response["lfm"]["artist"] and response["lfm"]["artist"]["tags"] and response["lfm"]["artist"]["tags"]["tag"]) || []
|
25
25
|
tags_array.map {|t| t["name"] }
|
26
26
|
end
|
@@ -31,7 +31,7 @@ module Firstfm
|
|
31
31
|
|
32
32
|
def get_images(page = 1, limit = 50)
|
33
33
|
name_params = self.mbid.nil? ? {:artist => self.name} : {:mbid => self.mbid}
|
34
|
-
response = self.class.get("/2.0/", {:query => {:method => 'artist.getImages', :page => page, :limit => limit, :api_key => Firstfm
|
34
|
+
response = self.class.get("/2.0/", {:query => {:method => 'artist.getImages', :page => page, :limit => limit, :api_key => Firstfm.config.api_key}.merge(name_params)})
|
35
35
|
images_array = (response["lfm"] and response["lfm"]["images"] and response["lfm"]["images"]["image"]) || []
|
36
36
|
images = Image.init_from_array(images_array)
|
37
37
|
WillPaginate::Collection.create(page, limit) do |pager|
|
@@ -41,7 +41,7 @@ module Firstfm
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def self.search(artist, page = 1, limit = 50)
|
44
|
-
response = get("/2.0/", {:query => {:method => 'artist.search', :artist => artist, :page => page, :limit => limit, :api_key => Firstfm
|
44
|
+
response = get("/2.0/", {:query => {:method => 'artist.search', :artist => artist, :page => page, :limit => limit, :api_key => Firstfm.config.api_key}})
|
45
45
|
artists_array = (response and response["lfm"] and response["lfm"]["results"] and response["lfm"]["results"]["artistmatches"] and response["lfm"]["results"]["artistmatches"]["artist"]) || []
|
46
46
|
artists = Artist.init_from_array(artists_array)
|
47
47
|
WillPaginate::Collection.create(page, limit) do |pager|
|
@@ -51,7 +51,7 @@ module Firstfm
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def self.get_top_tracks(artist, page = 1, limit = 50)
|
54
|
-
response = get("/2.0/", {:query => {:method => 'artist.getTopTracks', :artist => artist, :page => page, :limit => limit, :api_key => Firstfm
|
54
|
+
response = get("/2.0/", {:query => {:method => 'artist.getTopTracks', :artist => artist, :page => page, :limit => limit, :api_key => Firstfm.config.api_key}})
|
55
55
|
tracks_array = (response and response["lfm"] and response["lfm"]["toptracks"] and response["lfm"]["toptracks"]["track"]) || []
|
56
56
|
tracks = Track.init_from_array(tracks_array)
|
57
57
|
WillPaginate::Collection.create(page, limit) do |pager|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Firstfm
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :api_key
|
4
|
+
|
5
|
+
DEFAULT_API_KEY = "REPLACE_WITH_REAL_KEY"
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@api_key = DEFAULT_API_KEY
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
module Configurable
|
14
|
+
def configure
|
15
|
+
raise "Configuration missing" unless block_given?
|
16
|
+
yield @config ||= Firstfm::Configuration.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def config
|
20
|
+
@config
|
21
|
+
end
|
22
|
+
end
|
23
|
+
extend Configurable
|
24
|
+
end
|
data/lib/firstfm/geo.rb
CHANGED
@@ -13,7 +13,7 @@ module Firstfm
|
|
13
13
|
page = params.delete(:page) || 1
|
14
14
|
distance = params.delete(:distance)
|
15
15
|
|
16
|
-
response = get("/2.0/", {:query => {:method => 'geo.getevents', :location => location, :page => page, :lat => lat, :lng => lng, :distance => distance, :api_key => Firstfm
|
16
|
+
response = get("/2.0/", {:query => {:method => 'geo.getevents', :location => location, :page => page, :lat => lat, :lng => lng, :distance => distance, :api_key => Firstfm.config.api_key}})
|
17
17
|
events = response && response['lfm'] ? Event.init_events_from_hash(response['lfm']) : []
|
18
18
|
|
19
19
|
collection = WillPaginate::Collection.create(page, 10) do |pager|
|
@@ -33,7 +33,7 @@ module Firstfm
|
|
33
33
|
:country => country,
|
34
34
|
:page => page,
|
35
35
|
:limit => limit,
|
36
|
-
:api_key => Firstfm
|
36
|
+
:api_key => Firstfm.config.api_key
|
37
37
|
}})
|
38
38
|
|
39
39
|
artists_array = (response and response['lfm'] and response['lfm']['topartists'] and response['lfm']['topartists']['artist']) || []
|
@@ -72,7 +72,7 @@ module Firstfm
|
|
72
72
|
:end => end_timestamp,
|
73
73
|
:page => page,
|
74
74
|
:limit => limit,
|
75
|
-
:api_key => Firstfm
|
75
|
+
:api_key => Firstfm.config.api_key }.reject {|k,v| v.nil?}
|
76
76
|
})
|
77
77
|
|
78
78
|
artists_array = (response and response['lfm'] and response['lfm']['topartists'] and response['lfm']['topartists']['artist']) || []
|
data/lib/firstfm/track.rb
CHANGED
@@ -9,7 +9,7 @@ module Firstfm
|
|
9
9
|
format :xml
|
10
10
|
|
11
11
|
def self.search(track, page = 1, limit = 30)
|
12
|
-
response = get("/2.0/", {:query => {:method => 'track.search', :track => track, :page => page, :limit => limit, :api_key => Firstfm
|
12
|
+
response = get("/2.0/", {:query => {:method => 'track.search', :track => track, :page => page, :limit => limit, :api_key => Firstfm.config.api_key}})
|
13
13
|
tracks_array = (response and response["lfm"] and response["lfm"]["results"] and response["lfm"]["results"]["trackmatches"] and response["lfm"]["results"]["trackmatches"]["track"]) || []
|
14
14
|
tracks = Track.init_from_array(tracks_array)
|
15
15
|
WillPaginate::Collection.create(page, limit) do |pager|
|
data/lib/firstfm/venue.rb
CHANGED
@@ -9,7 +9,7 @@ module Firstfm
|
|
9
9
|
format :xml
|
10
10
|
|
11
11
|
def self.search(venue, page = 1, limit = 50, country = nil)
|
12
|
-
response = get("/2.0/", {:query => {:method => 'venue.search', :venue => venue, :page => page, :limit => limit, :country => country, :api_key => Firstfm
|
12
|
+
response = get("/2.0/", {:query => {:method => 'venue.search', :venue => venue, :page => page, :limit => limit, :country => country, :api_key => Firstfm.config.api_key}})
|
13
13
|
venues = response && response['lfm'] ? Venue.init_venues_from_hash(response['lfm']) : []
|
14
14
|
collection = WillPaginate::Collection.create(page, limit) do |pager|
|
15
15
|
pager.replace venues
|
@@ -18,7 +18,7 @@ module Firstfm
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.get_events(venue_id)
|
21
|
-
response = get("/2.0/", {:query => {:method => 'venue.getEvents', :venue => venue_id, :api_key => Firstfm
|
21
|
+
response = get("/2.0/", {:query => {:method => 'venue.getEvents', :venue => venue_id, :api_key => Firstfm.config.api_key}})
|
22
22
|
events = response && response['lfm'] ? Event.init_events_from_hash(response['lfm']) : []
|
23
23
|
end
|
24
24
|
|
data/lib/firstfm.rb
CHANGED
@@ -3,6 +3,7 @@ require 'crack'
|
|
3
3
|
require 'httparty'
|
4
4
|
require 'chronic'
|
5
5
|
require 'will_paginate/collection'
|
6
|
+
require 'firstfm/configuration'
|
6
7
|
require 'firstfm/track'
|
7
8
|
require 'firstfm/image'
|
8
9
|
require 'firstfm/artist'
|
@@ -13,6 +14,6 @@ require 'firstfm/geo'
|
|
13
14
|
|
14
15
|
module Firstfm
|
15
16
|
|
16
|
-
|
17
|
+
GH_PAGE_URL = "https://github.com/egze/firstfm"
|
17
18
|
|
18
19
|
end
|
data/test/helper.rb
CHANGED
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.
|
4
|
+
version: 0.5.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:
|
12
|
+
date: 2013-01-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -159,6 +159,7 @@ files:
|
|
159
159
|
- firstfm.gemspec
|
160
160
|
- lib/firstfm.rb
|
161
161
|
- lib/firstfm/artist.rb
|
162
|
+
- lib/firstfm/configuration.rb
|
162
163
|
- lib/firstfm/event.rb
|
163
164
|
- lib/firstfm/geo.rb
|
164
165
|
- lib/firstfm/image.rb
|
@@ -197,7 +198,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
197
198
|
version: '0'
|
198
199
|
segments:
|
199
200
|
- 0
|
200
|
-
hash:
|
201
|
+
hash: 2311566496128087561
|
201
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
203
|
none: false
|
203
204
|
requirements:
|