firstfm 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -3,6 +3,7 @@ source "http://rubygems.org"
3
3
  gem "httparty"
4
4
  gem "will_paginate", "~> 3.0.pre2"
5
5
  gem "activesupport", "~> 3.0.7"
6
+ gem "chronic"
6
7
 
7
8
  group :development do
8
9
  gem "bundler", "~> 1.0.0"
data/Gemfile.lock CHANGED
@@ -2,6 +2,7 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  activesupport (3.0.9)
5
+ chronic (0.6.1)
5
6
  crack (0.1.8)
6
7
  fakeweb (1.3.0)
7
8
  git (1.2.5)
@@ -21,6 +22,7 @@ PLATFORMS
21
22
  DEPENDENCIES
22
23
  activesupport (~> 3.0.7)
23
24
  bundler (~> 1.0.0)
25
+ chronic
24
26
  fakeweb
25
27
  httparty
26
28
  jeweler (~> 1.6.2)
data/LICENSE.txt CHANGED
File without changes
data/README.rdoc CHANGED
File without changes
data/Rakefile CHANGED
File without changes
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- :patch: 2
3
- :major: 0
2
+ :minor: 2
3
+ :patch: 0
4
4
  :build:
5
- :minor: 1
5
+ :major: 0
data/firstfm.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{firstfm}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.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 = %q{2011-06-28}
12
+ s.date = %q{2011-07-27}
13
13
  s.description = %q{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 = %q{aleksandr.lossenko@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "lib/firstfm/artist.rb",
29
29
  "lib/firstfm/event.rb",
30
30
  "lib/firstfm/geo.rb",
31
+ "lib/firstfm/image.rb",
31
32
  "lib/firstfm/location.rb",
32
33
  "lib/firstfm/track.rb",
33
34
  "lib/firstfm/venue.rb",
@@ -49,17 +50,17 @@ Gem::Specification.new do |s|
49
50
  s.homepage = %q{http://github.com/egze/firstfm}
50
51
  s.licenses = ["MIT"]
51
52
  s.require_paths = ["lib"]
52
- s.rubygems_version = %q{1.3.6}
53
+ s.rubygems_version = %q{1.6.2}
53
54
  s.summary = %q{A ruby wrapper for the Last.fm APIs}
54
55
 
55
56
  if s.respond_to? :specification_version then
56
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
57
57
  s.specification_version = 3
58
58
 
59
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
59
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
60
60
  s.add_runtime_dependency(%q<httparty>, [">= 0"])
61
61
  s.add_runtime_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
62
62
  s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.7"])
63
+ s.add_runtime_dependency(%q<chronic>, [">= 0"])
63
64
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
64
65
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
65
66
  s.add_development_dependency(%q<rcov>, [">= 0"])
@@ -68,6 +69,7 @@ Gem::Specification.new do |s|
68
69
  s.add_dependency(%q<httparty>, [">= 0"])
69
70
  s.add_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
70
71
  s.add_dependency(%q<activesupport>, ["~> 3.0.7"])
72
+ s.add_dependency(%q<chronic>, [">= 0"])
71
73
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
72
74
  s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
73
75
  s.add_dependency(%q<rcov>, [">= 0"])
@@ -77,6 +79,7 @@ Gem::Specification.new do |s|
77
79
  s.add_dependency(%q<httparty>, [">= 0"])
78
80
  s.add_dependency(%q<will_paginate>, ["~> 3.0.pre2"])
79
81
  s.add_dependency(%q<activesupport>, ["~> 3.0.7"])
82
+ s.add_dependency(%q<chronic>, [">= 0"])
80
83
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
81
84
  s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
82
85
  s.add_dependency(%q<rcov>, [">= 0"])
@@ -12,6 +12,17 @@ module Firstfm
12
12
  @name = params[:name]
13
13
  end
14
14
 
15
+ def get_images(page = 1, limit = 50)
16
+ name_params = self.mbid.empty? ? {:artist => self.name} : {:mbid => self.mbid}
17
+ response = self.class.get("/2.0/", {:query => {:method => 'artist.getImages', :page => page, :limit => limit, :api_key => Firstfm::CONFIG['api_key']}.merge(name_params)})
18
+ images_array = (response["lfm"] and response["lfm"]["images"] and response["lfm"]["images"]["image"]) || []
19
+ images = Image.init_from_array(images_array)
20
+ WillPaginate::Collection.create(page, limit) do |pager|
21
+ pager.replace images
22
+ pager.total_entries = response["lfm"]["images"]["total"].to_i rescue 0
23
+ end
24
+ end
25
+
15
26
  def self.search(artist, page = 1, limit = 50)
16
27
  response = get("/2.0/", {:query => {:method => 'artist.search', :artist => artist, :page => page, :limit => limit, :api_key => Firstfm::CONFIG['api_key']}})
17
28
  artists_array = (response and response["lfm"] and response["lfm"]["results"] and response["lfm"]["results"]["artistmatches"] and response["lfm"]["results"]["artistmatches"]["artist"]) || []
data/lib/firstfm/event.rb CHANGED
File without changes
data/lib/firstfm/geo.rb CHANGED
File without changes
@@ -0,0 +1,40 @@
1
+ module Firstfm
2
+
3
+ class Image
4
+
5
+ attr_accessor :title, :url, :dateadded, :format, :owner_name, :owner_url, :sizes, :thumbsup, :thumbsdown, :artist
6
+
7
+ include HTTParty
8
+ base_uri 'ws.audioscrobbler.com'
9
+ format :xml
10
+
11
+ def self.init_from_array(array)
12
+ return [] unless array.is_a?(Array)
13
+ array.inject([]) do |arr, image|
14
+ arr << init_from_hash(image)
15
+ arr
16
+ end
17
+ end
18
+
19
+ def self.init_from_hash(hash)
20
+ return nil unless hash.is_a?(Hash)
21
+ Image.new.tap do |image|
22
+ image.title = hash["title"]
23
+ image.url = hash["url"]
24
+ image.dateadded = Chronic.parse(hash["dateadded"])
25
+ image.format = hash["format"]
26
+ image.sizes = hash["sizes"]["size"]
27
+ end
28
+ end
29
+
30
+ def original
31
+ self.sizes.detect {|s| s.attributes["name"] == "original"}
32
+ end
33
+
34
+ def with_width(width)
35
+ self.sizes.detect {|s| s.attributes["width"].to_i >= width}
36
+ end
37
+
38
+ end
39
+
40
+ end
File without changes
data/lib/firstfm/track.rb CHANGED
File without changes
data/lib/firstfm/venue.rb CHANGED
File without changes
data/lib/firstfm.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'yaml'
2
2
  require 'httparty'
3
+ require 'chronic'
3
4
  require 'will_paginate/collection'
4
5
  require 'firstfm/track'
6
+ require 'firstfm/image'
5
7
  require 'firstfm/artist'
6
8
  require 'firstfm/event'
7
9
  require 'firstfm/location'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/test/helper.rb CHANGED
File without changes
data/test/test_artist.rb CHANGED
File without changes
data/test/test_geo.rb CHANGED
File without changes
data/test/test_track.rb CHANGED
File without changes
data/test/test_venue.rb CHANGED
File without changes
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firstfm
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 23
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
- - 1
8
8
  - 2
9
- version: 0.1.2
9
+ - 0
10
+ version: 0.2.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Aleksandr Lossenko
@@ -14,101 +15,130 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-06-28 00:00:00 +02:00
18
+ date: 2011-07-27 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- prerelease: false
22
22
  type: :runtime
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
28
+ hash: 3
27
29
  segments:
28
30
  - 0
29
31
  version: "0"
30
- requirement: *id001
31
32
  name: httparty
32
- - !ruby/object:Gem::Dependency
33
+ version_requirements: *id001
33
34
  prerelease: false
35
+ - !ruby/object:Gem::Dependency
34
36
  type: :runtime
35
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
36
39
  requirements:
37
40
  - - ~>
38
41
  - !ruby/object:Gem::Version
42
+ hash: 1923831917
39
43
  segments:
40
44
  - 3
41
45
  - 0
42
- - pre2
46
+ - pre
47
+ - 2
43
48
  version: 3.0.pre2
44
- requirement: *id002
45
49
  name: will_paginate
46
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id002
47
51
  prerelease: false
52
+ - !ruby/object:Gem::Dependency
48
53
  type: :runtime
49
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
50
56
  requirements:
51
57
  - - ~>
52
58
  - !ruby/object:Gem::Version
59
+ hash: 9
53
60
  segments:
54
61
  - 3
55
62
  - 0
56
63
  - 7
57
64
  version: 3.0.7
58
- requirement: *id003
59
65
  name: activesupport
66
+ version_requirements: *id003
67
+ prerelease: false
60
68
  - !ruby/object:Gem::Dependency
69
+ type: :runtime
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ name: chronic
80
+ version_requirements: *id004
61
81
  prerelease: false
82
+ - !ruby/object:Gem::Dependency
62
83
  type: :development
63
- version_requirements: &id004 !ruby/object:Gem::Requirement
84
+ requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
64
86
  requirements:
65
87
  - - ~>
66
88
  - !ruby/object:Gem::Version
89
+ hash: 23
67
90
  segments:
68
91
  - 1
69
92
  - 0
70
93
  - 0
71
94
  version: 1.0.0
72
- requirement: *id004
73
95
  name: bundler
74
- - !ruby/object:Gem::Dependency
96
+ version_requirements: *id005
75
97
  prerelease: false
98
+ - !ruby/object:Gem::Dependency
76
99
  type: :development
77
- version_requirements: &id005 !ruby/object:Gem::Requirement
100
+ requirement: &id006 !ruby/object:Gem::Requirement
101
+ none: false
78
102
  requirements:
79
103
  - - ~>
80
104
  - !ruby/object:Gem::Version
105
+ hash: 11
81
106
  segments:
82
107
  - 1
83
108
  - 6
84
109
  - 2
85
110
  version: 1.6.2
86
- requirement: *id005
87
111
  name: jeweler
88
- - !ruby/object:Gem::Dependency
112
+ version_requirements: *id006
89
113
  prerelease: false
114
+ - !ruby/object:Gem::Dependency
90
115
  type: :development
91
- version_requirements: &id006 !ruby/object:Gem::Requirement
116
+ requirement: &id007 !ruby/object:Gem::Requirement
117
+ none: false
92
118
  requirements:
93
119
  - - ">="
94
120
  - !ruby/object:Gem::Version
121
+ hash: 3
95
122
  segments:
96
123
  - 0
97
124
  version: "0"
98
- requirement: *id006
99
125
  name: rcov
100
- - !ruby/object:Gem::Dependency
126
+ version_requirements: *id007
101
127
  prerelease: false
128
+ - !ruby/object:Gem::Dependency
102
129
  type: :development
103
- version_requirements: &id007 !ruby/object:Gem::Requirement
130
+ requirement: &id008 !ruby/object:Gem::Requirement
131
+ none: false
104
132
  requirements:
105
133
  - - ">="
106
134
  - !ruby/object:Gem::Version
135
+ hash: 3
107
136
  segments:
108
137
  - 0
109
138
  version: "0"
110
- requirement: *id007
111
139
  name: fakeweb
140
+ version_requirements: *id008
141
+ prerelease: false
112
142
  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.
113
143
  email: aleksandr.lossenko@gmail.com
114
144
  executables: []
@@ -130,6 +160,7 @@ files:
130
160
  - lib/firstfm/artist.rb
131
161
  - lib/firstfm/event.rb
132
162
  - lib/firstfm/geo.rb
163
+ - lib/firstfm/image.rb
133
164
  - lib/firstfm/location.rb
134
165
  - lib/firstfm/track.rb
135
166
  - lib/firstfm/venue.rb
@@ -157,23 +188,27 @@ rdoc_options: []
157
188
  require_paths:
158
189
  - lib
159
190
  required_ruby_version: !ruby/object:Gem::Requirement
191
+ none: false
160
192
  requirements:
161
193
  - - ">="
162
194
  - !ruby/object:Gem::Version
195
+ hash: 3
163
196
  segments:
164
197
  - 0
165
198
  version: "0"
166
199
  required_rubygems_version: !ruby/object:Gem::Requirement
200
+ none: false
167
201
  requirements:
168
202
  - - ">="
169
203
  - !ruby/object:Gem::Version
204
+ hash: 3
170
205
  segments:
171
206
  - 0
172
207
  version: "0"
173
208
  requirements: []
174
209
 
175
210
  rubyforge_project:
176
- rubygems_version: 1.3.6
211
+ rubygems_version: 1.6.2
177
212
  signing_key:
178
213
  specification_version: 3
179
214
  summary: A ruby wrapper for the Last.fm APIs