youpy-ruby-echonest 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +4 -0
- data/README.rdoc +36 -0
- data/Rakefile +107 -0
- data/lib/echonest/api.rb +194 -0
- data/lib/echonest/connection.rb +78 -0
- data/lib/echonest/element/bar.rb +5 -0
- data/lib/echonest/element/beat.rb +5 -0
- data/lib/echonest/element/loudness.rb +8 -0
- data/lib/echonest/element/section.rb +8 -0
- data/lib/echonest/element/segment.rb +12 -0
- data/lib/echonest/element/tatum.rb +5 -0
- data/lib/echonest/element/value_with_confidence.rb +10 -0
- data/lib/echonest/response.rb +54 -0
- data/lib/echonest/version.rb +3 -0
- data/lib/echonest.rb +16 -0
- data/spec/api_spec.rb +215 -0
- data/spec/echonest_spec.rb +12 -0
- data/spec/fixtures/get_bars.xml +2 -0
- data/spec/fixtures/get_beats.xml +2 -0
- data/spec/fixtures/get_duration.xml +2 -0
- data/spec/fixtures/get_end_of_fade_in.xml +2 -0
- data/spec/fixtures/get_key.xml +2 -0
- data/spec/fixtures/get_loudness.xml +2 -0
- data/spec/fixtures/get_metadata.xml +2 -0
- data/spec/fixtures/get_mode.xml +2 -0
- data/spec/fixtures/get_sections.xml +2 -0
- data/spec/fixtures/get_segments.xml +2 -0
- data/spec/fixtures/get_start_of_fade_out.xml +2 -0
- data/spec/fixtures/get_tatums.xml +2 -0
- data/spec/fixtures/get_tempo.xml +2 -0
- data/spec/fixtures/get_time_signature.xml +2 -0
- data/spec/fixtures/sample.mp3 +0 -0
- data/spec/response_spec.rb +60 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +11 -0
- metadata +102 -0
data/ChangeLog
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
= echonest
|
2
|
+
|
3
|
+
An Ruby interface for Echo Nest Developer API
|
4
|
+
|
5
|
+
== Description
|
6
|
+
|
7
|
+
|
8
|
+
== Installation
|
9
|
+
|
10
|
+
=== Archive Installation
|
11
|
+
|
12
|
+
rake install
|
13
|
+
|
14
|
+
=== Gem Installation
|
15
|
+
|
16
|
+
gem install youpy-echonest
|
17
|
+
|
18
|
+
|
19
|
+
== Features/Problems
|
20
|
+
|
21
|
+
|
22
|
+
== Synopsis
|
23
|
+
|
24
|
+
filename = 'foo.mp3'
|
25
|
+
echonest = Echonest('YOUR_API_KEY')
|
26
|
+
echonest.get_beats(filename)
|
27
|
+
|
28
|
+
== Thanks
|
29
|
+
|
30
|
+
koyachi for original idea <http://gist.github.com/87086>
|
31
|
+
|
32
|
+
== Copyright
|
33
|
+
|
34
|
+
Author:: youpy <youpy@buycheapviagraonlinenow.com>
|
35
|
+
Copyright:: Copyright (c) 2009 youpy
|
36
|
+
License:: MIT
|
data/Rakefile
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/testtask'
|
5
|
+
require 'rake/packagetask'
|
6
|
+
require 'rake/gempackagetask'
|
7
|
+
require 'rake/rdoctask'
|
8
|
+
require 'rake/contrib/sshpublisher'
|
9
|
+
require 'spec/rake/spectask'
|
10
|
+
require 'fileutils'
|
11
|
+
include FileUtils
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift "lib"
|
14
|
+
require "echonest"
|
15
|
+
|
16
|
+
NAME = "ruby-echonest"
|
17
|
+
AUTHOR = "youpy"
|
18
|
+
EMAIL = "youpy@buycheapviagraonlinenow.com"
|
19
|
+
DESCRIPTION = "An Ruby interface for Echo Nest Developer API"
|
20
|
+
RUBYFORGE_PROJECT = "ruby-echonest"
|
21
|
+
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
22
|
+
BIN_FILES = %w( )
|
23
|
+
VERS = Echonest::VERSION
|
24
|
+
|
25
|
+
REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
26
|
+
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
27
|
+
RDOC_OPTS = [
|
28
|
+
'--title', "#{NAME} documentation",
|
29
|
+
"--charset", "utf-8",
|
30
|
+
"--opname", "index.html",
|
31
|
+
"--line-numbers",
|
32
|
+
"--main", "README.rdoc",
|
33
|
+
"--inline-source",
|
34
|
+
]
|
35
|
+
|
36
|
+
task :default => [:spec]
|
37
|
+
task :package => [:clean]
|
38
|
+
|
39
|
+
Spec::Rake::SpecTask.new do |t|
|
40
|
+
t.spec_opts = ['--options', "spec/spec.opts"]
|
41
|
+
t.spec_files = FileList['spec/*_spec.rb']
|
42
|
+
t.rcov = true
|
43
|
+
end
|
44
|
+
|
45
|
+
spec = Gem::Specification.new do |s|
|
46
|
+
s.name = NAME
|
47
|
+
s.version = VERS
|
48
|
+
s.platform = Gem::Platform::RUBY
|
49
|
+
s.has_rdoc = true
|
50
|
+
s.extra_rdoc_files = ["README.rdoc", "ChangeLog"]
|
51
|
+
s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
|
52
|
+
s.summary = DESCRIPTION
|
53
|
+
s.description = DESCRIPTION
|
54
|
+
s.author = AUTHOR
|
55
|
+
s.email = EMAIL
|
56
|
+
s.homepage = HOMEPATH
|
57
|
+
s.executables = BIN_FILES
|
58
|
+
s.rubyforge_project = RUBYFORGE_PROJECT
|
59
|
+
s.bindir = "bin"
|
60
|
+
s.require_path = "lib"
|
61
|
+
s.test_files = Dir["test/test_*.rb"]
|
62
|
+
|
63
|
+
#s.add_dependency('activesupport', '>=1.3.1')
|
64
|
+
#s.required_ruby_version = '>= 1.8.2'
|
65
|
+
|
66
|
+
s.files = %w(README.rdoc ChangeLog Rakefile) +
|
67
|
+
Dir.glob("{bin,doc,spec,test,lib,templates,generator,extras,website,script}/**/*") +
|
68
|
+
Dir.glob("ext/**/*.{h,c,rb}") +
|
69
|
+
Dir.glob("examples/**/*.rb") +
|
70
|
+
Dir.glob("tools/*.rb")
|
71
|
+
|
72
|
+
s.extensions = FileList["ext/**/extconf.rb"].to_a
|
73
|
+
end
|
74
|
+
|
75
|
+
Rake::GemPackageTask.new(spec) do |p|
|
76
|
+
p.need_tar = true
|
77
|
+
p.gem_spec = spec
|
78
|
+
end
|
79
|
+
|
80
|
+
task :install do
|
81
|
+
name = "#{NAME}-#{VERS}.gem"
|
82
|
+
sh %{rake package}
|
83
|
+
sh %{sudo gem install pkg/#{name}}
|
84
|
+
end
|
85
|
+
|
86
|
+
task :uninstall => [:clean] do
|
87
|
+
sh %{sudo gem uninstall #{NAME}}
|
88
|
+
end
|
89
|
+
|
90
|
+
Rake::RDocTask.new do |rdoc|
|
91
|
+
rdoc.rdoc_dir = 'html'
|
92
|
+
rdoc.options += RDOC_OPTS
|
93
|
+
rdoc.template = "resh"
|
94
|
+
#rdoc.template = "#{ENV['template']}.rb" if ENV['template']
|
95
|
+
if ENV['DOC_FILES']
|
96
|
+
rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
|
97
|
+
else
|
98
|
+
rdoc.rdoc_files.include('README', 'ChangeLog')
|
99
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
100
|
+
rdoc.rdoc_files.include('ext/**/*.c')
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
desc "Show information about the gem"
|
105
|
+
task :debug_gem do
|
106
|
+
puts spec.to_ruby
|
107
|
+
end
|
data/lib/echonest/api.rb
ADDED
@@ -0,0 +1,194 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
require 'digest/md5'
|
3
|
+
|
4
|
+
module Echonest
|
5
|
+
class Api
|
6
|
+
VERSION = '3'
|
7
|
+
URL = 'http://developer.echonest.com/api/'
|
8
|
+
|
9
|
+
class Error < StandardError; end
|
10
|
+
|
11
|
+
attr_reader :connection
|
12
|
+
|
13
|
+
def initialize(api_key)
|
14
|
+
@api_key = api_key
|
15
|
+
@connection = Connection.new(URL)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_bars(filename)
|
19
|
+
get_analysys(:get_bars, filename) do |analysis|
|
20
|
+
analysis.map do |bar|
|
21
|
+
Bar.new(bar.text.to_f, bar.attributes['confidence'].to_f)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_beats(filename)
|
27
|
+
get_analysys(:get_beats, filename) do |analysis|
|
28
|
+
analysis.map do |beat|
|
29
|
+
Beat.new(beat.text.to_f, beat.attributes['confidence'].to_f)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_segments(filename)
|
35
|
+
get_analysys(:get_segments, filename) do |analysis|
|
36
|
+
analysis.map do |segment|
|
37
|
+
max_loudness = loudness = nil
|
38
|
+
|
39
|
+
segment.elements['loudness'].map do |db|
|
40
|
+
if db.attributes['type'] == 'max'
|
41
|
+
max_loudness = Loudness.new(db.attributes['time'].to_f, db.text.to_f)
|
42
|
+
else
|
43
|
+
loudness = Loudness.new(db.attributes['time'].to_f, db.text.to_f)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
pitches = segment.elements['pitches'].map do |pitch|
|
48
|
+
pitch.text.to_f
|
49
|
+
end
|
50
|
+
|
51
|
+
timbre = segment.elements['timbre'].map do |coeff|
|
52
|
+
coeff.text.to_f
|
53
|
+
end
|
54
|
+
|
55
|
+
Segment.new(
|
56
|
+
segment.attributes['start'].to_f,
|
57
|
+
segment.attributes['duration'].to_f,
|
58
|
+
loudness,
|
59
|
+
max_loudness,
|
60
|
+
pitches,
|
61
|
+
timbre
|
62
|
+
)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def get_tempo(filename)
|
68
|
+
get_analysys(:get_tempo, filename) do |analysis|
|
69
|
+
analysis[0].text.to_f
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def get_sections(filename)
|
74
|
+
get_analysys(:get_sections, filename) do |analysis|
|
75
|
+
analysis.map do |section|
|
76
|
+
Section.new(
|
77
|
+
section.attributes['start'].to_f,
|
78
|
+
section.attributes['duration'].to_f
|
79
|
+
)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def get_duration(filename)
|
85
|
+
get_analysys(:get_duration, filename) do |analysis|
|
86
|
+
analysis[0].text.to_f
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def get_end_of_fade_in(filename)
|
91
|
+
get_analysys(:get_end_of_fade_in, filename) do |analysis|
|
92
|
+
analysis[0].text.to_f
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def get_key(filename)
|
97
|
+
get_analysys(:get_key, filename) do |analysis|
|
98
|
+
ValueWithConfidence.new(analysis[0].text.to_i, analysis[0].attributes['confidence'].to_f)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def get_loudness(filename)
|
103
|
+
get_analysys(:get_loudness, filename) do |analysis|
|
104
|
+
analysis[0].text.to_f
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def get_metadata(filename)
|
109
|
+
get_analysys(:get_metadata, filename) do |analysis|
|
110
|
+
analysis.inject({}) do |memo, key|
|
111
|
+
memo[key.name] = key.text
|
112
|
+
memo
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def get_mode(filename)
|
118
|
+
get_analysys(:get_mode, filename) do |analysis|
|
119
|
+
ValueWithConfidence.new(analysis[0].text.to_i, analysis[0].attributes['confidence'].to_f)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def get_start_of_fade_out(filename)
|
124
|
+
get_analysys(:get_start_of_fade_out, filename) do |analysis|
|
125
|
+
analysis[0].text.to_f
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def get_tatums(filename)
|
130
|
+
get_analysys(:get_tatums, filename) do |analysis|
|
131
|
+
analysis.map do |tatum|
|
132
|
+
Tatum.new(tatum.text.to_f, tatum.attributes['confidence'].to_f)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def get_time_signature(filename)
|
138
|
+
get_analysys(:get_time_signature, filename) do |analysis|
|
139
|
+
ValueWithConfidence.new(analysis[0].text.to_i, analysis[0].attributes['confidence'].to_f)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def build_params(params)
|
144
|
+
params = params.
|
145
|
+
merge(:version => VERSION).
|
146
|
+
merge(:api_key => @api_key)
|
147
|
+
end
|
148
|
+
|
149
|
+
def get_analysys(method, filename)
|
150
|
+
get_trackinfo(method, filename) do |response|
|
151
|
+
yield response.xml.elements['response/analysis']
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def get_trackinfo(method, filename, &block)
|
156
|
+
content = open(filename).read
|
157
|
+
md5 = Digest::MD5.hexdigest(content)
|
158
|
+
|
159
|
+
begin
|
160
|
+
response = request(method, :md5 => md5)
|
161
|
+
|
162
|
+
block.call(response)
|
163
|
+
rescue Error => e
|
164
|
+
if e.message == 'Invalid parameter: unknown MD5 file hash'
|
165
|
+
upload(filename)
|
166
|
+
sleep 60 # wait for serverside analysis
|
167
|
+
get_trackinfo(method, filename, &block)
|
168
|
+
else
|
169
|
+
raise
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
def upload(filename)
|
175
|
+
content = open(filename).read
|
176
|
+
|
177
|
+
request(:upload, :file => content)
|
178
|
+
end
|
179
|
+
|
180
|
+
def request(name, params)
|
181
|
+
response_body = @connection.__send__(
|
182
|
+
name == :upload ? :post : :get,
|
183
|
+
name,
|
184
|
+
build_params(params))
|
185
|
+
response = Response.new(response_body)
|
186
|
+
|
187
|
+
unless response.success?
|
188
|
+
raise Error.new(response.status.message)
|
189
|
+
end
|
190
|
+
|
191
|
+
response
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
require 'net/https'
|
3
|
+
|
4
|
+
module Echonest
|
5
|
+
class Connection
|
6
|
+
def initialize(base_url)
|
7
|
+
@base_url = base_url
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(resource, args = nil)
|
11
|
+
url = url(resource.to_s)
|
12
|
+
|
13
|
+
if args
|
14
|
+
url.query = query(args)
|
15
|
+
end
|
16
|
+
|
17
|
+
req = Net::HTTP::Get.new(url.request_uri)
|
18
|
+
|
19
|
+
request(req, url)
|
20
|
+
end
|
21
|
+
|
22
|
+
def post(resource, args = nil)
|
23
|
+
url = url(resource.to_s)
|
24
|
+
req = Net::HTTP::Post.new(url.request_uri)
|
25
|
+
|
26
|
+
if args
|
27
|
+
data = post_data(args)
|
28
|
+
req['Content-Length'] = data.size.to_s
|
29
|
+
req['Content-Type'] = "multipart/form-data; boundary=#{boundary}"
|
30
|
+
end
|
31
|
+
|
32
|
+
request(req, url, data)
|
33
|
+
end
|
34
|
+
|
35
|
+
def url(path)
|
36
|
+
URI.join(@base_url, path)
|
37
|
+
end
|
38
|
+
|
39
|
+
def post_data(params)
|
40
|
+
data = params.inject([]) do |memo, param|
|
41
|
+
name, value = param
|
42
|
+
|
43
|
+
memo << "--#{boundary}"
|
44
|
+
|
45
|
+
if name.to_s == 'file'
|
46
|
+
memo << "Content-Disposition: form-data; name=\"#{name}\"; filename=\"file.mp3\""
|
47
|
+
memo << "Content-Type: application/octet-stream"
|
48
|
+
else
|
49
|
+
memo << "Content-Disposition: form-data; name=\"#{name}\""
|
50
|
+
end
|
51
|
+
|
52
|
+
memo << ''
|
53
|
+
memo << value
|
54
|
+
end
|
55
|
+
|
56
|
+
data << "--#{boundary}--"
|
57
|
+
data << ''
|
58
|
+
|
59
|
+
data.join("\r\n")
|
60
|
+
end
|
61
|
+
|
62
|
+
def boundary
|
63
|
+
'----BOUNDARYBOUNDARY----'
|
64
|
+
end
|
65
|
+
|
66
|
+
def request(req, url, data = nil)
|
67
|
+
http = Net::HTTP.new(url.host, url.port)
|
68
|
+
http.use_ssl = (url.port == 443)
|
69
|
+
|
70
|
+
res = http.start() { |conn| conn.request(req, data) }
|
71
|
+
res.body
|
72
|
+
end
|
73
|
+
|
74
|
+
def query(params)
|
75
|
+
params.map { |k,v| "%s=%s" % [CGI.escape(k.to_s), CGI.escape(v.to_s)] }.join("&")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Segment < Section
|
2
|
+
attr_reader :loudness, :max_loudness, :pitches, :timbre
|
3
|
+
|
4
|
+
def initialize(start, duration, loudness, max_loudness, pitches, timbre)
|
5
|
+
super(start, duration)
|
6
|
+
|
7
|
+
@loudness = loudness
|
8
|
+
@max_loudness = max_loudness
|
9
|
+
@pitches = pitches
|
10
|
+
@timbre = timbre
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "rexml/document"
|
2
|
+
|
3
|
+
module Echonest
|
4
|
+
class Response
|
5
|
+
attr_reader :xml
|
6
|
+
|
7
|
+
def initialize(body)
|
8
|
+
@xml = REXML::Document.new(body)
|
9
|
+
end
|
10
|
+
|
11
|
+
def status
|
12
|
+
@status ||= Status.new(@xml)
|
13
|
+
end
|
14
|
+
|
15
|
+
def success?
|
16
|
+
status.code == Status::SUCCESS
|
17
|
+
end
|
18
|
+
|
19
|
+
def query
|
20
|
+
@query ||= Query.new(@xml)
|
21
|
+
end
|
22
|
+
|
23
|
+
class Status
|
24
|
+
UNKNOWN_ERROR = -1
|
25
|
+
SUCCESS = 0
|
26
|
+
INVALID_API_KEY = 1
|
27
|
+
PERMISSION_DENIED = 2
|
28
|
+
RATE_LIMIT_EXCEEDED = 3
|
29
|
+
MISSING_PARAMETER = 4
|
30
|
+
INVALID_PARAMETER = 5
|
31
|
+
|
32
|
+
attr_reader :code, :message
|
33
|
+
|
34
|
+
def initialize(xml)
|
35
|
+
@code = xml.elements['response/status/code'][0].to_s.to_i
|
36
|
+
@message = xml.elements['response/status/message'][0].to_s
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class Query
|
41
|
+
def initialize(xml)
|
42
|
+
@parameters = {}
|
43
|
+
|
44
|
+
xml.elements.each('response/query/parameter') do |parameter|
|
45
|
+
@parameters[parameter.attributes['name'].to_sym] = parameter.text
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def [](parameter_name)
|
50
|
+
@parameters[parameter_name]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/echonest.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'echonest/version'
|
2
|
+
require 'echonest/api'
|
3
|
+
require 'echonest/connection'
|
4
|
+
require 'echonest/response'
|
5
|
+
require 'echonest/element/value_with_confidence'
|
6
|
+
require 'echonest/element/bar'
|
7
|
+
require 'echonest/element/beat'
|
8
|
+
require 'echonest/element/section'
|
9
|
+
require 'echonest/element/segment'
|
10
|
+
require 'echonest/element/loudness'
|
11
|
+
require 'echonest/element/tatum'
|
12
|
+
|
13
|
+
def Echonest(api_key) Echonest::Api.new(api_key) end
|
14
|
+
|
15
|
+
module Echonest
|
16
|
+
end
|
data/spec/api_spec.rb
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__)
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require "echonest"
|
5
|
+
|
6
|
+
include SpecHelper
|
7
|
+
|
8
|
+
describe Echonest::Api do
|
9
|
+
before do
|
10
|
+
@api = Echonest::Api.new('5ZAOMB3BUR8QUN4PE')
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have version" do
|
14
|
+
Echonest::Api::VERSION.should eql('3')
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should build parameters" do
|
18
|
+
params = @api.build_params(:id => 'music://id.echonest.com/~/AR/ARH6W4X1187B99274F')
|
19
|
+
params.keys.size.should eql(3)
|
20
|
+
params[:version].should eql('3')
|
21
|
+
params[:api_key].should eql('5ZAOMB3BUR8QUN4PE')
|
22
|
+
params[:id].should eql('music://id.echonest.com/~/AR/ARH6W4X1187B99274F')
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should call api method" do
|
26
|
+
make_connection_stub(<<EOM)
|
27
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
28
|
+
<response version="3">
|
29
|
+
<status>
|
30
|
+
<code>0</code>
|
31
|
+
<message>Success</message>
|
32
|
+
</status>
|
33
|
+
<query>
|
34
|
+
<parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter>
|
35
|
+
<parameter name="id">music://id.echonest.com/~/AR/ARH6W4X1187B99274F</parameter>
|
36
|
+
</query>
|
37
|
+
<artist>
|
38
|
+
<name>Radiohead</name>
|
39
|
+
<id>music://id.echonest.com/~/AR/ARH6W4X1187B99274F</id>
|
40
|
+
<foreign_id>music://id.echonest.com/5ZAOMB3BUR8QUN4PE/AR/1</foreign_id>
|
41
|
+
<familiarity>0.96974159665</familiarity>
|
42
|
+
</artist>
|
43
|
+
</response>
|
44
|
+
EOM
|
45
|
+
|
46
|
+
response = @api.request(:get_bars, :id => 'music://id.echonest.com/~/AR/ARH6W4X1187B99274F')
|
47
|
+
response.success?.should be_true
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should raise error when api method call was failed" do
|
51
|
+
make_connection_stub(<<EOM)
|
52
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
53
|
+
<response version="3">
|
54
|
+
<status>
|
55
|
+
<code>1</code>
|
56
|
+
<message>Invalid API key</message>
|
57
|
+
</status>
|
58
|
+
<query>
|
59
|
+
<parameter name="api_key">XXXXXX</parameter>
|
60
|
+
<parameter name="id">music://id.echonest.com/~/AR/ARH6W4X1187B99274F</parameter>
|
61
|
+
</query>
|
62
|
+
</response>
|
63
|
+
EOM
|
64
|
+
lambda {
|
65
|
+
@api.request(:get_bars, :id => 'music://id.echonest.com/~/AR/ARH6W4X1187B99274F')
|
66
|
+
}.should raise_error(Echonest::Api::Error, 'Invalid API key')
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should raise error when unknown api method was called" do
|
70
|
+
lambda {
|
71
|
+
@api.get_xxx(:id => 'music://id.echonest.com/~/AR/ARH6W4X1187B99274F')
|
72
|
+
}.should raise_error(NoMethodError)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should get bars" do
|
76
|
+
make_connection_stub(open(fixture('get_bars.xml')).read)
|
77
|
+
|
78
|
+
bars = @api.get_bars(fixture('sample.mp3'))
|
79
|
+
|
80
|
+
bars.should be_an_instance_of(Array)
|
81
|
+
bars.size.should eql(80)
|
82
|
+
bars.first.start.should eql(0.45717)
|
83
|
+
bars.first.confidence.should eql(0.537)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should get beats" do
|
87
|
+
make_connection_stub(open(fixture('get_beats.xml')).read)
|
88
|
+
|
89
|
+
beats = @api.get_beats(fixture('sample.mp3'))
|
90
|
+
|
91
|
+
beats.should be_an_instance_of(Array)
|
92
|
+
beats.size.should eql(375)
|
93
|
+
beats.first.start.should eql(0.45717)
|
94
|
+
beats.first.confidence.should eql(0.823)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should get tempo" do
|
98
|
+
make_connection_stub(open(fixture('get_tempo.xml')).read)
|
99
|
+
|
100
|
+
tempo = @api.get_tempo(fixture('sample.mp3'))
|
101
|
+
|
102
|
+
tempo.should eql(120.163)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should get segments" do
|
106
|
+
make_connection_stub(open(fixture('get_segments.xml')).read)
|
107
|
+
|
108
|
+
segments = @api.get_segments(fixture('sample.mp3'))
|
109
|
+
|
110
|
+
segments.size.should eql(4)
|
111
|
+
|
112
|
+
segment = segments.first
|
113
|
+
|
114
|
+
segment.start.should eql(0.0)
|
115
|
+
segment.duration.should eql(0.421)
|
116
|
+
segment.loudness.time.should eql(0.0)
|
117
|
+
segment.loudness.value.should eql(-60.0)
|
118
|
+
segment.max_loudness.time.should eql(0.0)
|
119
|
+
segment.max_loudness.value.should eql(-60.0)
|
120
|
+
segment.pitches.size.should eql(12)
|
121
|
+
segment.pitches.first.should eql(0.542)
|
122
|
+
segment.timbre.size.should eql(12)
|
123
|
+
segment.timbre.first.should eql(0.0)
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should get sections" do
|
127
|
+
make_connection_stub(open(fixture('get_sections.xml')).read)
|
128
|
+
|
129
|
+
sections = @api.get_sections(fixture('sample.mp3'))
|
130
|
+
|
131
|
+
sections.size.should eql(16)
|
132
|
+
|
133
|
+
section = sections.first
|
134
|
+
|
135
|
+
section.start.should eql(0.0)
|
136
|
+
section.duration.should eql(7.82647)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should get durtion" do
|
140
|
+
make_connection_stub(open(fixture('get_duration.xml')).read)
|
141
|
+
|
142
|
+
@api.get_duration(fixture('sample.mp3')).should eql(194.3493)
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should get end of fade in" do
|
146
|
+
make_connection_stub(open(fixture('get_end_of_fade_in.xml')).read)
|
147
|
+
|
148
|
+
@api.get_end_of_fade_in(fixture('sample.mp3')).should eql(0.421)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should get key" do
|
152
|
+
make_connection_stub(open(fixture('get_key.xml')).read)
|
153
|
+
|
154
|
+
key = @api.get_key(fixture('sample.mp3'))
|
155
|
+
|
156
|
+
key.confidence.should eql(1.0)
|
157
|
+
key.value.should eql(5)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should get loudness" do
|
161
|
+
make_connection_stub(open(fixture('get_loudness.xml')).read)
|
162
|
+
|
163
|
+
loudness = @api.get_loudness(fixture('sample.mp3'))
|
164
|
+
|
165
|
+
loudness.should eql(-8.426)
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should get metadata" do
|
169
|
+
make_connection_stub(open(fixture('get_metadata.xml')).read)
|
170
|
+
|
171
|
+
metadata = @api.get_metadata(fixture('sample.mp3'))
|
172
|
+
|
173
|
+
metadata['genre'].should eql('Boogaloo')
|
174
|
+
metadata['duration'].should eql('194.3493')
|
175
|
+
end
|
176
|
+
|
177
|
+
it "should get mode" do
|
178
|
+
make_connection_stub(open(fixture('get_mode.xml')).read)
|
179
|
+
|
180
|
+
mode = @api.get_mode(fixture('sample.mp3'))
|
181
|
+
|
182
|
+
mode.confidence.should eql(1.0)
|
183
|
+
mode.value.should eql(1)
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should get start of fade out" do
|
187
|
+
make_connection_stub(open(fixture('get_start_of_fade_out.xml')).read)
|
188
|
+
|
189
|
+
@api.get_start_of_fade_out(fixture('sample.mp3')).should eql(182.44499)
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should get tatums" do
|
193
|
+
make_connection_stub(open(fixture('get_tatums.xml')).read)
|
194
|
+
|
195
|
+
tatums = @api.get_tatums(fixture('sample.mp3'))
|
196
|
+
|
197
|
+
tatums.should be_an_instance_of(Array)
|
198
|
+
tatums.size.should eql(757)
|
199
|
+
tatums.first.start.should eql(0.45717)
|
200
|
+
tatums.first.confidence.should eql(1.0)
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should get time_signature" do
|
204
|
+
make_connection_stub(open(fixture('get_time_signature.xml')).read)
|
205
|
+
|
206
|
+
time_signature = @api.get_time_signature(fixture('sample.mp3'))
|
207
|
+
|
208
|
+
time_signature.confidence.should eql(0.064)
|
209
|
+
time_signature.value.should eql(4)
|
210
|
+
end
|
211
|
+
|
212
|
+
def make_connection_stub(xml)
|
213
|
+
@api.connection.stub!(:request).and_return(xml)
|
214
|
+
end
|
215
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__)
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require "echonest"
|
5
|
+
|
6
|
+
include SpecHelper
|
7
|
+
|
8
|
+
describe Echonest do
|
9
|
+
it "should return an instance of Echonest::Api" do
|
10
|
+
Echonest('XXXXXXXX').should be_an_instance_of(Echonest::Api)
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><bar confidence="0.537">0.45717</bar><bar confidence="0.201">2.53058</bar><bar confidence="0.514">4.55475</bar><bar confidence="0.819">6.57259</bar><bar confidence="0.923">8.57879</bar><bar confidence="0.574">10.59756</bar><bar confidence="0.756">12.6043</bar><bar confidence="0.203">14.60555</bar><bar confidence="0.754">16.59055</bar><bar confidence="1.0">18.57677</bar><bar confidence="1.0">20.55684</bar><bar confidence="0.3">22.54074</bar><bar confidence="0.584">24.51661</bar><bar confidence="1.0">26.50641</bar><bar confidence="1.0">28.49072</bar><bar confidence="0.982">30.48332</bar><bar confidence="1.0">32.47166</bar><bar confidence="0.777">38.65162</bar><bar confidence="0.831">40.6402</bar><bar confidence="0.66">42.63228</bar><bar confidence="0.509">44.63888</bar><bar confidence="0.309">46.62947</bar><bar confidence="0.868">48.60873</bar><bar confidence="0.884">50.59985</bar><bar confidence="0.744">52.5869</bar><bar confidence="0.58">54.57072</bar><bar confidence="0.814">56.54202</bar><bar confidence="0.978">58.53608</bar><bar confidence="1.0">60.52887</bar><bar confidence="1.0">62.52642</bar><bar confidence="0.905">70.75634</bar><bar confidence="0.596">72.76161</bar><bar confidence="1.0">74.75724</bar><bar confidence="0.84">76.74967</bar><bar confidence="0.49">78.73407</bar><bar confidence="0.629">80.71777</bar><bar confidence="0.757">82.69579</bar><bar confidence="0.621">84.6767</bar><bar confidence="0.665">86.66112</bar><bar confidence="0.819">88.65031</bar><bar confidence="0.417">90.64465</bar><bar confidence="0.739">92.64206</bar><bar confidence="0.436">94.64574</bar><bar confidence="0.641">96.65579</bar><bar confidence="1.0">98.65178</bar><bar confidence="0.775">112.8689</bar><bar confidence="0.892">114.84605</bar><bar confidence="0.222">116.84035</bar><bar confidence="0.76">118.86875</bar><bar confidence="0.161">120.89512</bar><bar confidence="0.779">122.91559</bar><bar confidence="0.854">124.92457</bar><bar confidence="0.739">126.94511</bar><bar confidence="0.499">128.96584</bar><bar confidence="0.95">130.98184</bar><bar confidence="0.932">132.99673</bar><bar confidence="0.967">135.01125</bar><bar confidence="1.0">137.02043</bar><bar confidence="1.0">139.03263</bar><bar confidence="0.836">147.30194</bar><bar confidence="0.953">149.32278</bar><bar confidence="0.741">151.33967</bar><bar confidence="0.572">153.35657</bar><bar confidence="0.193">155.37261</bar><bar confidence="0.888">157.38522</bar><bar confidence="0.957">159.39417</bar><bar confidence="1.0">161.40787</bar><bar confidence="0.129">163.41594</bar><bar confidence="0.951">165.42143</bar><bar confidence="1.0">167.43692</bar><bar confidence="1.0">169.4461</bar><bar confidence="1.0">171.45653</bar><bar confidence="1.0">173.47484</bar><bar confidence="0.446">175.48194</bar><bar confidence="0.646">177.48631</bar><bar confidence="0.414">179.51877</bar><bar confidence="0.646">181.53095</bar><bar confidence="0.546">183.54715</bar><bar confidence="0.689">185.56236</bar><bar confidence="0.34">187.56796</bar></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="md5">6361bbe3186f31ccc49da04ed3ebb1b8</parameter></query><analysis><beat confidence="0.823">0.45717</beat><beat confidence="0.822">0.97966</beat><beat confidence="0.781">1.50139</beat><beat confidence="0.455">2.01873</beat><beat confidence="0.731">2.53058</beat><beat confidence="0.793">3.03556</beat><beat confidence="0.689">3.54101</beat><beat confidence="0.645">4.04815</beat><beat confidence="0.597">4.55475</beat><beat confidence="0.782">5.06246</beat><beat confidence="0.734">5.56885</beat><beat confidence="0.705">6.07103</beat><beat confidence="0.728">6.57259</beat><beat confidence="0.752">7.07414</beat><beat confidence="0.713">7.57569</beat><beat confidence="0.718">8.07724</beat><beat confidence="0.711">8.57879</beat><beat confidence="0.666">9.08123</beat><beat confidence="0.634">9.58645</beat><beat confidence="0.646">10.09240</beat><beat confidence="0.647">10.59756</beat><beat confidence="0.737">11.10182</beat><beat confidence="0.626">11.60530</beat><beat confidence="0.712">12.10736</beat><beat confidence="0.451">12.60430</beat><beat confidence="0.746">13.10368</beat><beat confidence="0.658">13.60556</beat><beat confidence="0.630">14.10701</beat><beat confidence="0.631">14.60555</beat><beat confidence="0.747">15.10196</beat><beat confidence="0.709">15.59837</beat><beat confidence="0.745">16.09477</beat><beat confidence="0.724">16.59055</beat><beat confidence="0.714">17.08571</beat><beat confidence="0.651">17.58175</beat><beat confidence="0.638">18.07965</beat><beat confidence="0.686">18.57677</beat><beat confidence="0.719">19.07389</beat><beat confidence="0.701">19.57013</beat><beat confidence="0.679">20.06390</beat><beat confidence="0.633">20.55684</beat><beat confidence="0.740">21.05142</beat><beat confidence="0.721">21.54786</beat><beat confidence="0.643">22.04451</beat><beat confidence="0.646">22.54074</beat><beat confidence="0.760">23.03496</beat><beat confidence="0.733">23.52855</beat><beat confidence="0.752">24.02214</beat><beat confidence="0.739">24.51661</beat><beat confidence="0.748">25.01382</beat><beat confidence="0.722">25.51165</beat><beat confidence="0.702">26.00947</beat><beat confidence="0.637">26.50641</beat><beat confidence="0.651">27.00149</beat><beat confidence="0.666">27.49734</beat><beat confidence="0.730">27.99346</beat><beat confidence="0.741">28.49072</beat><beat confidence="0.767">28.98886</beat><beat confidence="0.749">29.48701</beat><beat confidence="0.709">29.98516</beat><beat confidence="0.614">30.48332</beat><beat confidence="0.615">30.98256</beat><beat confidence="0.606">31.47952</beat><beat confidence="0.664">31.97559</beat><beat confidence="0.709">32.47166</beat><beat confidence="0.624">32.96773</beat><beat confidence="0.661">33.47095</beat><beat confidence="0.590">33.97816</beat><beat confidence="0.749">34.48352</beat><beat confidence="0.546">34.98610</beat><beat confidence="0.278">35.48715</beat><beat confidence="0.401">36.23752</beat><beat confidence="0.823">36.71990</beat><beat confidence="0.694">37.19297</beat><beat confidence="0.652">37.67017</beat><beat confidence="0.808">38.15541</beat><beat confidence="0.809">38.65162</beat><beat confidence="0.852">39.15213</beat><beat confidence="0.844">39.65190</beat><beat confidence="0.894">40.14690</beat><beat confidence="0.859">40.64020</beat><beat confidence="0.885">41.13628</beat><beat confidence="0.782">41.63547</beat><beat confidence="0.837">42.13388</beat><beat confidence="0.777">42.63228</beat><beat confidence="0.941">43.13307</beat><beat confidence="0.842">43.63548</beat><beat confidence="0.844">44.13762</beat><beat confidence="0.819">44.63888</beat><beat confidence="0.886">45.13676</beat><beat confidence="0.860">45.63281</beat><beat confidence="0.858">46.12990</beat><beat confidence="0.742">46.62947</beat><beat confidence="0.926">47.12910</beat><beat confidence="0.879">47.62379</beat><beat confidence="0.922">48.11662</beat><beat confidence="0.833">48.60873</beat><beat confidence="0.884">49.10371</beat><beat confidence="0.755">49.60205</beat><beat confidence="0.827">50.10147</beat><beat confidence="0.869">50.59985</beat><beat confidence="0.927">51.09574</beat><beat confidence="0.866">51.59205</beat><beat confidence="0.911">52.08960</beat><beat confidence="0.858">52.58690</beat><beat confidence="0.976">53.08405</beat><beat confidence="0.982">53.58032</beat><beat confidence="0.846">54.07635</beat><beat confidence="0.882">54.57072</beat><beat confidence="0.942">55.06324</beat><beat confidence="0.898">55.55504</beat><beat confidence="0.967">56.04822</beat><beat confidence="0.944">56.54202</beat><beat confidence="0.967">57.03970</beat><beat confidence="0.941">57.53872</beat><beat confidence="0.895">58.03785</beat><beat confidence="0.875">58.53608</beat><beat confidence="0.895">59.03429</beat><beat confidence="0.881">59.53249</beat><beat confidence="0.874">60.03069</beat><beat confidence="0.947">60.52887</beat><beat confidence="0.982">61.02703</beat><beat confidence="0.902">61.52607</beat><beat confidence="0.816">62.02714</beat><beat confidence="0.838">62.52642</beat><beat confidence="0.848">63.02409</beat><beat confidence="0.828">63.52227</beat><beat confidence="0.842">64.02358</beat><beat confidence="0.953">64.52383</beat><beat confidence="1">65.02220</beat><beat confidence="1">65.52047</beat><beat confidence="0.657">66.02096</beat><beat confidence="0.929">66.53093</beat><beat confidence="0.650">67.05185</beat><beat confidence="0">67.57536</beat><beat confidence="0.528">68.32800</beat><beat confidence="0.744">68.81112</beat><beat confidence="0.746">69.28821</beat><beat confidence="0.624">69.77068</beat><beat confidence="0.733">70.25863</beat><beat confidence="0.835">70.75634</beat><beat confidence="0.870">71.26075</beat><beat confidence="0.835">71.76452</beat><beat confidence="0.890">72.26431</beat><beat confidence="0.867">72.76161</beat><beat confidence="0.907">73.25808</beat><beat confidence="0.871">73.75719</beat><beat confidence="0.899">74.25792</beat><beat confidence="0.870">74.75724</beat><beat confidence="0.917">75.25594</beat><beat confidence="0.895">75.75464</beat><beat confidence="0.896">76.25335</beat><beat confidence="0.870">76.74967</beat><beat confidence="0.818">77.24304</beat><beat confidence="0.802">77.73832</beat><beat confidence="0.920">78.23597</beat><beat confidence="0.767">78.73407</beat><beat confidence="0.874">79.23176</beat><beat confidence="0.791">79.72734</beat><beat confidence="0.933">80.22343</beat><beat confidence="0.771">80.71777</beat><beat confidence="0.903">81.21262</beat><beat confidence="0.861">81.70772</beat><beat confidence="0.927">82.20256</beat><beat confidence="0.877">82.69579</beat><beat confidence="0.930">83.18892</beat><beat confidence="0.861">83.68479</beat><beat confidence="0.945">84.18075</beat><beat confidence="0.876">84.67670</beat><beat confidence="0.877">85.17264</beat><beat confidence="0.822">85.66857</beat><beat confidence="0.865">86.16511</beat><beat confidence="0.824">86.66112</beat><beat confidence="0.863">87.15615</beat><beat confidence="0.797">87.65328</beat><beat confidence="0.905">88.15175</beat><beat confidence="0.873">88.65031</beat><beat confidence="0.863">89.14889</beat><beat confidence="0.843">89.64747</beat><beat confidence="0.891">90.14606</beat><beat confidence="0.780">90.64465</beat><beat confidence="0.897">91.14326</beat><beat confidence="0.777">91.64150</beat><beat confidence="0.916">92.14115</beat><beat confidence="0.827">92.64206</beat><beat confidence="0.879">93.14297</beat><beat confidence="0.770">93.64389</beat><beat confidence="0.893">94.14481</beat><beat confidence="0.811">94.64574</beat><beat confidence="0.898">95.14667</beat><beat confidence="0.802">95.64760</beat><beat confidence="0.924">96.15141</beat><beat confidence="0.782">96.65579</beat><beat confidence="0.873">97.15598</beat><beat confidence="0.711">97.65383</beat><beat confidence="0.788">98.15260</beat><beat confidence="0.778">98.65178</beat><beat confidence="0.870">99.15361</beat><beat confidence="0.726">99.65707</beat><beat confidence="0.883">100.15949</beat><beat confidence="0.898">100.66164</beat><beat confidence="0.857">101.16376</beat><beat confidence="0.750">101.66818</beat><beat confidence="0.863">102.17512</beat><beat confidence="0.749">102.68814</beat><beat confidence="0.749">103.20682</beat><beat confidence="0.742">103.74641</beat><beat confidence="0.380">104.30121</beat><beat confidence="0.633">104.86049</beat><beat confidence="0.633">105.42074</beat><beat confidence="0.731">105.96022</beat><beat confidence="0.458">106.48434</beat><beat confidence="0.209">107.00433</beat><beat confidence="0.269">107.53317</beat><beat confidence="0.059">108.07019</beat><beat confidence="0.399">108.60890</beat><beat confidence="0.943">109.91041</beat><beat confidence="0.830">110.40041</beat><beat confidence="0.819">110.88303</beat><beat confidence="0.800">111.36835</beat><beat confidence="0.782">111.86652</beat><beat confidence="0.829">112.36914</beat><beat confidence="0.839">112.86890</beat><beat confidence="0.912">113.36425</beat><beat confidence="0.817">113.85763</beat><beat confidence="0.884">114.35141</beat><beat confidence="0.814">114.84605</beat><beat confidence="0.867">115.34095</beat><beat confidence="0.844">115.83871</beat><beat confidence="0.833">116.33922</beat><beat confidence="0.882">116.84035</beat><beat confidence="0.891">117.34513</beat><beat confidence="0.800">117.85343</beat><beat confidence="0.805">118.36166</beat><beat confidence="0.817">118.86875</beat><beat confidence="0.862">119.37586</beat><beat confidence="0.791">119.88208</beat><beat confidence="0.874">120.38657</beat><beat confidence="0.795">120.89512</beat><beat confidence="0.889">121.40196</beat><beat confidence="0.871">121.90675</beat><beat confidence="0.766">122.41156</beat><beat confidence="0.779">122.91559</beat><beat confidence="0.902">123.41747</beat><beat confidence="0.833">123.91825</beat><beat confidence="0.881">124.42008</beat><beat confidence="0.790">124.92457</beat><beat confidence="0.890">125.42969</beat><beat confidence="0.800">125.93482</beat><beat confidence="0.812">126.43996</beat><beat confidence="0.827">126.94511</beat><beat confidence="0.867">127.45028</beat><beat confidence="0.821">127.95545</beat><beat confidence="0.863">128.46064</beat><beat confidence="0.802">128.96584</beat><beat confidence="0.908">129.47105</beat><beat confidence="0.900">129.97627</beat><beat confidence="0.816">130.47906</beat><beat confidence="0.747">130.98184</beat><beat confidence="0.880">131.48424</beat><beat confidence="0.843">131.98805</beat><beat confidence="0.884">132.49284</beat><beat confidence="0.839">132.99673</beat><beat confidence="0.893">133.50303</beat><beat confidence="0.824">134.00779</beat><beat confidence="0.748">134.51039</beat><beat confidence="0.750">135.01125</beat><beat confidence="0.793">135.51316</beat><beat confidence="0.752">136.01532</beat><beat confidence="0.799">136.51744</beat><beat confidence="0.822">137.02043</beat><beat confidence="0.880">137.52503</beat><beat confidence="0.858">138.02793</beat><beat confidence="0.780">138.52921</beat><beat confidence="0.727">139.03263</beat><beat confidence="0.776">139.53552</beat><beat confidence="0.741">140.03760</beat><beat confidence="0.738">140.53880</beat><beat confidence="0.840">141.04052</beat><beat confidence="0.828">141.54300</beat><beat confidence="0.755">142.05020</beat><beat confidence="0.627">142.56801</beat><beat confidence="0.833">143.08838</beat><beat confidence="0.647">143.60578</beat><beat confidence="0.384">144.11862</beat><beat confidence="0.450">144.87134</beat><beat confidence="0.510">145.35555</beat><beat confidence="0.428">145.83217</beat><beat confidence="0.323">146.31291</beat><beat confidence="0.462">146.80069</beat><beat confidence="0.557">147.30194</beat><beat confidence="0.512">147.81248</beat><beat confidence="0.521">148.32106</beat><beat confidence="0.564">148.82309</beat><beat confidence="0.518">149.32278</beat><beat confidence="0.559">149.82430</beat><beat confidence="0.564">150.32938</beat><beat confidence="0.558">150.83556</beat><beat confidence="0.578">151.33967</beat><beat confidence="0.604">151.84376</beat><beat confidence="0.600">152.34847</beat><beat confidence="0.598">152.85253</beat><beat confidence="0.552">153.35657</beat><beat confidence="0.602">153.86061</beat><beat confidence="0.617">154.36462</beat><beat confidence="0.557">154.86863</beat><beat confidence="0.563">155.37261</beat><beat confidence="0.613">155.87659</beat><beat confidence="0.597">156.38028</beat><beat confidence="0.614">156.88307</beat><beat confidence="0.590">157.38522</beat><beat confidence="0.618">157.88734</beat><beat confidence="0.561">158.38943</beat><beat confidence="0.577">158.89150</beat><beat confidence="0.583">159.39417</beat><beat confidence="0.605">159.89746</beat><beat confidence="0.594">160.40076</beat><beat confidence="0.578">160.90405</beat><beat confidence="0.574">161.40787</beat><beat confidence="0.612">161.91168</beat><beat confidence="0.600">162.41307</beat><beat confidence="0.561">162.91446</beat><beat confidence="0.588">163.41594</beat><beat confidence="0.615">163.91742</beat><beat confidence="0.609">164.41888</beat><beat confidence="0.616">164.92035</beat><beat confidence="0.593">165.42143</beat><beat confidence="0.622">165.92419</beat><beat confidence="0.572">166.42964</beat><beat confidence="0.547">166.93493</beat><beat confidence="0.523">167.43692</beat><beat confidence="0.536">167.93781</beat><beat confidence="0.550">168.44076</beat><beat confidence="0.581">168.94355</beat><beat confidence="0.581">169.44610</beat><beat confidence="0.613">169.94868</beat><beat confidence="0.571">170.45127</beat><beat confidence="0.542">170.95389</beat><beat confidence="0.522">171.45653</beat><beat confidence="0.510">171.96133</beat><beat confidence="0.498">172.46760</beat><beat confidence="0.562">172.97280</beat><beat confidence="0.561">173.47484</beat><beat confidence="0.608">173.97694</beat><beat confidence="0.553">174.48046</beat><beat confidence="0.490">174.98355</beat><beat confidence="0.606">175.48194</beat><beat confidence="0.164">175.97907</beat><beat confidence="0.570">176.47824</beat><beat confidence="0.292">176.98068</beat><beat confidence="0.496">177.48631</beat><beat confidence="0.339">177.99215</beat><beat confidence="0.503">178.49920</beat><beat confidence="0.502">179.00878</beat><beat confidence="0.480">179.51877</beat><beat confidence="0.488">180.02574</beat><beat confidence="0.537">180.52786</beat><beat confidence="0.515">181.02888</beat><beat confidence="0.530">181.53095</beat><beat confidence="0.532">182.03444</beat><beat confidence="0.532">182.53846</beat><beat confidence="0.562">183.04248</beat><beat confidence="0.521">183.54715</beat><beat confidence="0.541">184.05184</beat><beat confidence="0.516">184.55656</beat><beat confidence="0.543">185.06040</beat><beat confidence="0.543">185.56236</beat><beat confidence="0.520">186.06357</beat><beat confidence="0.508">186.56504</beat><beat confidence="0.542">187.06650</beat><beat confidence="0.527">187.56796</beat><beat confidence="0.512">188.06940</beat><beat confidence="0.499">188.57247</beat><beat confidence="0.519">189.07637</beat><beat confidence="0.501">189.57759</beat></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><duration>194.3493</duration></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><end_of_fade_in>0.421</end_of_fade_in></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><key confidence="1.0">5</key></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><loudness>-8.426</loudness></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><status>COMPLETE</status><id>music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</id><md5>cf23d5a124dda204f4f5d505389356fd</md5><artist>Mongo Santamaria</artist><title>Watermelon Man</title><genre>Boogaloo</genre><duration>194.3493</duration><samplerate>44100</samplerate><bitrate>128</bitrate></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><mode confidence="1.0">1</mode></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><section start="0.0" duration="7.82647" /><section start="7.82647" duration="17.43627" /><section start="25.26273" duration="9.72336" /><section start="34.9861" duration="13.13052" /><section start="48.11662" duration="9.17272" /><section start="57.28934" duration="11.28174" /><section start="68.57108" duration="7.43292" /><section start="76.004" duration="32.33554" /><section start="108.33954" duration="7.0014" /><section start="115.34095" duration="18.16208" /><section start="133.50303" duration="9.58536" /><section start="143.08838" duration="5.73471" /><section start="148.82309" duration="17.1011" /><section start="165.92419" duration="12.32135" /><section start="178.24554" duration="9.32241" /><section start="187.56796" duration="6.78134" /></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><segment start="0.0" duration="0.421"><loudness><dB time="0.0">-60.0</dB><dB type="max" time="0.0">-60.0</dB></loudness><pitches><pitch>0.542</pitch><pitch>0.58</pitch><pitch>0.644</pitch><pitch>0.782</pitch><pitch>1.0</pitch><pitch>0.718</pitch><pitch>0.666</pitch><pitch>0.53</pitch><pitch>0.569</pitch><pitch>0.476</pitch><pitch>0.61</pitch><pitch>0.742</pitch></pitches><timbre><coeff>0.0</coeff><coeff>171.13</coeff><coeff>9.469</coeff><coeff>-28.48</coeff><coeff>57.491</coeff><coeff>-50.067</coeff><coeff>14.833</coeff><coeff>5.359</coeff><coeff>-27.228</coeff><coeff>0.973</coeff><coeff>-10.64</coeff><coeff>-7.228</coeff></timbre></segment><segment start="0.421" duration="0.53469"><loudness><dB time="0.0">-60.0</dB><dB type="max" time="0.07546">-24.335</dB></loudness><pitches><pitch>1.0</pitch><pitch>0.093</pitch><pitch>0.057</pitch><pitch>0.119</pitch><pitch>0.109</pitch><pitch>0.715</pitch><pitch>0.076</pitch><pitch>0.031</pitch><pitch>0.035</pitch><pitch>0.093</pitch><pitch>0.027</pitch><pitch>0.051</pitch></pitches><timbre><coeff>25.003</coeff><coeff>-50.111</coeff><coeff>60.119</coeff><coeff>-61.178</coeff><coeff>36.791</coeff><coeff>172.395</coeff><coeff>32.814</coeff><coeff>-15.136</coeff><coeff>-30.754</coeff><coeff>78.289</coeff><coeff>22.658</coeff><coeff>29.984</coeff></timbre></segment><segment start="0.95569" duration="0.51574"><loudness><dB time="0.0">-33.89</dB><dB type="max" time="0.04644">-19.79</dB></loudness><pitches><pitch>0.343</pitch><pitch>0.032</pitch><pitch>0.026</pitch><pitch>0.088</pitch><pitch>0.06</pitch><pitch>1.0</pitch><pitch>0.11</pitch><pitch>0.037</pitch><pitch>0.019</pitch><pitch>0.039</pitch><pitch>0.023</pitch><pitch>0.153</pitch></pitches><timbre><coeff>33.569</coeff><coeff>-81.594</coeff><coeff>32.167</coeff><coeff>33.641</coeff><coeff>3.736</coeff><coeff>71.353</coeff><coeff>-24.661</coeff><coeff>-30.883</coeff><coeff>-2.779</coeff><coeff>-16.379</coeff><coeff>7.974</coeff><coeff>28.023</coeff></timbre></segment><segment start="1.47143" duration="0.27311"><loudness><dB time="0.0">-32.598</dB><dB type="max" time="0.05805">-20.795</dB></loudness><pitches><pitch>0.206</pitch><pitch>0.04</pitch><pitch>0.395</pitch><pitch>0.062</pitch><pitch>0.045</pitch><pitch>1.0</pitch><pitch>0.105</pitch><pitch>0.021</pitch><pitch>0.027</pitch><pitch>0.075</pitch><pitch>0.262</pitch><pitch>0.038</pitch></pitches><timbre><coeff>33.631</coeff><coeff>-83.835</coeff><coeff>25.815</coeff><coeff>44.913</coeff><coeff>37.23</coeff><coeff>37.191</coeff><coeff>-31.029</coeff><coeff>-19.415</coeff><coeff>6.836</coeff><coeff>-23.078</coeff><coeff>10.078</coeff><coeff>32.021</coeff></timbre></segment></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><start_of_fade_out>182.44499</start_of_fade_out></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><tatum confidence="1.0">0.45717</tatum><tatum confidence="0.816">0.71823</tatum><tatum confidence="0.983">0.97966</tatum><tatum confidence="0.709">1.24094</tatum><tatum confidence="1.0">1.50139</tatum><tatum confidence="0.99">1.76065</tatum><tatum confidence="0.769">2.01873</tatum><tatum confidence="0.899">2.27497</tatum><tatum confidence="0.984">2.53058</tatum><tatum confidence="0.868">2.78299</tatum><tatum confidence="1.0">3.03556</tatum><tatum confidence="0.821">3.28802</tatum><tatum confidence="0.974">3.54101</tatum><tatum confidence="0.905">3.79426</tatum><tatum confidence="0.904">4.04815</tatum><tatum confidence="0.81">4.30113</tatum><tatum confidence="0.907">4.55475</tatum><tatum confidence="0.95">4.80874</tatum><tatum confidence="0.979">5.06246</tatum><tatum confidence="0.796">5.31592</tatum><tatum confidence="1.0">5.56885</tatum><tatum confidence="1.0">5.82026</tatum><tatum confidence="0.946">6.07103</tatum><tatum confidence="1.0">6.32181</tatum><tatum confidence="1.0">6.57259</tatum><tatum confidence="1.0">6.82336</tatum><tatum confidence="1.0">7.07414</tatum><tatum confidence="1.0">7.32491</tatum><tatum confidence="1.0">7.57569</tatum><tatum confidence="1.0">7.82647</tatum><tatum confidence="1.0">8.07724</tatum><tatum confidence="1.0">8.32802</tatum><tatum confidence="1.0">8.57879</tatum><tatum confidence="0.799">8.82957</tatum><tatum confidence="0.934">9.08123</tatum><tatum confidence="0.896">9.33353</tatum><tatum confidence="0.903">9.58645</tatum><tatum confidence="0.904">9.83911</tatum><tatum confidence="0.895">10.0924</tatum><tatum confidence="0.849">10.34543</tatum><tatum confidence="0.909">10.59756</tatum><tatum confidence="0.925">10.84969</tatum><tatum confidence="1.0">11.10182</tatum><tatum confidence="0.881">11.35369</tatum><tatum confidence="0.89">11.6053</tatum><tatum confidence="0.866">11.85664</tatum><tatum confidence="0.951">12.10736</tatum><tatum confidence="0.885">12.35619</tatum><tatum confidence="0.784">12.6043</tatum><tatum confidence="0.882">12.85355</tatum><tatum confidence="1.0">13.10368</tatum><tatum confidence="0.856">13.35444</tatum><tatum confidence="0.949">13.60556</tatum><tatum confidence="0.841">13.85642</tatum><tatum confidence="0.847">14.10701</tatum><tatum confidence="0.92">14.35673</tatum><tatum confidence="0.888">14.60555</tatum><tatum confidence="0.929">14.85376</tatum><tatum confidence="1.0">15.10196</tatum><tatum confidence="0.94">15.35016</tatum><tatum confidence="1.0">15.59837</tatum><tatum confidence="0.974">15.84657</tatum><tatum confidence="1.0">16.09477</tatum><tatum confidence="0.97">16.34297</tatum><tatum confidence="1.0">16.59055</tatum><tatum confidence="0.895">16.83813</tatum><tatum confidence="0.953">17.08571</tatum><tatum confidence="0.868">17.3333</tatum><tatum confidence="0.906">17.58175</tatum><tatum confidence="0.882">17.83083</tatum><tatum confidence="0.871">18.07965</tatum><tatum confidence="0.92">18.32821</tatum><tatum confidence="0.925">18.57677</tatum><tatum confidence="0.94">18.82533</tatum><tatum confidence="1.0">19.07389</tatum><tatum confidence="0.911">19.32245</tatum><tatum confidence="0.956">19.57013</tatum><tatum confidence="0.818">19.8172</tatum><tatum confidence="0.897">20.0639</tatum><tatum confidence="0.932">20.31024</tatum><tatum confidence="0.882">20.55684</tatum><tatum confidence="0.898">20.80369</tatum><tatum confidence="1.0">21.05142</tatum><tatum confidence="0.884">21.29977</tatum><tatum confidence="0.992">21.54786</tatum><tatum confidence="0.863">21.79632</tatum><tatum confidence="0.884">22.04451</tatum><tatum confidence="0.984">22.29244</tatum><tatum confidence="0.895">22.54074</tatum><tatum confidence="0.954">22.78816</tatum><tatum confidence="1.0">23.03496</tatum><tatum confidence="0.965">23.28175</tatum><tatum confidence="1.0">23.52855</tatum><tatum confidence="0.99">23.77535</tatum><tatum confidence="1.0">24.02214</tatum><tatum confidence="0.943">24.26894</tatum><tatum confidence="1.0">24.51661</tatum><tatum confidence="0.915">24.76491</tatum><tatum confidence="1.0">25.01382</tatum><tatum confidence="1.0">25.26273</tatum><tatum confidence="1.0">25.51165</tatum><tatum confidence="0.928">25.76056</tatum><tatum confidence="0.948">26.00947</tatum><tatum confidence="0.901">26.25838</tatum><tatum confidence="0.915">26.50641</tatum><tatum confidence="0.862">26.75382</tatum><tatum confidence="0.873">27.00149</tatum><tatum confidence="0.942">27.24942</tatum><tatum confidence="0.929">27.49734</tatum><tatum confidence="0.888">27.74527</tatum><tatum confidence="0.969">27.99346</tatum><tatum confidence="0.926">28.24165</tatum><tatum confidence="1.0">28.49072</tatum><tatum confidence="0.907">28.73979</tatum><tatum confidence="1.0">28.98886</tatum><tatum confidence="1.0">29.23794</tatum><tatum confidence="1.0">29.48701</tatum><tatum confidence="0.916">29.73609</tatum><tatum confidence="0.955">29.98516</tatum><tatum confidence="0.85">30.23424</tatum><tatum confidence="0.863">30.48332</tatum><tatum confidence="0.764">30.73276</tatum><tatum confidence="0.834">30.98256</tatum><tatum confidence="0.821">31.23148</tatum><tatum confidence="0.847">31.47952</tatum><tatum confidence="0.84">31.72756</tatum><tatum confidence="0.888">31.97559</tatum><tatum confidence="0.901">32.22363</tatum><tatum confidence="0.992">32.47166</tatum><tatum confidence="0.837">32.7197</tatum><tatum confidence="0.852">32.96773</tatum><tatum confidence="0.997">33.21841</tatum><tatum confidence="0.903">33.47095</tatum><tatum confidence="0.74">33.7245</tatum><tatum confidence="0.794">33.97816</tatum><tatum confidence="0.785">34.23129</tatum><tatum confidence="0.959">34.48352</tatum><tatum confidence="0.718">34.73512</tatum><tatum confidence="0.69">34.9861</tatum><tatum confidence="0.319">35.23707</tatum><tatum confidence="0.043">35.48715</tatum><tatum confidence="0.579">35.73812</tatum><tatum confidence="0.228">35.98971</tatum><tatum confidence="0.421">36.23752</tatum><tatum confidence="0.974">36.48018</tatum><tatum confidence="0.768">36.7199</tatum><tatum confidence="0.617">36.95713</tatum><tatum confidence="0.662">37.19297</tatum><tatum confidence="0.581">37.43053</tatum><tatum confidence="0.667">37.67017</tatum><tatum confidence="0.715">37.91155</tatum><tatum confidence="0.817">38.15541</tatum><tatum confidence="0.847">38.40246</tatum><tatum confidence="0.877">38.65162</tatum><tatum confidence="0.816">38.90151</tatum><tatum confidence="0.871">39.15213</tatum><tatum confidence="0.804">39.40259</tatum><tatum confidence="0.915">39.6519</tatum><tatum confidence="0.928">39.89971</tatum><tatum confidence="0.937">40.1469</tatum><tatum confidence="0.905">40.39373</tatum><tatum confidence="0.926">40.6402</tatum><tatum confidence="0.779">40.8878</tatum><tatum confidence="0.911">41.13628</tatum><tatum confidence="0.814">41.38601</tatum><tatum confidence="0.844">41.63547</tatum><tatum confidence="0.881">41.88467</tatum><tatum confidence="0.886">42.13388</tatum><tatum confidence="0.851">42.38308</tatum><tatum confidence="0.832">42.63228</tatum><tatum confidence="0.874">42.88237</tatum><tatum confidence="1.0">43.13307</tatum><tatum confidence="0.838">43.38441</tatum><tatum confidence="0.917">43.63548</tatum><tatum confidence="0.801">43.88655</tatum><tatum confidence="0.877">44.13762</tatum><tatum confidence="0.914">44.3887</tatum><tatum confidence="0.873">44.63888</tatum><tatum confidence="0.878">44.88844</tatum><tatum confidence="0.944">45.13676</tatum><tatum confidence="0.814">45.38497</tatum><tatum confidence="0.926">45.63281</tatum><tatum confidence="0.827">45.88092</tatum><tatum confidence="0.903">46.1299</tatum><tatum confidence="0.9">46.3795</tatum><tatum confidence="0.816">46.62947</tatum><tatum confidence="0.83">46.87954</tatum><tatum confidence="0.959">47.1291</tatum><tatum confidence="0.846">47.37688</tatum><tatum confidence="0.964">47.62379</tatum><tatum confidence="0.897">47.87008</tatum><tatum confidence="0.958">48.11662</tatum><tatum confidence="0.86">48.36255</tatum><tatum confidence="0.935">48.60873</tatum><tatum confidence="0.793">48.85578</tatum><tatum confidence="0.909">49.10371</tatum><tatum confidence="0.853">49.35226</tatum><tatum confidence="0.813">49.60205</tatum><tatum confidence="0.826">49.85158</tatum><tatum confidence="0.879">50.10147</tatum><tatum confidence="0.893">50.3511</tatum><tatum confidence="0.933">50.59985</tatum><tatum confidence="0.907">50.84797</tatum><tatum confidence="1.0">51.09574</tatum><tatum confidence="0.933">51.34376</tatum><tatum confidence="0.962">51.59205</tatum><tatum confidence="0.836">51.84095</tatum><tatum confidence="0.953">52.0896</tatum><tatum confidence="1.0">52.33825</tatum><tatum confidence="0.899">52.5869</tatum><tatum confidence="0.869">52.83591</tatum><tatum confidence="1.0">53.08405</tatum><tatum confidence="0.935">53.33219</tatum><tatum confidence="1.0">53.58032</tatum><tatum confidence="0.896">53.82846</tatum><tatum confidence="0.902">54.07635</tatum><tatum confidence="0.982">54.32398</tatum><tatum confidence="0.97">54.57072</tatum><tatum confidence="0.914">54.81685</tatum><tatum confidence="1.0">55.06324</tatum><tatum confidence="0.908">55.30901</tatum><tatum confidence="0.976">55.55504</tatum><tatum confidence="0.974">55.80132</tatum><tatum confidence="1.0">56.04822</tatum><tatum confidence="0.963">56.29512</tatum><tatum confidence="1.0">56.54202</tatum><tatum confidence="0.887">56.79042</tatum><tatum confidence="1.0">57.0397</tatum><tatum confidence="1.0">57.28934</tatum><tatum confidence="1.0">57.53872</tatum><tatum confidence="0.878">57.78873</tatum><tatum confidence="0.95">58.03785</tatum><tatum confidence="0.928">58.28696</tatum><tatum confidence="0.958">58.53608</tatum><tatum confidence="0.899">58.78519</tatum><tatum confidence="0.952">59.03429</tatum><tatum confidence="0.933">59.28339</tatum><tatum confidence="0.946">59.53249</tatum><tatum confidence="0.933">59.78159</tatum><tatum confidence="0.908">60.03069</tatum><tatum confidence="0.938">60.27978</tatum><tatum confidence="1.0">60.52887</tatum><tatum confidence="0.858">60.77795</tatum><tatum confidence="1.0">61.02703</tatum><tatum confidence="0.994">61.27611</tatum><tatum confidence="0.943">61.52607</tatum><tatum confidence="0.879">61.77629</tatum><tatum confidence="0.866">62.02714</tatum><tatum confidence="0.9">62.27709</tatum><tatum confidence="0.92">62.52642</tatum><tatum confidence="0.802">62.77512</tatum><tatum confidence="0.903">63.02409</tatum><tatum confidence="0.843">63.27305</tatum><tatum confidence="0.884">63.52227</tatum><tatum confidence="0.83">63.77274</tatum><tatum confidence="0.892">64.02358</tatum><tatum confidence="0.909">64.27415</tatum><tatum confidence="1.0">64.52383</tatum><tatum confidence="0.822">64.77289</tatum><tatum confidence="1.0">65.0222</tatum><tatum confidence="0.98">65.27152</tatum><tatum confidence="0.798">65.52047</tatum><tatum confidence="0.658">65.77295</tatum><tatum confidence="0.631">66.02096</tatum><tatum confidence="0.822">66.27422</tatum><tatum confidence="0.801">66.53093</tatum><tatum confidence="0.414">66.79031</tatum><tatum confidence="0.362">67.05185</tatum><tatum confidence="0.0">67.31503</tatum><tatum confidence="0.0">67.57536</tatum><tatum confidence="0.472">67.82972</tatum><tatum confidence="0.42">68.08053</tatum><tatum confidence="0.584">68.328</tatum><tatum confidence="1.0">68.57108</tatum><tatum confidence="0.753">68.81112</tatum><tatum confidence="0.586">69.05012</tatum><tatum confidence="0.773">69.28821</tatum><tatum confidence="0.638">69.52839</tatum><tatum confidence="0.687">69.77068</tatum><tatum confidence="0.685">70.01377</tatum><tatum confidence="0.811">70.25863</tatum><tatum confidence="0.877">70.50599</tatum><tatum confidence="0.982">70.75634</tatum><tatum confidence="0.85">71.00831</tatum><tatum confidence="0.955">71.26075</tatum><tatum confidence="0.803">71.51303</tatum><tatum confidence="0.958">71.76452</tatum><tatum confidence="0.92">72.01485</tatum><tatum confidence="1.0">72.26431</tatum><tatum confidence="0.926">72.51314</tatum><tatum confidence="0.992">72.76161</tatum><tatum confidence="0.936">73.00971</tatum><tatum confidence="1.0">73.25808</tatum><tatum confidence="0.953">73.50732</tatum><tatum confidence="1.0">73.75719</tatum><tatum confidence="0.965">74.00769</tatum><tatum confidence="0.994">74.25792</tatum><tatum confidence="0.961">74.5079</tatum><tatum confidence="1.0">74.75724</tatum><tatum confidence="0.957">75.00659</tatum><tatum confidence="1.0">75.25594</tatum><tatum confidence="0.992">75.50529</tatum><tatum confidence="1.0">75.75464</tatum><tatum confidence="1.0">76.004</tatum><tatum confidence="1.0">76.25335</tatum><tatum confidence="0.931">76.50182</tatum><tatum confidence="0.98">76.74967</tatum><tatum confidence="0.789">76.99654</tatum><tatum confidence="0.925">77.24304</tatum><tatum confidence="0.907">77.49068</tatum><tatum confidence="0.932">77.73832</tatum><tatum confidence="0.931">77.98683</tatum><tatum confidence="1.0">78.23597</tatum><tatum confidence="0.967">78.48484</tatum><tatum confidence="0.87">78.73407</tatum><tatum confidence="0.917">78.98305</tatum><tatum confidence="1.0">79.23176</tatum><tatum confidence="0.906">79.47986</tatum><tatum confidence="0.944">79.72734</tatum><tatum confidence="0.989">79.97508</tatum><tatum confidence="1.0">80.22343</tatum><tatum confidence="1.0">80.47091</tatum><tatum confidence="0.879">80.71777</tatum><tatum confidence="0.939">80.9655</tatum><tatum confidence="1.0">81.21262</tatum><tatum confidence="0.863">81.45973</tatum><tatum confidence="0.983">81.70772</tatum><tatum confidence="1.0">81.95545</tatum><tatum confidence="1.0">82.20256</tatum><tatum confidence="0.91">82.44905</tatum><tatum confidence="1.0">82.69579</tatum><tatum confidence="0.865">82.94192</tatum><tatum confidence="1.0">83.18892</tatum><tatum confidence="0.892">83.43654</tatum><tatum confidence="0.965">83.68479</tatum><tatum confidence="1.0">83.93277</tatum><tatum confidence="1.0">84.18075</tatum><tatum confidence="1.0">84.42872</tatum><tatum confidence="0.965">84.6767</tatum><tatum confidence="0.919">84.92467</tatum><tatum confidence="1.0">85.17264</tatum><tatum confidence="0.931">85.42061</tatum><tatum confidence="0.97">85.66857</tatum><tatum confidence="0.984">85.91653</tatum><tatum confidence="0.986">86.16511</tatum><tatum confidence="1.0">86.41342</tatum><tatum confidence="0.95">86.66112</tatum><tatum confidence="0.954">86.90819</tatum><tatum confidence="1.0">87.15615</tatum><tatum confidence="0.905">87.40471</tatum><tatum confidence="0.93">87.65328</tatum><tatum confidence="0.982">87.9022</tatum><tatum confidence="1.0">88.15175</tatum><tatum confidence="1.0">88.40103</tatum><tatum confidence="0.953">88.65031</tatum><tatum confidence="0.931">88.8996</tatum><tatum confidence="1.0">89.14889</tatum><tatum confidence="0.914">89.39818</tatum><tatum confidence="1.0">89.64747</tatum><tatum confidence="1.0">89.89676</tatum><tatum confidence="1.0">90.14606</tatum><tatum confidence="0.885">90.39535</tatum><tatum confidence="0.893">90.64465</tatum><tatum confidence="0.918">90.89395</tatum><tatum confidence="1.0">91.14326</tatum><tatum confidence="0.839">91.39256</tatum><tatum confidence="0.918">91.6415</tatum><tatum confidence="1.0">91.89133</tatum><tatum confidence="1.0">92.14115</tatum><tatum confidence="1.0">92.39161</tatum><tatum confidence="0.939">92.64206</tatum><tatum confidence="0.896">92.89252</tatum><tatum confidence="1.0">93.14297</tatum><tatum confidence="0.891">93.39343</tatum><tatum confidence="0.922">93.64389</tatum><tatum confidence="0.955">93.89435</tatum><tatum confidence="0.986">94.14481</tatum><tatum confidence="0.89">94.39527</tatum><tatum confidence="0.923">94.64574</tatum><tatum confidence="0.94">94.8962</tatum><tatum confidence="1.0">95.14667</tatum><tatum confidence="0.884">95.39714</tatum><tatum confidence="0.93">95.6476</tatum><tatum confidence="0.977">95.89932</tatum><tatum confidence="1.0">96.15141</tatum><tatum confidence="0.905">96.40386</tatum><tatum confidence="0.873">96.65579</tatum><tatum confidence="0.89">96.9062</tatum><tatum confidence="1.0">97.15598</tatum><tatum confidence="0.859">97.4054</tatum><tatum confidence="0.824">97.65383</tatum><tatum confidence="0.896">97.90339</tatum><tatum confidence="0.91">98.1526</tatum><tatum confidence="0.866">98.40206</tatum><tatum confidence="0.898">98.65178</tatum><tatum confidence="0.845">98.90239</tatum><tatum confidence="1.0">99.15361</tatum><tatum confidence="0.854">99.40548</tatum><tatum confidence="0.862">99.65707</tatum><tatum confidence="1.0">99.90841</tatum><tatum confidence="1.0">100.15949</tatum><tatum confidence="0.914">100.41057</tatum><tatum confidence="1.0">100.66164</tatum><tatum confidence="0.836">100.9127</tatum><tatum confidence="0.961">101.16376</tatum><tatum confidence="0.789">101.41507</tatum><tatum confidence="0.856">101.66818</tatum><tatum confidence="0.912">101.92101</tatum><tatum confidence="0.968">102.17512</tatum><tatum confidence="0.762">102.43112</tatum><tatum confidence="0.708">102.68814</tatum><tatum confidence="0.259">102.94618</tatum><tatum confidence="0.0">103.20682</tatum><tatum confidence="0.0">103.47397</tatum><tatum confidence="0.383">103.74641</tatum><tatum confidence="0.364">104.02266</tatum><tatum confidence="0.261">104.30121</tatum><tatum confidence="0.382">104.58036</tatum><tatum confidence="0.396">104.86049</tatum><tatum confidence="0.3">105.14131</tatum><tatum confidence="0.516">105.42074</tatum><tatum confidence="0.566">105.69318</tatum><tatum confidence="0.892">105.96022</tatum><tatum confidence="0.792">106.22338</tatum><tatum confidence="0.497">106.48434</tatum><tatum confidence="0.353">106.74339</tatum><tatum confidence="0.265">107.00433</tatum><tatum confidence="0.279">107.26755</tatum><tatum confidence="0.301">107.53317</tatum><tatum confidence="0.335">107.80068</tatum><tatum confidence="0.153">108.07019</tatum><tatum confidence="0.035">108.33954</tatum><tatum confidence="0.363">108.6089</tatum><tatum confidence="0.438">108.87828</tatum><tatum confidence="0.361">109.14564</tatum><tatum confidence="0.568">109.40632</tatum><tatum confidence="0.617">109.66075</tatum><tatum confidence="0.929">109.91041</tatum><tatum confidence="0.948">110.15669</tatum><tatum confidence="0.822">110.40041</tatum><tatum confidence="0.671">110.64235</tatum><tatum confidence="0.684">110.88303</tatum><tatum confidence="0.699">111.1245</tatum><tatum confidence="0.888">111.36835</tatum><tatum confidence="0.927">111.6165</tatum><tatum confidence="0.94">111.86652</tatum><tatum confidence="0.878">112.11791</tatum><tatum confidence="0.914">112.36914</tatum><tatum confidence="0.901">112.61959</tatum><tatum confidence="0.989">112.8689</tatum><tatum confidence="0.904">113.11732</tatum><tatum confidence="1.0">113.36425</tatum><tatum confidence="0.887">113.61081</tatum><tatum confidence="0.961">113.85763</tatum><tatum confidence="0.95">114.10409</tatum><tatum confidence="1.0">114.35141</tatum><tatum confidence="1.0">114.59873</tatum><tatum confidence="0.987">114.84605</tatum><tatum confidence="0.984">115.09337</tatum><tatum confidence="1.0">115.34095</tatum><tatum confidence="1.0">115.58939</tatum><tatum confidence="1.0">115.83871</tatum><tatum confidence="1.0">116.08865</tatum><tatum confidence="1.0">116.33922</tatum><tatum confidence="1.0">116.58978</tatum><tatum confidence="1.0">116.84035</tatum><tatum confidence="0.868">117.09242</tatum><tatum confidence="0.979">117.34513</tatum><tatum confidence="0.868">117.59909</tatum><tatum confidence="0.918">117.85343</tatum><tatum confidence="0.848">118.10813</tatum><tatum confidence="0.921">118.36166</tatum><tatum confidence="0.936">118.6152</tatum><tatum confidence="0.945">118.86875</tatum><tatum confidence="0.925">119.1223</tatum><tatum confidence="1.0">119.37586</tatum><tatum confidence="0.915">119.62942</tatum><tatum confidence="0.891">119.88208</tatum><tatum confidence="0.782">120.13375</tatum><tatum confidence="0.959">120.38657</tatum><tatum confidence="0.964">120.64066</tatum><tatum confidence="0.899">120.89512</tatum><tatum confidence="0.873">121.14867</tatum><tatum confidence="1.0">121.40196</tatum><tatum confidence="0.896">121.65435</tatum><tatum confidence="1.0">121.90675</tatum><tatum confidence="0.929">122.15915</tatum><tatum confidence="0.88">122.41156</tatum><tatum confidence="0.99">122.66371</tatum><tatum confidence="0.93">122.91559</tatum><tatum confidence="0.951">123.16684</tatum><tatum confidence="1.0">123.41747</tatum><tatum confidence="0.917">123.66773</tatum><tatum confidence="0.982">123.91825</tatum><tatum confidence="0.981">124.16904</tatum><tatum confidence="0.989">124.42008</tatum><tatum confidence="0.943">124.67201</tatum><tatum confidence="1.0">124.92457</tatum><tatum confidence="0.885">125.17713</tatum><tatum confidence="0.99">125.42969</tatum><tatum confidence="0.925">125.68225</tatum><tatum confidence="0.942">125.93482</tatum><tatum confidence="0.935">126.18739</tatum><tatum confidence="0.941">126.43996</tatum><tatum confidence="0.917">126.69254</tatum><tatum confidence="0.952">126.94511</tatum><tatum confidence="0.949">127.19769</tatum><tatum confidence="1.0">127.45028</tatum><tatum confidence="0.96">127.70286</tatum><tatum confidence="0.929">127.95545</tatum><tatum confidence="0.838">128.20804</tatum><tatum confidence="0.945">128.46064</tatum><tatum confidence="0.966">128.71324</tatum><tatum confidence="0.903">128.96584</tatum><tatum confidence="0.94">129.21844</tatum><tatum confidence="1.0">129.47105</tatum><tatum confidence="0.895">129.72366</tatum><tatum confidence="1.0">129.97627</tatum><tatum confidence="0.91">130.22736</tatum><tatum confidence="0.884">130.47906</tatum><tatum confidence="0.973">130.73014</tatum><tatum confidence="0.888">130.98184</tatum><tatum confidence="0.886">131.23291</tatum><tatum confidence="1.0">131.48424</tatum><tatum confidence="0.898">131.73583</tatum><tatum confidence="0.98">131.98805</tatum><tatum confidence="0.91">132.24089</tatum><tatum confidence="0.999">132.49284</tatum><tatum confidence="0.926">132.74478</tatum><tatum confidence="0.965">132.99673</tatum><tatum confidence="0.882">133.24956</tatum><tatum confidence="1.0">133.50303</tatum><tatum confidence="0.973">133.75496</tatum><tatum confidence="0.939">134.00779</tatum><tatum confidence="0.878">134.25972</tatum><tatum confidence="0.856">134.51039</tatum><tatum confidence="0.821">134.76069</tatum><tatum confidence="0.879">135.01125</tatum><tatum confidence="0.812">135.26208</tatum><tatum confidence="0.909">135.51316</tatum><tatum confidence="0.871">135.76424</tatum><tatum confidence="0.89">136.01532</tatum><tatum confidence="0.881">136.26638</tatum><tatum confidence="0.915">136.51744</tatum><tatum confidence="0.876">136.76849</tatum><tatum confidence="0.951">137.02043</tatum><tatum confidence="0.857">137.2721</tatum><tatum confidence="0.968">137.52503</tatum><tatum confidence="0.994">137.77679</tatum><tatum confidence="0.964">138.02793</tatum><tatum confidence="0.848">138.27844</tatum><tatum confidence="0.886">138.52921</tatum><tatum confidence="0.881">138.78061</tatum><tatum confidence="0.859">139.03263</tatum><tatum confidence="0.845">139.28377</tatum><tatum confidence="0.868">139.53552</tatum><tatum confidence="0.835">139.78701</tatum><tatum confidence="0.873">140.0376</tatum><tatum confidence="0.849">140.2882</tatum><tatum confidence="0.844">140.5388</tatum><tatum confidence="0.903">140.78966</tatum><tatum confidence="0.984">141.04052</tatum><tatum confidence="0.804">141.29163</tatum><tatum confidence="0.958">141.543</tatum><tatum confidence="0.907">141.79527</tatum><tatum confidence="0.882">142.0502</tatum><tatum confidence="0.789">142.30796</tatum><tatum confidence="0.685">142.56801</tatum><tatum confidence="0.689">142.82828</tatum><tatum confidence="0.836">143.08838</tatum><tatum confidence="0.59">143.34768</tatum><tatum confidence="0.629">143.60578</tatum><tatum confidence="0.262">143.86298</tatum><tatum confidence="0.0">144.11862</tatum><tatum confidence="0.375">144.37361</tatum><tatum confidence="0.302">144.62477</tatum><tatum confidence="0.622">144.87134</tatum><tatum confidence="1.0">145.11466</tatum><tatum confidence="0.694">145.35555</tatum><tatum confidence="0.491">145.59419</tatum><tatum confidence="0.64">145.83217</tatum><tatum confidence="0.53">146.07095</tatum><tatum confidence="0.509">146.31291</tatum><tatum confidence="0.514">146.55524</tatum><tatum confidence="0.725">146.80069</tatum><tatum confidence="0.811">147.04951</tatum><tatum confidence="0.938">147.30194</tatum><tatum confidence="0.762">147.55665</tatum><tatum confidence="0.809">147.81248</tatum><tatum confidence="0.714">148.06762</tatum><tatum confidence="0.887">148.32106</tatum><tatum confidence="0.964">148.5727</tatum><tatum confidence="0.917">148.82309</tatum><tatum confidence="0.884">149.07311</tatum><tatum confidence="0.891">149.32278</tatum><tatum confidence="0.765">149.57296</tatum><tatum confidence="0.888">149.8243</tatum><tatum confidence="0.929">150.07653</tatum><tatum confidence="0.928">150.32938</tatum><tatum confidence="0.916">150.58261</tatum><tatum confidence="0.928">150.83556</tatum><tatum confidence="0.923">151.08762</tatum><tatum confidence="0.955">151.33967</tatum><tatum confidence="0.945">151.59172</tatum><tatum confidence="1.0">151.84376</tatum><tatum confidence="0.933">152.09643</tatum><tatum confidence="1.0">152.34847</tatum><tatum confidence="0.872">152.6005</tatum><tatum confidence="0.961">152.85253</tatum><tatum confidence="1.0">153.10455</tatum><tatum confidence="0.937">153.35657</tatum><tatum confidence="0.951">153.60859</tatum><tatum confidence="1.0">153.86061</tatum><tatum confidence="0.952">154.11262</tatum><tatum confidence="1.0">154.36462</tatum><tatum confidence="0.925">154.61663</tatum><tatum confidence="0.94">154.86863</tatum><tatum confidence="1.0">155.12062</tatum><tatum confidence="0.957">155.37261</tatum><tatum confidence="0.983">155.6246</tatum><tatum confidence="1.0">155.87659</tatum><tatum confidence="0.917">156.12857</tatum><tatum confidence="1.0">156.38028</tatum><tatum confidence="1.0">156.63199</tatum><tatum confidence="1.0">156.88307</tatum><tatum confidence="0.994">157.13415</tatum><tatum confidence="1.0">157.38522</tatum><tatum confidence="0.917">157.63628</tatum><tatum confidence="0.993">157.88734</tatum><tatum confidence="0.933">158.13839</tatum><tatum confidence="0.942">158.38943</tatum><tatum confidence="0.953">158.64047</tatum><tatum confidence="0.952">158.8915</tatum><tatum confidence="0.923">159.14252</tatum><tatum confidence="0.963">159.39417</tatum><tatum confidence="0.998">159.64581</tatum><tatum confidence="1.0">159.89746</tatum><tatum confidence="0.996">160.14911</tatum><tatum confidence="0.999">160.40076</tatum><tatum confidence="0.89">160.6524</tatum><tatum confidence="0.918">160.90405</tatum><tatum confidence="1.0">161.15596</tatum><tatum confidence="0.957">161.40787</tatum><tatum confidence="0.969">161.65977</tatum><tatum confidence="1.0">161.91168</tatum><tatum confidence="0.939">162.16269</tatum><tatum confidence="1.0">162.41307</tatum><tatum confidence="0.961">162.66345</tatum><tatum confidence="0.918">162.91446</tatum><tatum confidence="1.0">163.1652</tatum><tatum confidence="0.975">163.41594</tatum><tatum confidence="0.975">163.66668</tatum><tatum confidence="1.0">163.91742</tatum><tatum confidence="0.944">164.16815</tatum><tatum confidence="1.0">164.41888</tatum><tatum confidence="0.999">164.66962</tatum><tatum confidence="1.0">164.92035</tatum><tatum confidence="0.943">165.17107</tatum><tatum confidence="1.0">165.42143</tatum><tatum confidence="0.901">165.67268</tatum><tatum confidence="1.0">165.92419</tatum><tatum confidence="1.0">166.1766</tatum><tatum confidence="0.972">166.42964</tatum><tatum confidence="0.884">166.68242</tatum><tatum confidence="0.914">166.93493</tatum><tatum confidence="0.939">167.18655</tatum><tatum confidence="0.884">167.43692</tatum><tatum confidence="0.874">167.68755</tatum><tatum confidence="0.899">167.93781</tatum><tatum confidence="0.967">168.18897</tatum><tatum confidence="0.919">168.44076</tatum><tatum confidence="0.885">168.69228</tatum><tatum confidence="0.957">168.94355</tatum><tatum confidence="0.988">169.19482</tatum><tatum confidence="1.0">169.4461</tatum><tatum confidence="0.93">169.69739</tatum><tatum confidence="1.0">169.94868</tatum><tatum confidence="1.0">170.19997</tatum><tatum confidence="0.948">170.45127</tatum><tatum confidence="0.877">170.70258</tatum><tatum confidence="0.9">170.95389</tatum><tatum confidence="0.872">171.20521</tatum><tatum confidence="0.872">171.45653</tatum><tatum confidence="0.806">171.70875</tatum><tatum confidence="0.846">171.96133</tatum><tatum confidence="0.857">172.21428</tatum><tatum confidence="0.841">172.4676</tatum><tatum confidence="0.823">172.72065</tatum><tatum confidence="0.929">172.9728</tatum><tatum confidence="0.872">173.22369</tatum><tatum confidence="0.949">173.47484</tatum><tatum confidence="0.796">173.72563</tatum><tatum confidence="1.0">173.97694</tatum><tatum confidence="1.0">174.22851</tatum><tatum confidence="0.918">174.48046</tatum><tatum confidence="0.833">174.73213</tatum><tatum confidence="0.809">174.98355</tatum><tatum confidence="0.835">175.23319</tatum><tatum confidence="0.919">175.48194</tatum><tatum confidence="0.563">175.73007</tatum><tatum confidence="0.545">175.97907</tatum><tatum confidence="0.399">176.22835</tatum><tatum confidence="0.747">176.47824</tatum><tatum confidence="0.491">176.72902</tatum><tatum confidence="0.435">176.98068</tatum><tatum confidence="0.913">177.23387</tatum><tatum confidence="0.781">177.48631</tatum><tatum confidence="0.832">177.73928</tatum><tatum confidence="0.73">177.99215</tatum><tatum confidence="0.967">178.24554</tatum><tatum confidence="0.874">178.4992</tatum><tatum confidence="0.934">178.75349</tatum><tatum confidence="0.885">179.00878</tatum><tatum confidence="0.846">179.26417</tatum><tatum confidence="0.831">179.51877</tatum><tatum confidence="0.914">179.77283</tatum><tatum confidence="0.861">180.02574</tatum><tatum confidence="1.0">180.27711</tatum><tatum confidence="0.905">180.52786</tatum><tatum confidence="0.978">180.77824</tatum><tatum confidence="0.931">181.02888</tatum><tatum confidence="1.0">181.27979</tatum><tatum confidence="0.91">181.53095</tatum><tatum confidence="1.0">181.78301</tatum><tatum confidence="0.928">182.03444</tatum><tatum confidence="1.0">182.28676</tatum><tatum confidence="0.928">182.53846</tatum><tatum confidence="1.0">182.79015</tatum><tatum confidence="0.999">183.04248</tatum><tatum confidence="1.0">183.29481</tatum><tatum confidence="0.931">183.54715</tatum><tatum confidence="1.0">183.79949</tatum><tatum confidence="0.969">184.05184</tatum><tatum confidence="1.0">184.3042</tatum><tatum confidence="0.919">184.55656</tatum><tatum confidence="1.0">184.80893</tatum><tatum confidence="0.987">185.0604</tatum><tatum confidence="1.0">185.31125</tatum><tatum confidence="0.962">185.56236</tatum><tatum confidence="1.0">185.81283</tatum><tatum confidence="0.947">186.06357</tatum><tatum confidence="1.0">186.31431</tatum><tatum confidence="0.923">186.56504</tatum><tatum confidence="1.0">186.81577</tatum><tatum confidence="1.0">187.0665</tatum><tatum confidence="1.0">187.31723</tatum><tatum confidence="0.968">187.56796</tatum><tatum confidence="1.0">187.81868</tatum><tatum confidence="0.953">188.0694</tatum><tatum confidence="1.0">188.32075</tatum><tatum confidence="0.914">188.57247</tatum><tatum confidence="0.99">188.82455</tatum><tatum confidence="0.968">189.07637</tatum><tatum confidence="1.0">189.32729</tatum><tatum confidence="0.977">189.57759</tatum><tatum confidence="0.99">189.82726</tatum><tatum confidence="0.859">190.07719</tatum></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">ACUHDSIWZSTDVWVHP</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><tempo confidence="0.723">120.163</tempo></analysis></response>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<response version="3"><status><code>0</code><message>Success</message></status><query><parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter><parameter name="id">music://id.echonest.com/~/TR/TRLFPPE11C3F10749F</parameter></query><analysis><time_signature confidence="0.064">4</time_signature></analysis></response>
|
Binary file
|
@@ -0,0 +1,60 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__)
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require "echonest"
|
5
|
+
|
6
|
+
include SpecHelper
|
7
|
+
|
8
|
+
describe Echonest::Response do
|
9
|
+
before do
|
10
|
+
@success = Echonest::Response.new(<<EOM)
|
11
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
12
|
+
<response version="3">
|
13
|
+
<status>
|
14
|
+
<code>0</code>
|
15
|
+
<message>Success</message>
|
16
|
+
</status>
|
17
|
+
<query>
|
18
|
+
<parameter name="api_key">5ZAOMB3BUR8QUN4PE</parameter>
|
19
|
+
<parameter name="id">music://id.echonest.com/~/AR/ARH6W4X1187B99274F</parameter>
|
20
|
+
</query>
|
21
|
+
<artist>
|
22
|
+
<name>Radiohead</name>
|
23
|
+
<id>music://id.echonest.com/~/AR/ARH6W4X1187B99274F</id>
|
24
|
+
<foreign_id>music://id.echonest.com/5ZAOMB3BUR8QUN4PE/AR/1</foreign_id>
|
25
|
+
<familiarity>0.96974159665</familiarity>
|
26
|
+
</artist>
|
27
|
+
</response>
|
28
|
+
EOM
|
29
|
+
|
30
|
+
@failure = Echonest::Response.new(<<EOM)
|
31
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
32
|
+
<response version="3">
|
33
|
+
<status>
|
34
|
+
<code>1</code>
|
35
|
+
<message>Invalid API key</message>
|
36
|
+
</status>
|
37
|
+
<query>
|
38
|
+
<parameter name="api_key">XXXXXX</parameter>
|
39
|
+
<parameter name="id">music://id.echonest.com/~/AR/ARH6W4X1187B99274F</parameter>
|
40
|
+
</query>
|
41
|
+
</response>
|
42
|
+
EOM
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return status" do
|
46
|
+
@success.status.code.should eql(0)
|
47
|
+
@success.status.message.should eql('Success')
|
48
|
+
@success.success?.should be_true
|
49
|
+
@success.xml.elements['response/artist/name'][0].to_s.should eql('Radiohead')
|
50
|
+
|
51
|
+
@failure.status.code.should eql(1)
|
52
|
+
@failure.status.message.should eql('Invalid API key')
|
53
|
+
@failure.success?.should be_false
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should return query" do
|
57
|
+
@success.query[:id].should eql('music://id.echonest.com/~/AR/ARH6W4X1187B99274F')
|
58
|
+
@success.query[:api_key].should eql('5ZAOMB3BUR8QUN4PE')
|
59
|
+
end
|
60
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: youpy-ruby-echonest
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- youpy
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-06-30 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: An Ruby interface for Echo Nest Developer API
|
17
|
+
email: youpy@buycheapviagraonlinenow.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README.rdoc
|
24
|
+
- ChangeLog
|
25
|
+
files:
|
26
|
+
- README.rdoc
|
27
|
+
- ChangeLog
|
28
|
+
- Rakefile
|
29
|
+
- spec/api_spec.rb
|
30
|
+
- spec/echonest_spec.rb
|
31
|
+
- spec/fixtures
|
32
|
+
- spec/fixtures/get_bars.xml
|
33
|
+
- spec/fixtures/get_beats.xml
|
34
|
+
- spec/fixtures/get_duration.xml
|
35
|
+
- spec/fixtures/get_end_of_fade_in.xml
|
36
|
+
- spec/fixtures/get_key.xml
|
37
|
+
- spec/fixtures/get_loudness.xml
|
38
|
+
- spec/fixtures/get_metadata.xml
|
39
|
+
- spec/fixtures/get_mode.xml
|
40
|
+
- spec/fixtures/get_sections.xml
|
41
|
+
- spec/fixtures/get_segments.xml
|
42
|
+
- spec/fixtures/get_start_of_fade_out.xml
|
43
|
+
- spec/fixtures/get_tatums.xml
|
44
|
+
- spec/fixtures/get_tempo.xml
|
45
|
+
- spec/fixtures/get_time_signature.xml
|
46
|
+
- spec/fixtures/sample.mp3
|
47
|
+
- spec/response_spec.rb
|
48
|
+
- spec/spec.opts
|
49
|
+
- spec/spec_helper.rb
|
50
|
+
- lib/echonest
|
51
|
+
- lib/echonest/api.rb
|
52
|
+
- lib/echonest/connection.rb
|
53
|
+
- lib/echonest/element
|
54
|
+
- lib/echonest/element/bar.rb
|
55
|
+
- lib/echonest/element/beat.rb
|
56
|
+
- lib/echonest/element/loudness.rb
|
57
|
+
- lib/echonest/element/section.rb
|
58
|
+
- lib/echonest/element/segment.rb
|
59
|
+
- lib/echonest/element/tatum.rb
|
60
|
+
- lib/echonest/element/value_with_confidence.rb
|
61
|
+
- lib/echonest/response.rb
|
62
|
+
- lib/echonest/version.rb
|
63
|
+
- lib/echonest.rb
|
64
|
+
has_rdoc: true
|
65
|
+
homepage: http://ruby-echonest.rubyforge.org
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options:
|
68
|
+
- --title
|
69
|
+
- ruby-echonest documentation
|
70
|
+
- --charset
|
71
|
+
- utf-8
|
72
|
+
- --opname
|
73
|
+
- index.html
|
74
|
+
- --line-numbers
|
75
|
+
- --main
|
76
|
+
- README.rdoc
|
77
|
+
- --inline-source
|
78
|
+
- --exclude
|
79
|
+
- ^(examples|extras)/
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: "0"
|
87
|
+
version:
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: "0"
|
93
|
+
version:
|
94
|
+
requirements: []
|
95
|
+
|
96
|
+
rubyforge_project: ruby-echonest
|
97
|
+
rubygems_version: 1.2.0
|
98
|
+
signing_key:
|
99
|
+
specification_version: 2
|
100
|
+
summary: An Ruby interface for Echo Nest Developer API
|
101
|
+
test_files: []
|
102
|
+
|