kanye 0.1.2 → 0.2.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/Gemfile +0 -1
- data/History +5 -0
- data/README.rdoc +1 -2
- data/Rakefile +10 -8
- data/VERSION +1 -1
- data/bin/kanye +18 -12
- data/kanye.gemspec +7 -14
- data/lib/kanye.rb +9 -2
- data/lib/kanye/itunes.rb +1 -1
- data/lib/kanye/page.rb +4 -5
- data/lib/kanye/track.rb +28 -6
- data/spec/kanye/track_spec.rb +22 -4
- data/spec/kanye_spec.rb +1 -1
- metadata +99 -195
data/Gemfile
CHANGED
data/History
CHANGED
data/README.rdoc
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
= Kanye
|
2
2
|
|
3
|
-
A utility that
|
3
|
+
A utility that syncs all of your favorite tracks from your favorite music blog aggregator.
|
4
4
|
|
5
5
|
== Installation
|
6
6
|
|
7
7
|
gem install kanye
|
8
8
|
|
9
|
-
You'll need to have XCode installed because *Nokogiri* is a dependency.
|
10
9
|
The first time you run +kanye+, it will ask you for your user name.
|
11
10
|
|
12
11
|
$ kanye
|
data/Rakefile
CHANGED
@@ -23,18 +23,20 @@ Jeweler::Tasks.new do |gem|
|
|
23
23
|
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
24
|
gem.add_runtime_dependency 'httparty', '>= 0.7.4'
|
25
25
|
gem.add_runtime_dependency 'sqlite3'
|
26
|
-
gem.add_runtime_dependency 'nokogiri', '> 1.4.0'
|
27
26
|
gem.add_runtime_dependency 'ruby-mp3info', '0.6.14'
|
28
27
|
gem.add_runtime_dependency 'rb-appscript', '0.6.1'
|
29
28
|
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
30
29
|
end
|
31
30
|
Jeweler::RubygemsDotOrgTasks.new
|
32
31
|
|
33
|
-
require '
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
32
|
+
require 'bundler/gem_tasks'
|
33
|
+
require 'rspec/core/rake_task'
|
34
|
+
|
35
|
+
desc 'Default: run specs.'
|
36
|
+
task :default => :spec
|
39
37
|
|
40
|
-
|
38
|
+
desc "Run specs"
|
39
|
+
RSpec::Core::RakeTask.new do |t|
|
40
|
+
t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
|
41
|
+
# Put spec opts in a file named .rspec in root
|
42
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/bin/kanye
CHANGED
@@ -56,7 +56,7 @@ end
|
|
56
56
|
|
57
57
|
# Setup
|
58
58
|
if File.exist?(Kanye::DEFAULT_CONFIGURATION_PATH)
|
59
|
-
config = load_configuration(Kanye::DEFAULT_CONFIGURATION_PATH)
|
59
|
+
Kanye.config = load_configuration(Kanye::DEFAULT_CONFIGURATION_PATH)
|
60
60
|
else
|
61
61
|
puts "It appears Kanye doesn't know who you are yet."
|
62
62
|
print "What is your h-y-p-e name?"
|
@@ -68,34 +68,40 @@ else
|
|
68
68
|
f.write "db: #{Kanye::DEFAULT_DB_PATH}\n"
|
69
69
|
f.write "playlist: false\n"
|
70
70
|
end
|
71
|
-
config = load_configuration(Kanye::DEFAULT_CONFIGURATION_PATH)
|
71
|
+
Kanye.config = load_configuration(Kanye::DEFAULT_CONFIGURATION_PATH)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Arguments
|
75
|
+
if ARGV.include?('-d') || ARGV.include?('--debug')
|
76
|
+
Kanye.config["debug"] = true
|
72
77
|
end
|
73
78
|
|
74
79
|
# Create the download directory if it doesn't exist yet
|
75
|
-
unless File.directory? config["path"]
|
76
|
-
Dir::mkdir config["path"]
|
77
|
-
puts "Created directory => #{config["path"]}"
|
80
|
+
unless File.directory? Kanye.config["path"]
|
81
|
+
Dir::mkdir Kanye.config["path"]
|
82
|
+
puts "Created directory => #{Kanye.config["path"]}"
|
78
83
|
end
|
79
84
|
|
80
85
|
# Create the Database if it doesn't exist yet
|
81
|
-
unless File.exists? config["db"]
|
82
|
-
db = SQLite3::Database.new(config["db"])
|
86
|
+
unless File.exists? Kanye.config["db"]
|
87
|
+
db = SQLite3::Database.new(Kanye.config["db"])
|
83
88
|
db.execute("CREATE TABLE tracks (id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT);")
|
84
|
-
puts "Created database => #{config["db"]}"
|
89
|
+
puts "Created database => #{Kanye.config["db"]}"
|
85
90
|
end
|
86
91
|
|
87
92
|
# Grab as many pages as configured
|
88
93
|
pages = []
|
89
|
-
(1..(config["pages"])).each do |
|
90
|
-
user = config["username"]
|
91
|
-
page = Kanye::Page.new(user,
|
94
|
+
(1..(Kanye.config["pages"])).each do |index|
|
95
|
+
user = Kanye.config["username"]
|
96
|
+
page = Kanye::Page.new(user, index)
|
92
97
|
pages << page
|
93
98
|
|
94
99
|
page.download_all!
|
95
100
|
end
|
96
101
|
|
97
|
-
if config["playlist"].to_s == "true"
|
102
|
+
if Kanye.config["playlist"].to_s == "true"
|
98
103
|
itunes = Kanye::ITunes.new
|
104
|
+
puts %{Adding tracks to iTunes...}
|
99
105
|
pages.reverse.each do |page|
|
100
106
|
page.tracks.reverse.each do |track|
|
101
107
|
begin
|
data/kanye.gemspec
CHANGED
@@ -5,15 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{kanye}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{
|
13
|
-
s.default_executable = %q{kanye}
|
11
|
+
s.authors = [%q{Sam Vincent}]
|
12
|
+
s.date = %q{2012-02-11}
|
14
13
|
s.description = %q{Lyrical genius, voice of a generation.}
|
15
14
|
s.email = %q{sam.vincent@mac.com}
|
16
|
-
s.executables = [
|
15
|
+
s.executables = [%q{kanye}]
|
17
16
|
s.extra_rdoc_files = [
|
18
17
|
"LICENSE.txt",
|
19
18
|
"README.rdoc"
|
@@ -41,9 +40,9 @@ Gem::Specification.new do |s|
|
|
41
40
|
"spec/spec_helper.rb"
|
42
41
|
]
|
43
42
|
s.homepage = %q{http://github.com/samvincent/kanye}
|
44
|
-
s.licenses = [
|
45
|
-
s.require_paths = [
|
46
|
-
s.rubygems_version = %q{1.6
|
43
|
+
s.licenses = [%q{MIT}]
|
44
|
+
s.require_paths = [%q{lib}]
|
45
|
+
s.rubygems_version = %q{1.8.6}
|
47
46
|
s.summary = %q{Ruby H-Y-P-E utility}
|
48
47
|
s.test_files = [
|
49
48
|
"spec/kanye/itunes_spec.rb",
|
@@ -58,7 +57,6 @@ Gem::Specification.new do |s|
|
|
58
57
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
59
58
|
s.add_runtime_dependency(%q<httparty>, [">= 0.7.4"])
|
60
59
|
s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
|
61
|
-
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
62
60
|
s.add_runtime_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
|
63
61
|
s.add_runtime_dependency(%q<rb-appscript>, ["= 0.6.1"])
|
64
62
|
s.add_development_dependency(%q<rspec>, [">= 2"])
|
@@ -66,13 +64,11 @@ Gem::Specification.new do |s|
|
|
66
64
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
67
65
|
s.add_runtime_dependency(%q<httparty>, [">= 0.7.4"])
|
68
66
|
s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
|
69
|
-
s.add_runtime_dependency(%q<nokogiri>, ["> 1.4.0"])
|
70
67
|
s.add_runtime_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
|
71
68
|
s.add_runtime_dependency(%q<rb-appscript>, ["= 0.6.1"])
|
72
69
|
else
|
73
70
|
s.add_dependency(%q<httparty>, [">= 0.7.4"])
|
74
71
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
75
|
-
s.add_dependency(%q<nokogiri>, [">= 0"])
|
76
72
|
s.add_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
|
77
73
|
s.add_dependency(%q<rb-appscript>, ["= 0.6.1"])
|
78
74
|
s.add_dependency(%q<rspec>, [">= 2"])
|
@@ -80,14 +76,12 @@ Gem::Specification.new do |s|
|
|
80
76
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
81
77
|
s.add_dependency(%q<httparty>, [">= 0.7.4"])
|
82
78
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
83
|
-
s.add_dependency(%q<nokogiri>, ["> 1.4.0"])
|
84
79
|
s.add_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
|
85
80
|
s.add_dependency(%q<rb-appscript>, ["= 0.6.1"])
|
86
81
|
end
|
87
82
|
else
|
88
83
|
s.add_dependency(%q<httparty>, [">= 0.7.4"])
|
89
84
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
90
|
-
s.add_dependency(%q<nokogiri>, [">= 0"])
|
91
85
|
s.add_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
|
92
86
|
s.add_dependency(%q<rb-appscript>, ["= 0.6.1"])
|
93
87
|
s.add_dependency(%q<rspec>, [">= 2"])
|
@@ -95,7 +89,6 @@ Gem::Specification.new do |s|
|
|
95
89
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
96
90
|
s.add_dependency(%q<httparty>, [">= 0.7.4"])
|
97
91
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
98
|
-
s.add_dependency(%q<nokogiri>, ["> 1.4.0"])
|
99
92
|
s.add_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
|
100
93
|
s.add_dependency(%q<rb-appscript>, ["= 0.6.1"])
|
101
94
|
end
|
data/lib/kanye.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'httparty'
|
2
|
-
require 'nokogiri'
|
3
2
|
require 'mp3info'
|
4
3
|
require 'sqlite3'
|
5
4
|
|
@@ -13,7 +12,7 @@ module Kanye
|
|
13
12
|
DEFAULT_DOWNLOAD_PATH = File.expand_path("~/Music/Kanye/")
|
14
13
|
DEFAULT_DB_PATH = File.expand_path("~/Music/Kanye/.history.db")
|
15
14
|
BASE_URL = 'h' + 'y' + 'p' + 'e' + 'm' + '.com'
|
16
|
-
|
15
|
+
|
17
16
|
class << self
|
18
17
|
def download_path
|
19
18
|
@@download_path ||= DEFAULT_DOWNLOAD_PATH
|
@@ -22,5 +21,13 @@ module Kanye
|
|
22
21
|
def db_path
|
23
22
|
@@db_path ||= DEFAULT_DB_PATH
|
24
23
|
end
|
24
|
+
|
25
|
+
def config
|
26
|
+
@@config ||= {}
|
27
|
+
end
|
28
|
+
|
29
|
+
def config=(config)
|
30
|
+
@@config = config
|
31
|
+
end
|
25
32
|
end
|
26
33
|
end
|
data/lib/kanye/itunes.rb
CHANGED
@@ -8,7 +8,7 @@ module Kanye
|
|
8
8
|
list = playlist(playlist_name) || create_playlist(playlist_name)
|
9
9
|
raise "Playlist could not be found or created" unless list
|
10
10
|
track = itunes.add MacTypes::Alias.path(file)
|
11
|
-
track.duplicate(:to => list)
|
11
|
+
track.duplicate(:to => list) if track
|
12
12
|
end
|
13
13
|
|
14
14
|
def playlist(name)
|
data/lib/kanye/page.rb
CHANGED
@@ -22,7 +22,7 @@ module Kanye
|
|
22
22
|
end
|
23
23
|
|
24
24
|
history.insert(current_track)
|
25
|
-
puts "\tInserted song into db"
|
25
|
+
puts "\tInserted song into db" if Kanye.config["debug"]
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -34,12 +34,11 @@ module Kanye
|
|
34
34
|
protected
|
35
35
|
|
36
36
|
def parse_response
|
37
|
-
html_doc = Nokogiri::HTML(@html)
|
38
37
|
ids = @html.scan /\tid:\'(\w*)\'/
|
39
38
|
keys = @html.scan /\tkey:\s+?\'([\d\w]*)\'/
|
40
|
-
artists =
|
41
|
-
titles =
|
42
|
-
[ids, keys, titles, artists].each { |a| a.flatten
|
39
|
+
artists = @html.scan /\tartist:\'(.*)\',/
|
40
|
+
titles = @html.scan(/<a class="artist"[^<]*<[^<]*<a title=[^>]*>([^<]*)<\/a>/m).flatten.map(&:strip)
|
41
|
+
[ids, keys, titles, artists].each { |a| a.flatten! }
|
43
42
|
|
44
43
|
ids.each_with_index do |id, i|
|
45
44
|
@tracks << Track.new(:id => ids[i],
|
data/lib/kanye/track.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'uri'
|
3
|
+
|
1
4
|
module Kanye
|
2
5
|
class NoKeyError < StandardError; end
|
3
6
|
|
@@ -22,11 +25,16 @@ module Kanye
|
|
22
25
|
response = HTTParty.get(url, :headers => {'cookie' => cookie})
|
23
26
|
raise "Response Code '#{response.code}' - Something has changed." unless response.code == 200
|
24
27
|
|
28
|
+
print self, "[ Downloading…"
|
25
29
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
+
mp3_url = URI.escape(response.parsed_response["url"])
|
31
|
+
|
32
|
+
if mp3_url =~ /http:\/\/.*\.s3\.amazonaws\.com\//
|
33
|
+
mp3_url = correct_s3_url!(mp3_url)
|
34
|
+
end
|
35
|
+
|
36
|
+
puts mp3_url if Kanye.config["debug"]
|
37
|
+
|
30
38
|
mp3_response = HTTParty.get(mp3_url)
|
31
39
|
|
32
40
|
File.open(filename, "wb") do |f|
|
@@ -34,10 +42,11 @@ module Kanye
|
|
34
42
|
end
|
35
43
|
|
36
44
|
set_id3_tags!
|
45
|
+
print " complete ]"
|
37
46
|
end
|
38
47
|
|
39
48
|
def to_s
|
40
|
-
|
49
|
+
[truncate(title, 42, '…').ljust(42), "| ", truncate(artist, 42, '…').ljust(32)].join
|
41
50
|
end
|
42
51
|
|
43
52
|
def filename
|
@@ -46,12 +55,25 @@ module Kanye
|
|
46
55
|
end
|
47
56
|
|
48
57
|
private
|
49
|
-
|
58
|
+
|
50
59
|
def set_id3_tags!
|
51
60
|
Mp3Info.open(filename) do |mp3|
|
52
61
|
mp3.tag.artist = artist
|
53
62
|
mp3.tag.title = title
|
54
63
|
end
|
64
|
+
rescue Encoding::CompatibilityError => e
|
65
|
+
puts "Error writing overwriting mp3 info => #{e.message}"
|
66
|
+
end
|
67
|
+
|
68
|
+
# underscores in s3 urls raise InvalidURI errors, so we'll convert the url
|
69
|
+
def correct_s3_url!(url)
|
70
|
+
bucket, path = url.scan(/http:\/\/(\w*)\.s3\.amazonaws\.com\/(.*)/).pop
|
71
|
+
url = "http://s3.amazonaws.com/#{bucket}/#{path}"
|
72
|
+
end
|
73
|
+
|
74
|
+
def truncate(text, size, omission='...')
|
75
|
+
truncated = text[0, omission ? (size - omission.size) : size]
|
76
|
+
omission && truncated.size == (size - omission.size) ? text + omission : text
|
55
77
|
end
|
56
78
|
end
|
57
79
|
end
|
data/spec/kanye/track_spec.rb
CHANGED
@@ -12,27 +12,45 @@ describe Kanye::Track do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
describe "to_s" do
|
15
|
-
it "should display the
|
16
|
-
@track.to_s.should == "
|
15
|
+
it "should display the justified artist, and title" do
|
16
|
+
@track.to_s.should == "Rubicon | Alan Braxe "
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
describe "download!" do
|
21
21
|
before do
|
22
|
-
HTTParty.stub!(:get) { mock(:response, :parsed_response => {}, :code => 200) }
|
22
|
+
HTTParty.stub!(:get) { mock(:response, :parsed_response => {'url' => ''}, :code => 200) }
|
23
23
|
File.stub!(:open)
|
24
24
|
Mp3Info.stub!(:open)
|
25
25
|
end
|
26
26
|
|
27
|
-
it "should request mp3 with cookie" do
|
27
|
+
it "should request mp3 url with cookie" do
|
28
28
|
HTTParty.should_receive(:get).with(@track.url, {:headers => {"cookie" => @track.cookie}})
|
29
29
|
@track.download!
|
30
30
|
end
|
31
31
|
|
32
|
+
it "should url escape returned url in mp3 download call" do
|
33
|
+
unescaped_url = "http://offtheradarmusic.com/audio/Synthetiseur (Bestrack Nostalgia Remix).mp3"
|
34
|
+
escaped_url = "http://offtheradarmusic.com/audio/Synthetiseur%20(Bestrack%20Nostalgia%20Remix).mp3"
|
35
|
+
response = mock(:parsed_response => {'url' => unescaped_url}, :code => 200)
|
36
|
+
HTTParty.stub!(:get).once.and_return(response)
|
37
|
+
HTTParty.should_receive(:get).with(escaped_url).once
|
38
|
+
@track.download!
|
39
|
+
end
|
40
|
+
|
32
41
|
# This spec could use some love
|
33
42
|
it "should set ID3 tags" do
|
34
43
|
@track.should_receive(:set_id3_tags!)
|
35
44
|
@track.download!
|
36
45
|
end
|
46
|
+
|
47
|
+
it "should correct s3 urls to avoid InvalidURI error" do
|
48
|
+
uncorrected_url = 'http://foo_tracks.s3.amazonaws.com/cms/foo/tracks/1234567.mp3'
|
49
|
+
corrected_url = 'http://s3.amazonaws.com/foo_tracks/cms/foo/tracks/1234567.mp3'
|
50
|
+
response = mock(:parsed_response => {'url' => uncorrected_url}, :code => 200)
|
51
|
+
HTTParty.stub!(:get).once.and_return(response)
|
52
|
+
HTTParty.should_receive(:get).with(corrected_url).once
|
53
|
+
@track.download!
|
54
|
+
end
|
37
55
|
end
|
38
56
|
end
|
data/spec/kanye_spec.rb
CHANGED
@@ -37,7 +37,7 @@ describe Kanye::Page do
|
|
37
37
|
["Danger Granger","Daniel is a Wild Cat (Porter Robinson vs Bat For Lashes)","1asad","65257400b1a1266adb3173f029bbb1a8","yesplease"],
|
38
38
|
["DEFEP","Rolling it Right (Afrojack vs Adele)","1asae","63cbcb3a740e1ad0cb7163b23e33a9d6","yesplease"]
|
39
39
|
]
|
40
|
-
results.
|
40
|
+
results.each_with_index do |track, index|
|
41
41
|
describe "track No. #{index+1}" do
|
42
42
|
subject { kanye.tracks[index] }
|
43
43
|
its(:artist) { should == results[index][0] }
|
metadata
CHANGED
@@ -1,233 +1,146 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: kanye
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 2
|
10
|
-
version: 0.1.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Sam Vincent
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-11 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: httparty
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70343478860320 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 11
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
- 7
|
33
|
-
- 4
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
34
21
|
version: 0.7.4
|
35
22
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: sqlite3
|
39
23
|
prerelease: false
|
40
|
-
|
24
|
+
version_requirements: *70343478860320
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: sqlite3
|
27
|
+
requirement: &70343478859840 !ruby/object:Gem::Requirement
|
41
28
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
49
33
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: nokogiri
|
53
34
|
prerelease: false
|
54
|
-
|
55
|
-
|
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
|
35
|
+
version_requirements: *70343478859840
|
36
|
+
- !ruby/object:Gem::Dependency
|
66
37
|
name: ruby-mp3info
|
67
|
-
|
68
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70343478859360 !ruby/object:Gem::Requirement
|
69
39
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
hash: 27
|
74
|
-
segments:
|
75
|
-
- 0
|
76
|
-
- 6
|
77
|
-
- 14
|
40
|
+
requirements:
|
41
|
+
- - =
|
42
|
+
- !ruby/object:Gem::Version
|
78
43
|
version: 0.6.14
|
79
44
|
type: :runtime
|
80
|
-
version_requirements: *id004
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: rb-appscript
|
83
45
|
prerelease: false
|
84
|
-
|
46
|
+
version_requirements: *70343478859360
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rb-appscript
|
49
|
+
requirement: &70343478858880 !ruby/object:Gem::Requirement
|
85
50
|
none: false
|
86
|
-
requirements:
|
87
|
-
- -
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
hash: 5
|
90
|
-
segments:
|
91
|
-
- 0
|
92
|
-
- 6
|
93
|
-
- 1
|
51
|
+
requirements:
|
52
|
+
- - =
|
53
|
+
- !ruby/object:Gem::Version
|
94
54
|
version: 0.6.1
|
95
55
|
type: :runtime
|
96
|
-
version_requirements: *id005
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rspec
|
99
56
|
prerelease: false
|
100
|
-
|
57
|
+
version_requirements: *70343478858880
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rspec
|
60
|
+
requirement: &70343478858400 !ruby/object:Gem::Requirement
|
101
61
|
none: false
|
102
|
-
requirements:
|
103
|
-
- -
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
segments:
|
107
|
-
- 2
|
108
|
-
version: "2"
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '2'
|
109
66
|
type: :development
|
110
|
-
version_requirements: *id006
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: bundler
|
113
67
|
prerelease: false
|
114
|
-
|
68
|
+
version_requirements: *70343478858400
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: &70343478857920 !ruby/object:Gem::Requirement
|
115
72
|
none: false
|
116
|
-
requirements:
|
73
|
+
requirements:
|
117
74
|
- - ~>
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
hash: 23
|
120
|
-
segments:
|
121
|
-
- 1
|
122
|
-
- 0
|
123
|
-
- 0
|
75
|
+
- !ruby/object:Gem::Version
|
124
76
|
version: 1.0.0
|
125
77
|
type: :development
|
126
|
-
version_requirements: *id007
|
127
|
-
- !ruby/object:Gem::Dependency
|
128
|
-
name: jeweler
|
129
78
|
prerelease: false
|
130
|
-
|
79
|
+
version_requirements: *70343478857920
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: jeweler
|
82
|
+
requirement: &70343478873800 !ruby/object:Gem::Requirement
|
131
83
|
none: false
|
132
|
-
requirements:
|
84
|
+
requirements:
|
133
85
|
- - ~>
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
hash: 7
|
136
|
-
segments:
|
137
|
-
- 1
|
138
|
-
- 5
|
139
|
-
- 2
|
86
|
+
- !ruby/object:Gem::Version
|
140
87
|
version: 1.5.2
|
141
88
|
type: :development
|
142
|
-
version_requirements: *id008
|
143
|
-
- !ruby/object:Gem::Dependency
|
144
|
-
name: httparty
|
145
89
|
prerelease: false
|
146
|
-
|
90
|
+
version_requirements: *70343478873800
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: httparty
|
93
|
+
requirement: &70343478873320 !ruby/object:Gem::Requirement
|
147
94
|
none: false
|
148
|
-
requirements:
|
149
|
-
- -
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
hash: 11
|
152
|
-
segments:
|
153
|
-
- 0
|
154
|
-
- 7
|
155
|
-
- 4
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
156
98
|
version: 0.7.4
|
157
99
|
type: :runtime
|
158
|
-
version_requirements: *id009
|
159
|
-
- !ruby/object:Gem::Dependency
|
160
|
-
name: sqlite3
|
161
100
|
prerelease: false
|
162
|
-
|
101
|
+
version_requirements: *70343478873320
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: sqlite3
|
104
|
+
requirement: &70343478872840 !ruby/object:Gem::Requirement
|
163
105
|
none: false
|
164
|
-
requirements:
|
165
|
-
- -
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
|
168
|
-
segments:
|
169
|
-
- 0
|
170
|
-
version: "0"
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
171
110
|
type: :runtime
|
172
|
-
version_requirements: *id010
|
173
|
-
- !ruby/object:Gem::Dependency
|
174
|
-
name: nokogiri
|
175
111
|
prerelease: false
|
176
|
-
|
177
|
-
|
178
|
-
requirements:
|
179
|
-
- - ">"
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
hash: 7
|
182
|
-
segments:
|
183
|
-
- 1
|
184
|
-
- 4
|
185
|
-
- 0
|
186
|
-
version: 1.4.0
|
187
|
-
type: :runtime
|
188
|
-
version_requirements: *id011
|
189
|
-
- !ruby/object:Gem::Dependency
|
112
|
+
version_requirements: *70343478872840
|
113
|
+
- !ruby/object:Gem::Dependency
|
190
114
|
name: ruby-mp3info
|
191
|
-
|
192
|
-
requirement: &id012 !ruby/object:Gem::Requirement
|
115
|
+
requirement: &70343478872360 !ruby/object:Gem::Requirement
|
193
116
|
none: false
|
194
|
-
requirements:
|
195
|
-
- -
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
hash: 27
|
198
|
-
segments:
|
199
|
-
- 0
|
200
|
-
- 6
|
201
|
-
- 14
|
117
|
+
requirements:
|
118
|
+
- - =
|
119
|
+
- !ruby/object:Gem::Version
|
202
120
|
version: 0.6.14
|
203
121
|
type: :runtime
|
204
|
-
version_requirements: *id012
|
205
|
-
- !ruby/object:Gem::Dependency
|
206
|
-
name: rb-appscript
|
207
122
|
prerelease: false
|
208
|
-
|
123
|
+
version_requirements: *70343478872360
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: rb-appscript
|
126
|
+
requirement: &70343478871880 !ruby/object:Gem::Requirement
|
209
127
|
none: false
|
210
|
-
requirements:
|
211
|
-
- -
|
212
|
-
- !ruby/object:Gem::Version
|
213
|
-
hash: 5
|
214
|
-
segments:
|
215
|
-
- 0
|
216
|
-
- 6
|
217
|
-
- 1
|
128
|
+
requirements:
|
129
|
+
- - =
|
130
|
+
- !ruby/object:Gem::Version
|
218
131
|
version: 0.6.1
|
219
132
|
type: :runtime
|
220
|
-
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *70343478871880
|
221
135
|
description: Lyrical genius, voice of a generation.
|
222
136
|
email: sam.vincent@mac.com
|
223
|
-
executables:
|
137
|
+
executables:
|
224
138
|
- kanye
|
225
139
|
extensions: []
|
226
|
-
|
227
|
-
extra_rdoc_files:
|
140
|
+
extra_rdoc_files:
|
228
141
|
- LICENSE.txt
|
229
142
|
- README.rdoc
|
230
|
-
files:
|
143
|
+
files:
|
231
144
|
- .document
|
232
145
|
- Gemfile
|
233
146
|
- History
|
@@ -248,41 +161,32 @@ files:
|
|
248
161
|
- spec/kanye/track_spec.rb
|
249
162
|
- spec/kanye_spec.rb
|
250
163
|
- spec/spec_helper.rb
|
251
|
-
has_rdoc: true
|
252
164
|
homepage: http://github.com/samvincent/kanye
|
253
|
-
licenses:
|
165
|
+
licenses:
|
254
166
|
- MIT
|
255
167
|
post_install_message:
|
256
168
|
rdoc_options: []
|
257
|
-
|
258
|
-
require_paths:
|
169
|
+
require_paths:
|
259
170
|
- lib
|
260
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
261
172
|
none: false
|
262
|
-
requirements:
|
263
|
-
- -
|
264
|
-
- !ruby/object:Gem::Version
|
265
|
-
|
266
|
-
|
267
|
-
- 0
|
268
|
-
version: "0"
|
269
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ! '>='
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
270
178
|
none: false
|
271
|
-
requirements:
|
272
|
-
- -
|
273
|
-
- !ruby/object:Gem::Version
|
274
|
-
|
275
|
-
segments:
|
276
|
-
- 0
|
277
|
-
version: "0"
|
179
|
+
requirements:
|
180
|
+
- - ! '>='
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
278
183
|
requirements: []
|
279
|
-
|
280
184
|
rubyforge_project:
|
281
|
-
rubygems_version: 1.6
|
185
|
+
rubygems_version: 1.8.6
|
282
186
|
signing_key:
|
283
187
|
specification_version: 3
|
284
188
|
summary: Ruby H-Y-P-E utility
|
285
|
-
test_files:
|
189
|
+
test_files:
|
286
190
|
- spec/kanye/itunes_spec.rb
|
287
191
|
- spec/kanye/track_spec.rb
|
288
192
|
- spec/kanye_spec.rb
|