next-big-sound 0.3.5 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/VERSION +1 -1
- data/lib/artist.rb +2 -2
- data/lib/memoize.rb +30 -0
- data/lib/metric.rb +10 -3
- data/lib/next-big-sound.rb +13 -2
- data/lib/search.rb +6 -1
- data/next-big-sound.gemspec +3 -2
- metadata +5 -4
data/.gitignore
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/artist.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module NBS
|
2
2
|
class Artist
|
3
|
-
|
3
|
+
|
4
4
|
attr_accessor :artist_id, :name, :xml, :options
|
5
5
|
|
6
6
|
PROFILES = %w(all myspace lastfm ilike facebook twitter youtube reverbnation ourstage soundcloud purevolume bebo virb amiestreet jamlegend vimeo)
|
@@ -37,6 +37,6 @@ module NBS
|
|
37
37
|
metrics = prof.metrics(args[0],args[1])
|
38
38
|
return metrics[splits[1].downcase.to_s].data_points
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
end
|
42
42
|
end
|
data/lib/memoize.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'memcache'
|
2
|
+
module NBS
|
3
|
+
module MemcachedMemoize
|
4
|
+
def remember(name)
|
5
|
+
|
6
|
+
original_method = instance_method(name)
|
7
|
+
define_method(name) do |*args|
|
8
|
+
|
9
|
+
if defined?(KEYSTORE)
|
10
|
+
key = args.collect {|c| c.to_s }.join("_").gsub(" ","_")
|
11
|
+
key+=name.to_s
|
12
|
+
puts key
|
13
|
+
if KEYSTORE.get(key)!=nil
|
14
|
+
puts "it was memorized"
|
15
|
+
Marshal.restore(KEYSTORE.get(key))
|
16
|
+
else
|
17
|
+
puts "it had to be memorized"
|
18
|
+
bound_method = original_method.bind(self)
|
19
|
+
#puts Marshal.dump(bound_method.call(*args))
|
20
|
+
KEYSTORE.set(key,Marshal.dump(bound_method.call(*args)))
|
21
|
+
return Marshal.restore(KEYSTORE.get(key))
|
22
|
+
end
|
23
|
+
else
|
24
|
+
bound_method = original_method.bind(self)
|
25
|
+
bound_method.call(*args)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/metric.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
module NBS
|
2
2
|
|
3
3
|
class Metric
|
4
|
-
|
4
|
+
extend NBS::MemcachedMemoize
|
5
|
+
|
5
6
|
attr_accessor :artist_id,:service_type,:metric,:sdate,:edate, :xml
|
7
|
+
|
8
|
+
|
6
9
|
def initialize(artist_id,service_type,metric,sdate,edate)
|
7
10
|
self.artist_id = artist_id
|
8
11
|
self.service_type = service_type
|
@@ -10,7 +13,7 @@ module NBS
|
|
10
13
|
self.sdate = Date.parse(sdate.to_s)
|
11
14
|
self.edate = Date.parse(edate.to_s)
|
12
15
|
end
|
13
|
-
def fetch
|
16
|
+
def fetch(myopts_test={})
|
14
17
|
options = {"service"=>self.service_type,"metric"=>self.metric,"start"=>self.sdate.to_s,"end"=>self.edate.to_s,"artistID"=>self.artist_id,"apiKey"=>$nbs_api_key,"format"=>"xml"}
|
15
18
|
puts "#{NBS::NBS_CONFIG["base_url"]}getDataForArtist?#{options.to_url_params}"
|
16
19
|
statsxml = Net::HTTP.get(URI.parse("#{NBS::NBS_CONFIG["base_url"]}getDataForArtist?#{options.to_url_params}")).to_s
|
@@ -27,14 +30,18 @@ module NBS
|
|
27
30
|
return []
|
28
31
|
end
|
29
32
|
end
|
33
|
+
# delivers the datapoints as a Date keyed hash.
|
34
|
+
#def date_points_hash
|
35
|
+
#end
|
30
36
|
#def xml_data_points
|
31
37
|
#to_hash["Profiles"][0]["Profile"][0]["DataPoint"].to_xml
|
32
38
|
#end
|
33
39
|
def to_xml
|
34
|
-
self.xml ||= fetch
|
40
|
+
self.xml ||= fetch({"service"=>self.service_type,"metric"=>self.metric,"start"=>self.sdate.to_s,"end"=>self.edate.to_s,"artistID"=>self.artist_id,"apiKey"=>$nbs_api_key,"format"=>"xml"})
|
35
41
|
end
|
36
42
|
def to_hash
|
37
43
|
Hash.from_xml(to_xml)
|
38
44
|
end
|
45
|
+
remember :fetch
|
39
46
|
end
|
40
47
|
end
|
data/lib/next-big-sound.rb
CHANGED
@@ -2,7 +2,8 @@ module NBS
|
|
2
2
|
|
3
3
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib','config'))
|
4
4
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
5
|
-
|
5
|
+
require 'rubygems'
|
6
|
+
require 'memoize'
|
6
7
|
require 'yaml'
|
7
8
|
require 'hash_extension'
|
8
9
|
require 'search'
|
@@ -11,13 +12,22 @@ module NBS
|
|
11
12
|
require 'metric'
|
12
13
|
require 'datapoint'
|
13
14
|
|
15
|
+
|
16
|
+
|
14
17
|
#puts "#{File.dirname(__FILE__)}/config.yml"
|
15
18
|
NBS_CONFIG = YAML.load_file("#{File.dirname(__FILE__)}/config.yml")
|
16
19
|
|
20
|
+
#CACHE_ENABLED
|
21
|
+
#KEYSTORE = nil
|
22
|
+
|
23
|
+
|
17
24
|
class Base
|
18
|
-
|
25
|
+
|
26
|
+
extend NBS::MemcachedMemoize
|
27
|
+
|
19
28
|
def initialize(api_key)
|
20
29
|
$nbs_api_key = api_key
|
30
|
+
#puts CACHE_ENABLED
|
21
31
|
end
|
22
32
|
# return a search object that you can manipulate
|
23
33
|
# if you prefer to just use the xml simply type to_xml
|
@@ -27,5 +37,6 @@ module NBS
|
|
27
37
|
search.fetch
|
28
38
|
return search
|
29
39
|
end
|
40
|
+
remember :search
|
30
41
|
end
|
31
42
|
end
|
data/lib/search.rb
CHANGED
@@ -4,7 +4,10 @@ module NBS
|
|
4
4
|
require 'uri'
|
5
5
|
|
6
6
|
class Search
|
7
|
-
|
7
|
+
|
8
|
+
#extend NBS::MemcachedMemoize
|
9
|
+
|
10
|
+
|
8
11
|
attr_accessor :options, :query, :api_key,:base_url, :xml
|
9
12
|
|
10
13
|
def initialize(query, options={})
|
@@ -27,5 +30,7 @@ module NBS
|
|
27
30
|
def to_xml
|
28
31
|
self.xml ||=fetch
|
29
32
|
end
|
33
|
+
|
34
|
+
#remember :fetch
|
30
35
|
end
|
31
36
|
end
|
data/next-big-sound.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{next-big-sound}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["jeff durand"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-05}
|
13
13
|
s.description = %q{A simple wrapper class for the Next Big Sound api. docs for the api can be found at api.nextbigsound.com}
|
14
14
|
s.email = %q{jeff.durand@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
"lib/config.yml",
|
29
29
|
"lib/datapoint.rb",
|
30
30
|
"lib/hash_extension.rb",
|
31
|
+
"lib/memoize.rb",
|
31
32
|
"lib/metric.rb",
|
32
33
|
"lib/next-big-sound.rb",
|
33
34
|
"lib/search.rb",
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 4
|
8
|
+
- 0
|
9
|
+
version: 0.4.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- jeff durand
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-05 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -50,6 +50,7 @@ files:
|
|
50
50
|
- lib/config.yml
|
51
51
|
- lib/datapoint.rb
|
52
52
|
- lib/hash_extension.rb
|
53
|
+
- lib/memoize.rb
|
53
54
|
- lib/metric.rb
|
54
55
|
- lib/next-big-sound.rb
|
55
56
|
- lib/search.rb
|