echonest-ruby-api 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 83395d5b165235fe082355128529fafc5b2463b7
4
- data.tar.gz: 83acf854549a05ad5c6cd554dbf8753aeda87ce4
3
+ metadata.gz: f288056fa5a3353428271b37081c449ec7032f7c
4
+ data.tar.gz: e12695b8c5b341a27135ee642f9f2529cbbfc33f
5
5
  SHA512:
6
- metadata.gz: bb2fa030cec349a544883e0d5338ac07b999e26b8b7bfa39035d27d084ab952030fcfedf26c5194518a6bc67a186bf996f1a6a43c7752cea947b00072214699d
7
- data.tar.gz: 6d2c4e6851f7aadf2d65ee658f0cd7cdbed6e8ecc0523f44cedc72784a76a98752bc5b9b5dfd229890817a88421c407b9b76c4351ba7a34fea5a0f30481cc9f2
6
+ metadata.gz: 09b2ba497b597325561b85270b01be58df358ae6d34d72ad7e4d87f5470141431134b6b9213e78fabf64280a4aff1bdc49247de91462a8c887a58d1e551af0e2
7
+ data.tar.gz: 10bcb241f1e2cba792063962ef04043f97b494ec1a44cda8008861f98ddc3a94c47f27995b923c27286fb8c08eae96f834e6e0d44dc2ecd626c192d629d86400
data/.gitignore CHANGED
@@ -9,3 +9,4 @@ doc/*
9
9
  log/*
10
10
  pkg/*
11
11
  .DS_STORE
12
+ vendor
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
2
  require 'rake'
3
3
  require 'rspec/core/rake_task'
4
4
 
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://developer.echonest.com/api/v4/artist/profile?api_key=BNOAEBT3IZYZI6WXI&format=json&id=ARH6W4X1187B99274F&name=
5
+ uri: http://developer.echonest.com/api/v4/artist/profile?api_key=BNOAEBT3IZYZI6WXI&format=json&id=ARH6W4X1187B99274F
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -0,0 +1,98 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://developer.echonest.com/api/v4/song/search?api_key=BNOAEBT3IZYZI6WXI&format=json&id=SOCRHFJ12A67021D74
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 400
13
+ message: Bad Request
14
+ headers:
15
+ Date:
16
+ - Wed, 13 Nov 2013 01:24:56 GMT
17
+ Content-Type:
18
+ - application/json; charset=utf-8
19
+ Content-Length:
20
+ - '104'
21
+ X-Request-Id:
22
+ - I8IxYezuT2+w1YUa3Mc9sA
23
+ X-Ratelimit-Remaining:
24
+ - '19'
25
+ Server:
26
+ - TornadoServer/3.1
27
+ X-Ratelimit-Limit:
28
+ - '20'
29
+ X-Api-Key:
30
+ - BNOAEBT3IZYZI6WXI
31
+ X-Ratelimit-Used:
32
+ - '1'
33
+ Connection:
34
+ - Keep-alive
35
+ Keep-Alive:
36
+ - timeout=15, max=100
37
+ Via:
38
+ - 1.1 ID-0000627501223666 uproxy-2
39
+ body:
40
+ encoding: US-ASCII
41
+ string: ! '{"response": {"status": {"version": "4.2", "code": 5, "message":
42
+ "method - Invalid parameter: \"id\""}}}'
43
+ http_version:
44
+ recorded_at: Wed, 13 Nov 2013 01:24:56 GMT
45
+ - request:
46
+ method: get
47
+ uri: http://developer.echonest.com/api/v4/song/profile?api_key=BNOAEBT3IZYZI6WXI&format=json&id=SOCRHFJ12A67021D74
48
+ body:
49
+ encoding: US-ASCII
50
+ string: ''
51
+ headers: {}
52
+ response:
53
+ status:
54
+ code: 200
55
+ message: OK
56
+ headers:
57
+ Date:
58
+ - Wed, 13 Nov 2013 01:26:37 GMT
59
+ Content-Type:
60
+ - application/json; charset=utf-8
61
+ Content-Length:
62
+ - '201'
63
+ Vary:
64
+ - Accept-Encoding
65
+ X-Request-Id:
66
+ - NvdAOls0Qom57WkgmWTwmw
67
+ Etag:
68
+ - ! '"b756f588c500d1f36868111e5e3185c70788dcd9"'
69
+ X-Worker-Node:
70
+ - 2902a:22872
71
+ X-Ratelimit-Remaining:
72
+ - '19'
73
+ Server:
74
+ - TornadoServer/3.1
75
+ X-Ratelimit-Limit:
76
+ - '20'
77
+ X-Api-Key:
78
+ - BNOAEBT3IZYZI6WXI
79
+ Cache-Control:
80
+ - max-age=86400
81
+ Access-Control-Allow-Origin:
82
+ - ! '*'
83
+ X-Ratelimit-Used:
84
+ - '1'
85
+ Connection:
86
+ - Keep-alive
87
+ Keep-Alive:
88
+ - timeout=15, max=100
89
+ Via:
90
+ - 1.1 ID-0000627501223666 uproxy-3
91
+ body:
92
+ encoding: US-ASCII
93
+ string: ! '{"response": {"status": {"version": "4.2", "code": 0, "message":
94
+ "Success"}, "songs": [{"artist_id": "AR633SY1187B9AC3B9", "id": "SOCRHFJ12A67021D74",
95
+ "artist_name": "Weezer", "title": "El Scorcho"}]}}'
96
+ http_version:
97
+ recorded_at: Wed, 13 Nov 2013 01:26:37 GMT
98
+ recorded_with: VCR 2.7.0
@@ -67,4 +67,214 @@ http_interactions:
67
67
  "Kate Truka", "title": "Hello"}]}}'
68
68
  http_version:
69
69
  recorded_at: Sat, 23 Feb 2013 13:15:51 GMT
70
- recorded_with: VCR 2.4.0
70
+ - request:
71
+ method: get
72
+ uri: http://developer.echonest.com/api/v4/song/search?api_key=BNOAEBT3IZYZI6WXI&bucket=tracks&combined=weezer%20-%20El%20Scorcho&format=json
73
+ body:
74
+ encoding: US-ASCII
75
+ string: ''
76
+ headers: {}
77
+ response:
78
+ status:
79
+ code: 200
80
+ message: OK
81
+ headers:
82
+ Date:
83
+ - Fri, 08 Nov 2013 16:58:37 GMT
84
+ Content-Type:
85
+ - application/json; charset=utf-8
86
+ Content-Length:
87
+ - '16013'
88
+ Vary:
89
+ - Accept-Encoding
90
+ X-Request-Id:
91
+ - LgxMtaIBR0O+lGGIpSLtEw
92
+ Etag:
93
+ - ! '"3f970c2b6604bf09bfac5dc9db8575cc20b43492"'
94
+ X-Worker-Node:
95
+ - 96cdc:5825
96
+ X-Ratelimit-Remaining:
97
+ - '19'
98
+ Server:
99
+ - TornadoServer/3.1
100
+ X-Ratelimit-Limit:
101
+ - '20'
102
+ X-Api-Key:
103
+ - BNOAEBT3IZYZI6WXI
104
+ Cache-Control:
105
+ - max-age=86400
106
+ Access-Control-Allow-Origin:
107
+ - ! '*'
108
+ X-Ratelimit-Used:
109
+ - '1'
110
+ Connection:
111
+ - Keep-alive
112
+ Keep-Alive:
113
+ - timeout=15, max=100
114
+ Via:
115
+ - 1.1 ID-0000627501223666 uproxy-3
116
+ body:
117
+ encoding: US-ASCII
118
+ string: ! '{"response": {"status": {"version": "4.2", "code": 0, "message":
119
+ "Success"}, "songs": [{"title": "weezer tribute - a tribute to weezer - 09
120
+ - the stereo - el scorcho", "artist_name": "Weezer", "artist_foreign_ids":
121
+ [{"catalog": "7digital-US", "foreign_id": "7digital-US:artist:7516"}], "tracks":
122
+ [], "audio_md5": "e58e471ab8ff27057cea1d0dc02137e6", "artist_id": "AR633SY1187B9AC3B9",
123
+ "id": "SOFUENY12B0B80A2EC", "audio_summary": {"key": 1, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRVOJHF123E85806AE/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=N9El1OYIixssSnev/%2BWJtGn4GDU%3D",
124
+ "energy": 0.54621717405125914, "liveness": 0.098055736102958091, "tempo":
125
+ 70.117999999999995, "speechiness": 0.039930275002796278, "acousticness": 0.025835454965767436,
126
+ "mode": 1, "time_signature": 3, "duration": 259.39546000000001, "loudness":
127
+ -8.4740000000000002, "audio_md5": "e58e471ab8ff27057cea1d0dc02137e6", "valence":
128
+ 0.15291152883100836, "danceability": 0.30119084566305093}}, {"title": "El
129
+ Scorcho", "artist_name": "Weezer", "artist_foreign_ids": [{"catalog": "7digital-US",
130
+ "foreign_id": "7digital-US:artist:7516"}], "tracks": [{"release_image": "http://cdn.7static.com/static/img/sleeveart/00/019/385/0001938573_200.jpg",
131
+ "foreign_release_id": "7digital-US:release:1938573", "preview_url": "http://previews.7digital.com/clips/34/20645785.clip.mp3",
132
+ "catalog": "7digital-US", "foreign_id": "7digital-US:track:20645785", "id":
133
+ "TRLJPRE13A79B0D1F9"}, {"release_image": "http://cdn.7static.com/static/img/sleeveart/00/019/177/0001917766_200.jpg",
134
+ "foreign_release_id": "7digital-US:release:1917766", "preview_url": "http://previews.7digital.com/clips/34/20989891.clip.mp3",
135
+ "catalog": "7digital-US", "foreign_id": "7digital-US:track:20989891", "id":
136
+ "TRXMMZF13A79B3D64B"}, {"release_image": "http://cdn.7static.com/static/img/sleeveart/00/019/177/0001917766_200.jpg",
137
+ "foreign_release_id": "7digital-US:release:1917766", "preview_url": "http://previews.7digital.com/clips/34/20989916.clip.mp3",
138
+ "catalog": "7digital-US", "foreign_id": "7digital-US:track:20989916", "id":
139
+ "TRXSOON13A79B3D656"}, {"release_image": "http://cdn.7static.com/static/img/sleeveart/00/019/177/0001917766_200.jpg",
140
+ "foreign_release_id": "7digital-US:release:1917766", "preview_url": "http://previews.7digital.com/clips/34/20989920.clip.mp3",
141
+ "catalog": "7digital-US", "foreign_id": "7digital-US:track:20989920", "id":
142
+ "TRCVEWJ13A79B3F532"}, {"release_image": "http://cdn.7static.com/static/img/sleeveart/00/019/177/0001917766_200.jpg",
143
+ "foreign_release_id": "7digital-US:release:1917766", "preview_url": "http://previews.7digital.com/clips/34/20989912.clip.mp3",
144
+ "catalog": "7digital-US", "foreign_id": "7digital-US:track:20989912", "id":
145
+ "TRQYBOB13A79B3F52C"}], "audio_md5": "92c409b359f3783d719f99da5d6bea30", "artist_id":
146
+ "AR633SY1187B9AC3B9", "id": "SOCRHFJ12A67021D74", "audio_summary": {"key":
147
+ 1, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/CGGZbgoAu3VCpEpnaOe2x7lAA6tqvAxM3HbsfVLA66ilt9OZrHaqHfVj5hpaTk3YtCnCF3uIBs8HV0uiM%3D/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=hdn0laDJTQeDN%2BYk6yhJznRE9V8%3D",
148
+ "energy": 0.72650664678888077, "liveness": 0.084808022338250355, "tempo":
149
+ 148.999, "speechiness": 0.073141213941956662, "acousticness": 0.020281331756578286,
150
+ "mode": 1, "time_signature": 4, "duration": 243.66621000000001, "loudness":
151
+ -4.4100000000000001, "audio_md5": "92c409b359f3783d719f99da5d6bea30", "valence":
152
+ 0.45570664322192195, "danceability": 0.45255827023781192}}, {"title": "El
153
+ Scorcho (Director''s Cut)", "artist_name": "Weezer", "artist_foreign_ids":
154
+ [{"catalog": "7digital-US", "foreign_id": "7digital-US:artist:7516"}], "tracks":
155
+ [], "audio_md5": "087de450515874932a719c5bd212d131", "artist_id": "AR633SY1187B9AC3B9",
156
+ "id": "SOPIIUL13E9067B376", "audio_summary": {"key": 8, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/A3LwHwEzUl3zlWEoM8yk_sDA6dY6i07D9Bnx0l/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=S3HcvXe%2Bo0943UTnMNybI9SkngY%3D",
157
+ "energy": 0.40297031179122894, "liveness": 0.25457472757529687, "tempo": 74.524000000000001,
158
+ "speechiness": 0.035890067969342687, "acousticness": 0.44464887861795327,
159
+ "mode": 1, "time_signature": 4, "duration": 246.97556, "loudness": -16.719000000000001,
160
+ "audio_md5": "087de450515874932a719c5bd212d131", "valence": 0.26112877472791557,
161
+ "danceability": 0.53420358850477667}}, {"title": "El Scorcho (Live and Acoustic)",
162
+ "artist_name": "Weezer", "artist_foreign_ids": [{"catalog": "7digital-US",
163
+ "foreign_id": "7digital-US:artist:7516"}], "tracks": [], "audio_md5": "de9115b298f885336c2eed710369a85e",
164
+ "artist_id": "AR633SY1187B9AC3B9", "id": "SOGRRAZ12D9F5224B8", "audio_summary":
165
+ {"key": 8, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/3NYbcgg3UNJA1PrlDLuulhAtdETbV_mWKOdTbtDpIs-s4hhX4e00_W-p9M3R3aeZjnzY6PkljxLs5dJmM%3D/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=RA0IGZJtjue%2BT8sQVNfVCEHQ3Ms%3D",
166
+ "energy": 0.46981245219290091, "liveness": 0.97454003516679888, "tempo": 145.86600000000001,
167
+ "speechiness": 0.044845720907872588, "acousticness": 0.18924426716678527,
168
+ "mode": 1, "time_signature": 4, "duration": 266.14621, "loudness": -7.5679999999999996,
169
+ "audio_md5": "de9115b298f885336c2eed710369a85e", "valence": 0.23762761233385088,
170
+ "danceability": 0.40321067187085752}}, {"title": "El Scorcho (Live Version)",
171
+ "artist_name": "Weezer", "artist_foreign_ids": [{"catalog": "7digital-US",
172
+ "foreign_id": "7digital-US:artist:7516"}], "tracks": [{"release_image": "http://cdn.7static.com/static/img/sleeveart/00/004/991/0000499182_200.jpg",
173
+ "foreign_release_id": "7digital-US:release:499182", "preview_url": "http://previews.7digital.com/clips/34/5529356.clip.mp3",
174
+ "catalog": "7digital-US", "foreign_id": "7digital-US:track:5529356", "id":
175
+ "TRSLLXR12E5AC92DB2"}], "audio_md5": "6c7315d2dc3f65c4424104bf30b6a6c9", "artist_id":
176
+ "AR633SY1187B9AC3B9", "id": "SOBXNXS12AB0184EC6", "audio_summary": {"key":
177
+ 8, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/ra2U2w5vPwUQCWsuTIn7oWudD8c-1vM0uT4ymwzRuz7q_mZXuTTPKxJI2rCbRKiv9dz8uKpBnVe9CDinw%3D/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=3nDVkOiptipWy7MQnyAZRP024Po%3D",
178
+ "energy": 0.72080595006041182, "liveness": 0.64565466975511177, "tempo": 79.956000000000003,
179
+ "speechiness": 0.052348155837272259, "acousticness": 0.0077265142199913085,
180
+ "mode": 1, "time_signature": 4, "duration": 255.93288000000001, "loudness":
181
+ -8.3369999999999997, "audio_md5": "6c7315d2dc3f65c4424104bf30b6a6c9", "valence":
182
+ 0.21653892274580336, "danceability": 0.53605543872346018}}, {"title": "El
183
+ Scorcho (Live at Y100 Sonic Session)", "artist_name": "Weezer", "artist_foreign_ids":
184
+ [{"catalog": "7digital-US", "foreign_id": "7digital-US:artist:7516"}], "tracks":
185
+ [], "audio_md5": "c3b69376f35d484578fdc220d5568c46", "artist_id": "AR633SY1187B9AC3B9",
186
+ "id": "SONDZAR1315CD4C41B", "audio_summary": {"key": 8, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/iMglUAwmfhJkuIGRiH7gi0FhPJULjsG2qEFTDwH9zAHnez8NT6G7zQk3j3CdBqm0KzL5tATQkvo0ZPQww%3D/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=8tmFzq/LBAgeMVk7am75HZXlAmA%3D",
187
+ "energy": 0.52511401575074823, "liveness": 0.72582678316129789, "tempo": 147.31299999999999,
188
+ "speechiness": 0.058873253695273908, "acousticness": 0.75866741005033456,
189
+ "mode": 1, "time_signature": 4, "duration": 247.62620999999999, "loudness":
190
+ -6.4900000000000002, "audio_md5": "c3b69376f35d484578fdc220d5568c46", "valence":
191
+ 0.63914724946801416, "danceability": 0.45506128573100907}}, {"title": "El
192
+ Scorcho (Live at Reading Festival / 1996)", "artist_name": "Weezer", "artist_foreign_ids":
193
+ [{"catalog": "7digital-US", "foreign_id": "7digital-US:artist:7516"}], "tracks":
194
+ [], "audio_md5": "b407ea718a29237bbc6ca5284ddae516", "artist_id": "AR633SY1187B9AC3B9",
195
+ "id": "SOBMVWB135FF3AF240", "audio_summary": {"key": 8, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/4w7ffQVBq71Bpo95vSCeb2Bg73Q4OHitBURo1AgIdyJXJfM1aFMfllpfiD50lfG7wV6Ehcy9-rwT2QuqA%3D/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=zCwY9Y5htPd7A/pZ55sh3kIaie4%3D",
196
+ "energy": 0.78829460831070974, "liveness": 0.42244526158305484, "tempo": 142.76499999999999,
197
+ "speechiness": 0.098870534355800455, "acousticness": 0.010468399530986489,
198
+ "mode": 1, "time_signature": 4, "duration": 249.90620999999999, "loudness":
199
+ -5.25, "audio_md5": "b407ea718a29237bbc6ca5284ddae516", "valence": 0.41112256785513629,
200
+ "danceability": 0.39942793001447202}}, {"title": "weezer tribute - a tribute
201
+ to weezer - 10 - mycomplex - tired of sex", "artist_name": "Weezer", "artist_foreign_ids":
202
+ [{"catalog": "7digital-US", "foreign_id": "7digital-US:artist:7516"}], "tracks":
203
+ [], "audio_md5": "f488bff37f84b285f46d3728e684db4e", "artist_id": "AR633SY1187B9AC3B9",
204
+ "id": "SOACLKS12B0B808694", "audio_summary": {"key": 6, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRSFWHX123E85838E7/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=aJID86Ax47aWitkl9N/32OoWp7c%3D",
205
+ "energy": 0.97225208036384314, "liveness": 0.18269153860438919, "tempo": 70.388999999999996,
206
+ "speechiness": 0.05718956600918651, "acousticness": 0.00080035622524831003,
207
+ "mode": 1, "time_signature": 7, "duration": 172.40771000000001, "loudness":
208
+ -4.7350000000000003, "audio_md5": "f488bff37f84b285f46d3728e684db4e", "valence":
209
+ 0.49186589889821719, "danceability": 0.12650025672223394}}, {"title": "weezer
210
+ tribute - a tribute to weezer - 03 - glasseater - holiday", "artist_name":
211
+ "Weezer", "artist_foreign_ids": [{"catalog": "7digital-US", "foreign_id":
212
+ "7digital-US:artist:7516"}], "tracks": [], "audio_md5": "efbbfb75e81cea52137a6a2bab3d9732",
213
+ "artist_id": "AR633SY1187B9AC3B9", "id": "SOXZNBO12B0B8086A5", "audio_summary":
214
+ {"key": 9, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRAKGEB123E859105D/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=Eizk9E6DSJOY3Y1WyrKNJX0Gv1M%3D",
215
+ "energy": 0.89255902909529894, "liveness": 0.093744242368857547, "tempo":
216
+ 126.16800000000001, "speechiness": 0.039012555826289874, "acousticness": 0.019778543837455618,
217
+ "mode": 1, "time_signature": 3, "duration": 195.52608000000001, "loudness":
218
+ -5.234, "audio_md5": "efbbfb75e81cea52137a6a2bab3d9732", "valence": 0.38544276742326905,
219
+ "danceability": 0.18880682341806618}}, {"title": "weezer tribute - a tribute
220
+ to weezer - 04 - grade - surf wax america", "artist_name": "Weezer", "artist_foreign_ids":
221
+ [{"catalog": "7digital-US", "foreign_id": "7digital-US:artist:7516"}], "tracks":
222
+ [], "audio_md5": "b1a755094e5ddb9ec3ff1273e2724872", "artist_id": "AR633SY1187B9AC3B9",
223
+ "id": "SOEMBQN12B0B808697", "audio_summary": {"key": 7, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRXNSQO123E85951F7/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=RTgbxzMXm6T0/gCGS7/AAVUVEtI%3D",
224
+ "energy": 0.92630398861406593, "liveness": 0.068189884318534455, "tempo":
225
+ 84.248000000000005, "speechiness": 0.036145658810747661, "acousticness": 0.00084735493308902578,
226
+ "mode": 1, "time_signature": 1, "duration": 165.30240000000001, "loudness":
227
+ -6.3099999999999996, "audio_md5": "b1a755094e5ddb9ec3ff1273e2724872", "valence":
228
+ 0.26021874076212054, "danceability": 0.13559971069715798}}, {"title": "weezer
229
+ tribute - a tribute to weezer - 11 - the impossibles - the good life", "artist_name":
230
+ "Weezer", "artist_foreign_ids": [{"catalog": "7digital-US", "foreign_id":
231
+ "7digital-US:artist:7516"}], "tracks": [], "audio_md5": "ed395a54df6790005bb909b672e7b541",
232
+ "artist_id": "AR633SY1187B9AC3B9", "id": "SOLDOAD12B0B80A2E5", "audio_summary":
233
+ {"key": 4, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRZBRJM123E857CBC6/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=epCvK3SBvVqegqmahsQ%2Bd/t43bM%3D",
234
+ "energy": 0.95156625736500766, "liveness": 0.44095669104264873, "tempo": 141.077,
235
+ "speechiness": 0.059233605635693964, "acousticness": 0.092905273118622525,
236
+ "mode": 0, "time_signature": 4, "duration": 235.38892999999999, "loudness":
237
+ -6.008, "audio_md5": "ed395a54df6790005bb909b672e7b541", "valence": 0.41867524997326178,
238
+ "danceability": 0.39053779633091734}}, {"title": "weezer tribute - a tribute
239
+ to weezer - 13 - the ataris - butterfly", "artist_name": "Weezer", "artist_foreign_ids":
240
+ [{"catalog": "7digital-US", "foreign_id": "7digital-US:artist:7516"}], "tracks":
241
+ [], "audio_md5": "e44a293bc2d324ea3a1a0bab78e2c52b", "artist_id": "AR633SY1187B9AC3B9",
242
+ "id": "SOKKIRO12B0B80A2F0", "audio_summary": {"key": 8, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRJXDUZ123E85939FE/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=tSKZNyx1lU/zmHR0F1%2B14HXCHXQ%3D",
243
+ "energy": 0.46419827841911532, "liveness": 0.097025313508424846, "tempo":
244
+ 68.858999999999995, "speechiness": 0.045660208030876337, "acousticness": 0.91660634736419566,
245
+ "mode": 0, "time_signature": 1, "duration": 166.13831999999999, "loudness":
246
+ -10.436999999999999, "audio_md5": "e44a293bc2d324ea3a1a0bab78e2c52b", "valence":
247
+ 0.53248584708903968, "danceability": 0.37858614207448416}}, {"title": "weezer
248
+ tribute - a tribute to weezer - 07 - midtown - susanne", "artist_name": "Weezer",
249
+ "artist_foreign_ids": [{"catalog": "7digital-US", "foreign_id": "7digital-US:artist:7516"}],
250
+ "tracks": [], "audio_md5": "5522d190923a3f9621a4c28dc67e5c62", "artist_id":
251
+ "AR633SY1187B9AC3B9", "id": "SOBEOSW12B0B80869C", "audio_summary": {"key":
252
+ 8, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRQPBEZ123E859C64A/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=kyuKbkru6brzGw6BE1jlgUSZl1s%3D",
253
+ "energy": 0.95068602351804421, "liveness": 0.049794877149266885, "tempo":
254
+ 104.34999999999999, "speechiness": 0.055598863217484418, "acousticness": 0.044226349944663935,
255
+ "mode": 1, "time_signature": 4, "duration": 142.78485000000001, "loudness":
256
+ -5.1079999999999997, "audio_md5": "5522d190923a3f9621a4c28dc67e5c62", "valence":
257
+ 0.5786127998045637, "danceability": 0.1495080646105561}}, {"title": "weezer
258
+ tribute - a tribute to weezer - 08 - dashboard confessional - jamie", "artist_name":
259
+ "Weezer", "artist_foreign_ids": [{"catalog": "7digital-US", "foreign_id":
260
+ "7digital-US:artist:7516"}], "tracks": [], "audio_md5": "765620a5c329495eb45a186234f97b49",
261
+ "artist_id": "AR633SY1187B9AC3B9", "id": "SOPDMFX12B0B8086A1", "audio_summary":
262
+ {"key": 6, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRNVMEH123E8599E31/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=y0YHKzrbZCrKbhcr7S2Q433x9lA%3D",
263
+ "energy": 0.35662478142932102, "liveness": 0.077308278136483305, "tempo":
264
+ 114.18600000000001, "speechiness": 0.036597796265677718, "acousticness": 0.83105546723441048,
265
+ "mode": 1, "time_signature": 4, "duration": 248.58077, "loudness": -7.4720000000000004,
266
+ "audio_md5": "765620a5c329495eb45a186234f97b49", "valence": 0.67184389562526992,
267
+ "danceability": 0.6871513821219799}}, {"title": "weezer tribute - a tribute
268
+ to weezer - 06 - christopher john (elliot) - the world has turned", "artist_name":
269
+ "Weezer", "artist_foreign_ids": [{"catalog": "7digital-US", "foreign_id":
270
+ "7digital-US:artist:7516"}], "tracks": [], "audio_md5": "5e406bddbcdddc2821d3f3a53ee409c0",
271
+ "artist_id": "AR633SY1187B9AC3B9", "id": "SOPLFNT1376BBCCB99", "audio_summary":
272
+ {"key": 6, "analysis_url": "http://echonest-analysis.s3.amazonaws.com/TR/TRDWFER123E82F4CA1/3/full.json?AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ&Expires=1383930517&Signature=/UcbPPuXTYpn1d8ByDhAHuMTh4k%3D",
273
+ "energy": 0.35602189090641229, "liveness": 0.11037179813161779, "tempo": 133.36699999999999,
274
+ "speechiness": 0.036236986757947121, "acousticness": 0.55025235780908854,
275
+ "mode": 1, "time_signature": 4, "duration": 372.34893, "loudness": -9.5730000000000004,
276
+ "audio_md5": "5e406bddbcdddc2821d3f3a53ee409c0", "valence": 0.28790226452583439,
277
+ "danceability": 0.49932195809745156}}]}}'
278
+ http_version:
279
+ recorded_at: Fri, 08 Nov 2013 16:58:38 GMT
280
+ recorded_with: VCR 2.7.0
@@ -23,7 +23,7 @@ http_interactions:
23
23
  X-Request-Id:
24
24
  - gXpEgeizQAGGst47meOWAQ
25
25
  Etag:
26
- - ! '"6c7ad38226a2cb3f6808fed206c128221da1472e"'
26
+ - '"6c7ad38226a2cb3f6808fed206c128221da1472e"'
27
27
  X-Worker-Node:
28
28
  - d1c7d:18043
29
29
  X-Ratelimit-Remaining:
@@ -35,7 +35,7 @@ http_interactions:
35
35
  Cache-Control:
36
36
  - max-age=86400
37
37
  Access-Control-Allow-Origin:
38
- - ! '*'
38
+ - '*'
39
39
  X-Ratelimit-Used:
40
40
  - '1'
41
41
  Connection:
@@ -46,32 +46,115 @@ http_interactions:
46
46
  - 1.1 ID-0000627501223666 uproxy-3
47
47
  body:
48
48
  encoding: US-ASCII
49
- string: ! '{"response": {"status": {"version": "4.2", "code": 0, "message":
50
- "Success"}, "start": 0, "terms": [{"frequency": 1.0, "name": "rock", "weight":
51
- 1.0}, {"frequency": 0.32362762914965709, "name": "alternative rock", "weight":
52
- 0.69780927835051543}, {"frequency": 0.44937160189619696, "name": "electronic",
53
- "weight": 0.68547496318114876}, {"frequency": 0.30395783840385909, "name":
54
- "alternative", "weight": 0.51113770250368185}, {"frequency": 0.3330351216068515,
55
- "name": "pop", "weight": 0.41310751104565535}, {"frequency": 0.12701643032455379,
56
- "name": "art rock", "weight": 0.37453976435935199}, {"frequency": 0.18900195035169701,
57
- "name": "90s", "weight": 0.32041605301914583}, {"frequency": 0.15086233578978614,
58
- "name": "electronica", "weight": 0.30660898379970547}, {"frequency": 0.15515439522510874,
59
- "name": "experimental", "weight": 0.28194035346097202}, {"frequency": 0.11026300031196913,
60
- "name": "modern rock", "weight": 0.27899484536082475}, {"frequency": 0.11311005144022887,
61
- "name": "post-punk", "weight": 0.2766936671575847}, {"frequency": 0.1958486968107972,
62
- "name": "jazz", "weight": 0.25717967599410896}, {"frequency": 0.076972709443209955,
63
- "name": "british pop", "weight": 0.23205081001472755}, {"frequency": 0.07795958505745175,
64
- "name": "experimental rock", "weight": 0.22984167893961707}, {"frequency":
65
- 0.11062690830619014, "name": "ambient", "weight": 0.22505522827687777}, {"frequency":
66
- 0.060773261607601083, "name": "british rock", "weight": 0.17396907216494845},
67
- {"frequency": 0.043226336802103069, "name": "alternative pop rock", "weight":
68
- 0.17286450662739322}, {"frequency": 0.043338377308222591, "name": "indietronica",
69
- "weight": 0.17249631811487481}, {"frequency": 0.067005410887189226, "name":
70
- "grunge", "weight": 0.1639359351988218}, {"frequency": 0.069209522653945518,
71
- "name": "progressive rock", "weight": 0.16053019145802652}, {"frequency":
72
- 0.082315134619655381, "name": "80s", "weight": 0.14202871870397643}, {"frequency":
73
- 0.085107639075017574, "name": "indie", "weight": 0.13871502209131076}, {"frequency":
74
- 0.070086224148814005, "name": "soundtrack", "weight": 0.12039764359351988}]}}'
49
+ string: '{"response": {"status": {"version": "4.2", "code": 0, "message": "Success"},
50
+ "start": 0, "terms": [{"frequency": 1.0, "name": "rock", "weight": 1.0}, {"frequency":
51
+ 0.32362762914965709, "name": "alternative rock", "weight": 0.69780927835051543},
52
+ {"frequency": 0.44937160189619696, "name": "electronic", "weight": 0.68547496318114876},
53
+ {"frequency": 0.30395783840385909, "name": "alternative", "weight": 0.51113770250368185},
54
+ {"frequency": 0.3330351216068515, "name": "pop", "weight": 0.41310751104565535},
55
+ {"frequency": 0.12701643032455379, "name": "art rock", "weight": 0.37453976435935199},
56
+ {"frequency": 0.18900195035169701, "name": "90s", "weight": 0.32041605301914583},
57
+ {"frequency": 0.15086233578978614, "name": "electronica", "weight": 0.30660898379970547},
58
+ {"frequency": 0.15515439522510874, "name": "experimental", "weight": 0.28194035346097202},
59
+ {"frequency": 0.11026300031196913, "name": "modern rock", "weight": 0.27899484536082475},
60
+ {"frequency": 0.11311005144022887, "name": "post-punk", "weight": 0.2766936671575847},
61
+ {"frequency": 0.1958486968107972, "name": "jazz", "weight": 0.25717967599410896},
62
+ {"frequency": 0.076972709443209955, "name": "british pop", "weight": 0.23205081001472755},
63
+ {"frequency": 0.07795958505745175, "name": "experimental rock", "weight":
64
+ 0.22984167893961707}, {"frequency": 0.11062690830619014, "name": "ambient",
65
+ "weight": 0.22505522827687777}, {"frequency": 0.060773261607601083, "name":
66
+ "british rock", "weight": 0.17396907216494845}, {"frequency": 0.043226336802103069,
67
+ "name": "alternative pop rock", "weight": 0.17286450662739322}, {"frequency":
68
+ 0.043338377308222591, "name": "indietronica", "weight": 0.17249631811487481},
69
+ {"frequency": 0.067005410887189226, "name": "grunge", "weight": 0.1639359351988218},
70
+ {"frequency": 0.069209522653945518, "name": "progressive rock", "weight":
71
+ 0.16053019145802652}, {"frequency": 0.082315134619655381, "name": "80s", "weight":
72
+ 0.14202871870397643}, {"frequency": 0.085107639075017574, "name": "indie",
73
+ "weight": 0.13871502209131076}, {"frequency": 0.070086224148814005, "name":
74
+ "soundtrack", "weight": 0.12039764359351988}]}}'
75
75
  http_version:
76
76
  recorded_at: Tue, 16 Apr 2013 15:36:58 GMT
77
- recorded_with: VCR 2.4.0
77
+ - request:
78
+ method: get
79
+ uri: http://developer.echonest.com/api/v4/artist/terms?api_key=BNOAEBT3IZYZI6WXI&format=json&id=ARH6W4X1187B99274F
80
+ body:
81
+ encoding: US-ASCII
82
+ string: ''
83
+ headers: {}
84
+ response:
85
+ status:
86
+ code: 200
87
+ message: OK
88
+ headers:
89
+ Date:
90
+ - Sat, 12 Oct 2013 12:28:53 GMT
91
+ Content-Type:
92
+ - application/json; charset=utf-8
93
+ Content-Length:
94
+ - '2795'
95
+ Vary:
96
+ - Accept-Encoding
97
+ X-Request-Id:
98
+ - X0WI5W4YTSqVg3ChIufjdA
99
+ Etag:
100
+ - '"ca47178456bf833f4236e57ad2db739adaaf845a"'
101
+ X-Worker-Node:
102
+ - 2d6ca:24235
103
+ X-Ratelimit-Remaining:
104
+ - '19'
105
+ Server:
106
+ - TornadoServer/3.1
107
+ X-Ratelimit-Limit:
108
+ - '20'
109
+ X-Api-Key:
110
+ - BNOAEBT3IZYZI6WXI
111
+ Cache-Control:
112
+ - max-age=86400
113
+ Access-Control-Allow-Origin:
114
+ - '*'
115
+ X-Ratelimit-Used:
116
+ - '1'
117
+ Connection:
118
+ - Keep-alive
119
+ Keep-Alive:
120
+ - timeout=15, max=100
121
+ Via:
122
+ - 1.1 ID-0000627501223666 uproxy-3
123
+ body:
124
+ encoding: UTF-8
125
+ string: '{"response": {"status": {"version": "4.2", "code": 0, "message": "Success"},
126
+ "start": 0, "terms": [{"frequency": 1.0, "name": "rock", "weight": 1.0}, {"frequency":
127
+ 0.50056445167152541, "name": "electronic", "weight": 0.76179177451826285},
128
+ {"frequency": 0.29054535637337708, "name": "alternative rock", "weight": 0.6259706643658326},
129
+ {"frequency": 0.41711702389033906, "name": "pop", "weight": 0.51704055220017253},
130
+ {"frequency": 0.27481688997448123, "name": "alternative", "weight": 0.46138912855910269},
131
+ {"frequency": 0.14477044187279242, "name": "art rock", "weight": 0.42608570606844981},
132
+ {"frequency": 0.18768888908047751, "name": "experimental", "weight": 0.34023583549036523},
133
+ {"frequency": 0.16288987379250486, "name": "electronica", "weight": 0.33031348863963189},
134
+ {"frequency": 0.1867971502729068, "name": "90s", "weight": 0.31607707794075351},
135
+ {"frequency": 0.1510795216447437, "name": "ambient", "weight": 0.30644233534656312},
136
+ {"frequency": 0.22557046127642771, "name": "jazz", "weight": 0.29587287891860797},
137
+ {"frequency": 0.093852065975919011, "name": "british pop", "weight": 0.28206787460454413},
138
+ {"frequency": 0.095061528373122664, "name": "experimental rock", "weight":
139
+ 0.27991084268047167}, {"frequency": 0.15281722054220978, "name": "soundtrack",
140
+ "weight": 0.26186367558239859}, {"frequency": 0.15842776261614069, "name":
141
+ "indie", "weight": 0.25769341386252514}, {"frequency": 0.096748185840265413,
142
+ "name": "post-punk", "weight": 0.23619499568593616}, {"frequency": 0.091995700478839704,
143
+ "name": "modern rock", "weight": 0.23209663503019845}, {"frequency": 0.088619945150828675,
144
+ "name": "grunge", "weight": 0.21620649985619786}, {"frequency": 0.10941427818931845,
145
+ "name": "80s", "weight": 0.18845268909979868}, {"frequency": 0.058871852681638602,
146
+ "name": "00s", "weight": 0.18277250503307449}, {"frequency": 0.078837608640815418,
147
+ "name": "progressive rock", "weight": 0.18241299971239575}, {"frequency":
148
+ 0.12049584640252849, "name": "metal", "weight": 0.18097497842968077}, {"frequency":
149
+ 0.076360092189907885, "name": "indie rock", "weight": 0.1622088006902502},
150
+ {"frequency": 0.051549088378287804, "name": "post rock", "weight": 0.16113028472821397},
151
+ {"frequency": 0.081416315447692789, "name": "electro", "weight": 0.15703192407247626},
152
+ {"frequency": 0.063773730992766717, "name": "classic rock", "weight": 0.14387402933563417},
153
+ {"frequency": 0.068399828845829846, "name": "psychedelic", "weight": 0.13812194420477422},
154
+ {"frequency": 0.041850069189502591, "name": "trip hop", "weight": 0.12108139200460166},
155
+ {"frequency": 0.042195287172128608, "name": "british rock", "weight": 0.12036238136324418},
156
+ {"frequency": 0.044040217303918695, "name": "emo", "weight": 0.11662352602818522},
157
+ {"frequency": 0.044880652784358821, "name": "indie pop", "weight": 0.11496980155306298}]}}'
158
+ http_version:
159
+ recorded_at: Sat, 12 Oct 2013 12:28:53 GMT
160
+ recorded_with: VCR 2.6.0
@@ -75,13 +75,13 @@ module Echonest
75
75
  end
76
76
 
77
77
  def profile(options = {})
78
- options = {name: @name, id: @id}.merge(options)
78
+ options = (@id ? {id: @id} : {name: @name}).merge(options)
79
79
  artist_data = get_response(options)[:artist]
80
80
  Artist.new(@api_key, artist_data[:name], artist_data[:foreign_ids], artist_data[:id])
81
81
  end
82
82
 
83
83
  def terms(options = {})
84
- options = {name: @name, id: @id}.merge(options)
84
+ options = (@id ? { id: @id } : { name: @name }).merge(options)
85
85
  get_response(options)[:terms]
86
86
  end
87
87
 
@@ -51,16 +51,21 @@ module Echonest
51
51
  #
52
52
  # Returns a response as a Hash
53
53
  def get(endpoint, options = {})
54
- query_string = ""
55
- options.each do |key, value|
56
- query_string << "#{ key }=#{ value }&"
57
- end
58
- #puts "#{ Base.base_uri }#{ endpoint }?api_key=#{ @api_key }&format=json&#{ query_string }"
59
- response = HTTParty.get(URI.escape("#{ Base.base_uri }#{ endpoint }?api_key=#{ @api_key }&format=json&#{ query_string }"))
54
+ options.merge!(api_key: @api_key,
55
+ format: "json")
56
+
57
+ httparty_options = { query_string_normalizer: HTTParty::Request::NON_RAILS_QUERY_STRING_NORMALIZER,
58
+ query: options }
59
+
60
+ response = HTTParty.get("#{ Base.base_uri }#{ endpoint }", httparty_options)
60
61
  json = MultiJson.load(response.body, symbolize_keys: true)
61
62
  response_code = json[:response][:status][:code]
62
63
 
63
- response_code.eql?(0) ? json[:response] : raise(Echonest::Error.new(response_code), "Error code #{ response_code }")
64
+ if response_code.eql?(0)
65
+ json[:response]
66
+ else
67
+ raise Echonest::Error.new(response_code, response), "Error code #{ response_code }"
68
+ end
64
69
  end
65
70
 
66
71
  # Cross-platform way of finding an executable in the $PATH.
@@ -78,4 +83,4 @@ module Echonest
78
83
  end
79
84
 
80
85
  end
81
- end
86
+ end
@@ -1,11 +1,13 @@
1
- class Biography
1
+ module Echonest
2
+ class Biography
2
3
 
3
- attr_accessor :text, :site, :url
4
+ attr_accessor :text, :site, :url
4
5
 
5
- def initialize(options = {})
6
- @text = options[:text]
7
- @site = options[:site]
8
- @url = options[:url]
9
- end
6
+ def initialize(options = {})
7
+ @text = options[:text]
8
+ @site = options[:site]
9
+ @url = options[:url]
10
+ end
10
11
 
12
+ end
11
13
  end
@@ -1,11 +1,13 @@
1
- class Blog
1
+ module Echonest
2
+ class Blog
2
3
 
3
- attr_accessor :name, :summary, :url, :date_posted
4
- def initialize(options = {})
5
- @name = options[:name]
6
- @summary = options[:summary]
7
- @url = options[:url]
8
- @date_posted = options[:date_posted]
9
- end
4
+ attr_accessor :name, :summary, :url, :date_posted
5
+ def initialize(options = {})
6
+ @name = options[:name]
7
+ @summary = options[:summary]
8
+ @url = options[:url]
9
+ @date_posted = options[:date_posted]
10
+ end
10
11
 
12
+ end
11
13
  end
@@ -1,7 +1,9 @@
1
1
  module Echonest
2
2
 
3
3
  class Error < Exception
4
- ERRORS = { '-1' => 'Unknown Error',
4
+ attr_reader :error_code, :response
5
+
6
+ ERRORS = { '-1' => 'Unknown Error',
5
7
  '0' => 'Success',
6
8
  '1' => 'Invalid/Missing API Key',
7
9
  '2' => 'This API key is not allowed to call that method',
@@ -11,17 +13,23 @@ module Echonest
11
13
  '6' => 'Missing echoprint-codegen binary on $PATH'
12
14
  }
13
15
 
14
-
15
- # Create a new Echonest::Error object
16
- def initialize(error_code)
16
+ def initialize(error_code, response = nil)
17
17
  @error_code = error_code
18
+ @response = response
18
19
  end
19
20
 
20
-
21
21
  def description
22
22
  ERRORS[@error_code.to_s]
23
23
  end
24
24
 
25
+ def details
26
+ if error_code == 3
27
+ # Returns a hash similar to {"remaining"=>0, "limit"=>20, "used"=>29}.
28
+ Hash[response.headers.select{|k,v| k =~ /x-ratelimit/}.
29
+ map{ |k,v| [k.sub('x-ratelimit-', ''), v.first.to_i] }]
30
+ end
31
+ end
32
+
25
33
  end
26
34
 
27
- end
35
+ end
@@ -1,18 +1,20 @@
1
- class ForeignId
1
+ module Echonest
2
+ class ForeignId
2
3
 
3
- attr_accessor :catalog, :foreign_id, :catalog_id
4
+ attr_accessor :catalog, :foreign_id, :catalog_id
4
5
 
5
- def initialize(options = {})
6
- @catalog = options[:catalog]
7
- @foreign_id = options[:foreign_id]
8
- @catalog_id = foreign_id.split(":").last
9
- end
6
+ def initialize(options = {})
7
+ @catalog = options[:catalog]
8
+ @foreign_id = options[:foreign_id]
9
+ @catalog_id = foreign_id.split(":").last
10
+ end
10
11
 
11
- def self.parse_array(array = [])
12
- foreign_ids = []
13
- array.each do |fid|
14
- foreign_ids << ForeignId.new(fid)
12
+ def self.parse_array(array = [])
13
+ foreign_ids = []
14
+ array.each do |fid|
15
+ foreign_ids << ForeignId.new(fid)
16
+ end
17
+ foreign_ids
15
18
  end
16
- foreign_ids
17
19
  end
18
20
  end
@@ -20,6 +20,16 @@ module Echonest
20
20
  end
21
21
  end
22
22
 
23
+ def profile(options = {})
24
+ raise ArgumentError, 'You must include a song id' if options[:id].nil?
25
+ defaults = { api_key: @api_key }
26
+ response = get_response(options)
27
+ songs = []
28
+ response[:songs].each do |song|
29
+ songs << song
30
+ end
31
+ end
32
+
23
33
  def identify(code)
24
34
  raise ArgumentError, 'Not a valid Echoprint or ENFMP fingerprint' if code.empty?
25
35
  response = get_response(code: code)
@@ -1,3 +1,3 @@
1
1
  module Echonest
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -236,5 +236,17 @@ describe Echonest::Artist do
236
236
  end
237
237
  end
238
238
 
239
+ it 'should work even when artist has both name and id' do
240
+ # If we try, echonest will respond with error:
241
+ # 'limit - Only one of \"name\" or \"id\" is allowed'
242
+ VCR.use_cassette('terms') do
243
+ create_valid_artist_with_id
244
+ @a.name = "Weezer"
245
+ expect {
246
+ @a.terms
247
+ }.to_not raise_error
248
+ end
249
+ end
250
+
239
251
  end
240
252
  end
@@ -1,15 +1,15 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ForeignId do
3
+ describe Echonest::ForeignId do
4
4
 
5
5
  it 'should parse the catalog id' do
6
- foreign_id = ForeignId.new(catalog: "musicbrainz", foreign_id: "musicbrainz:artist:6fe07aa5-fec0-4eca-a456-f29bff451b04")
6
+ foreign_id = Echonest::ForeignId.new(catalog: "musicbrainz", foreign_id: "musicbrainz:artist:6fe07aa5-fec0-4eca-a456-f29bff451b04")
7
7
  foreign_id.catalog_id.should eq("6fe07aa5-fec0-4eca-a456-f29bff451b04")
8
8
  end
9
9
 
10
10
  it 'should parse an array of results' do
11
11
  results = [{catalog: "musicbrainz", foreign_id: "123"},{catalog: "musicbrainz", foreign_id: "456"}]
12
- ForeignId.parse_array(results).count.should be 2
12
+ Echonest::ForeignId.parse_array(results).count.should be 2
13
13
  end
14
14
 
15
15
  end
@@ -8,6 +8,26 @@ describe Echonest::Song do
8
8
  a.should be_a Echonest::Song
9
9
  end
10
10
 
11
+ describe "#profile" do
12
+ it "should return the song for a given id" do
13
+ VCR.use_cassette('song_profile') do
14
+ a = Echonest::Song.new('BNOAEBT3IZYZI6WXI')
15
+ options = { id: 'SOCRHFJ12A67021D74' }
16
+ a.profile(options).each do |song|
17
+ song.keys.should include :id, :artist_id, :artist_name, :title
18
+ end
19
+ end
20
+ end
21
+
22
+ it "raises an ArgumentError if id is not provided" do
23
+ VCR.use_cassette('song_profile') do
24
+ a = Echonest::Song.new('BNOAEBT3IZYZI6WXI')
25
+ options = { id: nil }
26
+ expect{a.profile(options)}.to raise_exception(ArgumentError)
27
+ end
28
+ end
29
+ end
30
+
11
31
  describe '#search' do
12
32
 
13
33
  it 'should return an array of tracks' do
@@ -28,6 +48,16 @@ describe Echonest::Song do
28
48
  end
29
49
  end
30
50
 
51
+ it 'should support multiple bucket query params to return track data' do
52
+ VCR.use_cassette('song_search') do
53
+ a = Echonest::Song.new('BNOAEBT3IZYZI6WXI')
54
+ options = { combined: "weezer - El Scorcho", bucket: ["id:7digital-US", "audio_summary", "tracks"] }
55
+ a.search(options).each do |song|
56
+ song.keys.should include :id, :artist_id, :artist_name, :title, :artist_foreign_ids, :tracks, :audio_summary
57
+ end
58
+ end
59
+ end
60
+
31
61
  it 'should happily find slow songs' do
32
62
  VCR.use_cassette('song_search_slow') do
33
63
  a = Echonest::Song.new('BNOAEBT3IZYZI6WXI')
@@ -88,4 +118,4 @@ describe Echonest::Song do
88
118
  end
89
119
 
90
120
 
91
- end
121
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: echonest-ruby-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Woolf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-05 00:00:00.000000000 Z
11
+ date: 2014-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -167,6 +167,7 @@ files:
167
167
  - fixtures/vcr_cassettes/search_2.yml
168
168
  - fixtures/vcr_cassettes/single_biography.yml
169
169
  - fixtures/vcr_cassettes/song_identify.yml
170
+ - fixtures/vcr_cassettes/song_profile.yml
170
171
  - fixtures/vcr_cassettes/song_search.yml
171
172
  - fixtures/vcr_cassettes/song_search_slow.yml
172
173
  - fixtures/vcr_cassettes/songs.yml