kanye 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +18 -0
- data/Rakefile +40 -0
- data/VERSION +1 -0
- data/bin/kanye +43 -0
- data/lib/kanye.rb +70 -0
- data/lib/kanye/history.rb +14 -0
- data/lib/kanye/track.rb +53 -0
- data/spec/data/sample.html +2285 -0
- data/spec/kanye/track_spec.rb +38 -0
- data/spec/kanye_spec.rb +52 -0
- data/spec/spec_helper.rb +22 -0
- metadata +276 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Track do
|
4
|
+
before do
|
5
|
+
@track = Track.new(:id => 'id', :key => 'key', :artist => 'Alan Braxe', :title => 'Rubicon', :cookie => 'cookie')
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "url" do
|
9
|
+
it "should contain contain :id and :key" do
|
10
|
+
@track.url.should == "http://hypem.com/serve/play/id/key.mp3"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "to_s" do
|
15
|
+
it "should display the key, artist, and title" do
|
16
|
+
@track.to_s.should == "(key, Rubicon, Alan Braxe)"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "download!" do
|
21
|
+
before do
|
22
|
+
HTTParty.stub!(:get)
|
23
|
+
File.stub!(:open)
|
24
|
+
Mp3Info.stub!(:open)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should request mp3 from hypem with cookie" do
|
28
|
+
HTTParty.should_receive(:get).with(@track.url, {:headers => {"cookie" => @track.cookie}})
|
29
|
+
@track.download!
|
30
|
+
end
|
31
|
+
|
32
|
+
# This spec could use some love
|
33
|
+
it "should set ID3 tags" do
|
34
|
+
@track.should_receive(:set_id3_tags!)
|
35
|
+
@track.download!
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/spec/kanye_spec.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Kanye do
|
4
|
+
describe '#parse_response' do
|
5
|
+
let(:html) { File.open('spec/data/sample.html', 'r').read }
|
6
|
+
|
7
|
+
before do
|
8
|
+
resp = mock(:response,
|
9
|
+
:parsed_response => html,
|
10
|
+
:headers => {'set-cookie' => 'yesplease'})
|
11
|
+
|
12
|
+
HTTParty.stub!(:get).and_return(resp)
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:kanye) { Kanye.new('test') }
|
16
|
+
|
17
|
+
describe 'format strings' do
|
18
|
+
results = [
|
19
|
+
["Rusko","Jahova","ta42","9ecc8d868239653e7c99a6891a878e01","yesplease"],
|
20
|
+
["Rusko","Everyday","19n3n","c63b38f6714b7273a2c3f28c3e86ea54","yesplease"],
|
21
|
+
["Washed Out feat. Caroline Polachek","You and I","12xxd","c9d3b9a12d0979becf154821c191b151","yesplease"],
|
22
|
+
["Le Castle Vania","DJ Falcon + Thomas Bangalter Together (Le Castle Vania + Computer Club's Summer Bootleg Mix)","1av33","87c503dcc8bc46761a56b7bedfbb1697","yesplease"],
|
23
|
+
["Earl Da Grey","Kick It","1ar7m","dfd3c3f06d2fc5b5a4e0bf22f91982bc","yesplease"],
|
24
|
+
["Earl Da Grey","Heavenly Motion","1ar7k","0b9ccedbaacdb63c4c7d7344a149cde8","yesplease"],
|
25
|
+
["Earl Da Grey","Millionaire Radio","1ar7g","8607e44740e600769d4e3fa2e8ded210","yesplease"],
|
26
|
+
["Earl Da Grey","Taboo","1ar7h","734faa71e9072f3e7fa6ead9909e93cf","yesplease"],
|
27
|
+
["James Varnish","Compare (Lifelike Remix)","1armr","a4fe6cc8ce6b210def2191cc9b705ed3","yesplease"],
|
28
|
+
["Jamaica","I Think I Like U 2 (Breakbot Remix)","1161m","baf3e68ccf6ae0ccc7be7f0ef1554969","yesplease"],
|
29
|
+
["Radiohead","Supercollider","1aqn0","db5724fa6e4c78dcfa49abed5320142a","yesplease"],
|
30
|
+
["Dillon Francis","Beautician","1ag12","d6e55add48919d72c08bb11fc81d998d","yesplease"],
|
31
|
+
["The Human League","Never Let Me Go (Aeroplane Remix Edit)","19men","d53d93bd145589d4a9bd649cdd8179da","yesplease"],
|
32
|
+
["His Majesty Andre","Clubs","1as5w","bb17f53d899643c92020f7f1797b36a5","yesplease"],
|
33
|
+
["Cassian","Getting High (Original Mix)","1as5v","2182d0f18240433b372d8febd08b8dd3","yesplease"],
|
34
|
+
["Les Rythmes Digitales","About Funk","1as5z","3b8198e97bda14db73254b6febbdf42d","yesplease"],
|
35
|
+
["BeatauCue","Behold","1873c","1113b0b95c8ea988661b8bbbf5260d45","yesplease"],
|
36
|
+
["Toddla T","Take It Back (Dillon Francis Remix)","1ancc","ef8efa46115c08cef60b7241c7d82c7c","yesplease"],
|
37
|
+
["Danger Granger","Daniel is a Wild Cat (Porter Robinson vs Bat For Lashes)","1asad","65257400b1a1266adb3173f029bbb1a8","yesplease"],
|
38
|
+
["DEFEP","Rolling it Right (Afrojack vs Adele)","1asae","63cbcb3a740e1ad0cb7163b23e33a9d6","yesplease"]
|
39
|
+
]
|
40
|
+
results.each_with_index do |track, index|
|
41
|
+
describe "track No. #{index+1}" do
|
42
|
+
subject { kanye.tracks[index] }
|
43
|
+
its(:artist) { should == results[index][0] }
|
44
|
+
its(:title) { should == results[index][1] }
|
45
|
+
its(:id) { should == results[index][2] }
|
46
|
+
its(:key) { should == results[index][3] }
|
47
|
+
its(:cookie) { should == "yesplease" }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
|
11
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
12
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
13
|
+
require 'rspec'
|
14
|
+
require 'kanye'
|
15
|
+
|
16
|
+
# Requires supporting files with custom matchers and macros, etc,
|
17
|
+
# in ./support/ and its subdirectories.
|
18
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
19
|
+
|
20
|
+
RSpec.configure do |config|
|
21
|
+
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,276 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kanye
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Sam Vincent
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-05-24 00:00:00 -07:00
|
19
|
+
default_executable: kanye
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: httparty
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 11
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 7
|
33
|
+
- 4
|
34
|
+
version: 0.7.4
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: sqlite3
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
version: "0"
|
49
|
+
type: :runtime
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: character-encodings
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
type: :runtime
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: nokogiri
|
67
|
+
prerelease: false
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
type: :runtime
|
78
|
+
version_requirements: *id004
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: ruby-mp3info
|
81
|
+
prerelease: false
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
hash: 3
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
version: "0"
|
91
|
+
type: :runtime
|
92
|
+
version_requirements: *id005
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: rspec
|
95
|
+
prerelease: false
|
96
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
hash: 7
|
102
|
+
segments:
|
103
|
+
- 2
|
104
|
+
version: "2"
|
105
|
+
type: :development
|
106
|
+
version_requirements: *id006
|
107
|
+
- !ruby/object:Gem::Dependency
|
108
|
+
name: bundler
|
109
|
+
prerelease: false
|
110
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ~>
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
hash: 23
|
116
|
+
segments:
|
117
|
+
- 1
|
118
|
+
- 0
|
119
|
+
- 0
|
120
|
+
version: 1.0.0
|
121
|
+
type: :development
|
122
|
+
version_requirements: *id007
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: jeweler
|
125
|
+
prerelease: false
|
126
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
hash: 7
|
132
|
+
segments:
|
133
|
+
- 1
|
134
|
+
- 5
|
135
|
+
- 2
|
136
|
+
version: 1.5.2
|
137
|
+
type: :development
|
138
|
+
version_requirements: *id008
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: httparty
|
141
|
+
prerelease: false
|
142
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
143
|
+
none: false
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
hash: 11
|
148
|
+
segments:
|
149
|
+
- 0
|
150
|
+
- 7
|
151
|
+
- 4
|
152
|
+
version: 0.7.4
|
153
|
+
type: :runtime
|
154
|
+
version_requirements: *id009
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: sqlite3
|
157
|
+
prerelease: false
|
158
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
159
|
+
none: false
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
hash: 3
|
164
|
+
segments:
|
165
|
+
- 0
|
166
|
+
version: "0"
|
167
|
+
type: :runtime
|
168
|
+
version_requirements: *id010
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: character-encodings
|
171
|
+
prerelease: false
|
172
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
hash: 3
|
178
|
+
segments:
|
179
|
+
- 0
|
180
|
+
version: "0"
|
181
|
+
type: :runtime
|
182
|
+
version_requirements: *id011
|
183
|
+
- !ruby/object:Gem::Dependency
|
184
|
+
name: nokogiri
|
185
|
+
prerelease: false
|
186
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
187
|
+
none: false
|
188
|
+
requirements:
|
189
|
+
- - ">"
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
hash: 7
|
192
|
+
segments:
|
193
|
+
- 1
|
194
|
+
- 4
|
195
|
+
- 0
|
196
|
+
version: 1.4.0
|
197
|
+
type: :runtime
|
198
|
+
version_requirements: *id012
|
199
|
+
- !ruby/object:Gem::Dependency
|
200
|
+
name: ruby-mp3info
|
201
|
+
prerelease: false
|
202
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
203
|
+
none: false
|
204
|
+
requirements:
|
205
|
+
- - ">"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
hash: 7
|
208
|
+
segments:
|
209
|
+
- 0
|
210
|
+
- 6
|
211
|
+
- 0
|
212
|
+
version: 0.6.0
|
213
|
+
type: :runtime
|
214
|
+
version_requirements: *id013
|
215
|
+
description: Ruby HypeM utility
|
216
|
+
email: sam.vincent@mac.com
|
217
|
+
executables:
|
218
|
+
- kanye
|
219
|
+
extensions: []
|
220
|
+
|
221
|
+
extra_rdoc_files:
|
222
|
+
- LICENSE.txt
|
223
|
+
- README.rdoc
|
224
|
+
files:
|
225
|
+
- .document
|
226
|
+
- Gemfile
|
227
|
+
- LICENSE.txt
|
228
|
+
- README.rdoc
|
229
|
+
- Rakefile
|
230
|
+
- VERSION
|
231
|
+
- bin/kanye
|
232
|
+
- lib/kanye.rb
|
233
|
+
- lib/kanye/history.rb
|
234
|
+
- lib/kanye/track.rb
|
235
|
+
- spec/data/sample.html
|
236
|
+
- spec/kanye/track_spec.rb
|
237
|
+
- spec/kanye_spec.rb
|
238
|
+
- spec/spec_helper.rb
|
239
|
+
has_rdoc: true
|
240
|
+
homepage: http://github.com/samvincent/kanye
|
241
|
+
licenses:
|
242
|
+
- MIT
|
243
|
+
post_install_message:
|
244
|
+
rdoc_options: []
|
245
|
+
|
246
|
+
require_paths:
|
247
|
+
- lib
|
248
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
249
|
+
none: false
|
250
|
+
requirements:
|
251
|
+
- - ">="
|
252
|
+
- !ruby/object:Gem::Version
|
253
|
+
hash: 3
|
254
|
+
segments:
|
255
|
+
- 0
|
256
|
+
version: "0"
|
257
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
258
|
+
none: false
|
259
|
+
requirements:
|
260
|
+
- - ">="
|
261
|
+
- !ruby/object:Gem::Version
|
262
|
+
hash: 3
|
263
|
+
segments:
|
264
|
+
- 0
|
265
|
+
version: "0"
|
266
|
+
requirements: []
|
267
|
+
|
268
|
+
rubyforge_project:
|
269
|
+
rubygems_version: 1.6.2
|
270
|
+
signing_key:
|
271
|
+
specification_version: 3
|
272
|
+
summary: Ruby HypeM utility
|
273
|
+
test_files:
|
274
|
+
- spec/kanye/track_spec.rb
|
275
|
+
- spec/kanye_spec.rb
|
276
|
+
- spec/spec_helper.rb
|