kanye 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
  gem 'httparty', ">= 0.7.4"
3
3
  gem 'sqlite3'
4
- gem 'nokogiri'
5
4
  gem 'ruby-mp3info', '0.6.14'
6
5
  gem 'rb-appscript', '0.6.1'
7
6
 
data/History CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.2.0 2012-02-10
2
+ * major enhancements
3
+ * Removed Nokogiri dependency, making it easier to install.
4
+ * Updated display
5
+ * S3 url bug fix
1
6
  == 0.1.2 2011-06-06
2
7
  * major enhancements
3
8
  * Added rb-appscript and iTunes class so tracks can be added to playlists
@@ -1,12 +1,11 @@
1
1
  = Kanye
2
2
 
3
- A utility that helps you download all of your favorite tracks from your favorite music blog aggregator.
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 'rake/testtask'
34
- Rake::TestTask.new(:spec) do |spec|
35
- spec.libs << 'lib' << 'spec'
36
- spec.pattern = 'spec/**/*_spec.rb'
37
- spec.verbose = true
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
- task :default => :spec
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.2
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 |page|
90
- user = config["username"]
91
- page = Kanye::Page.new(user, page)
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
@@ -5,15 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{kanye}
8
- s.version = "0.1.2"
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 = ["Sam Vincent"]
12
- s.date = %q{2011-06-30}
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 = ["kanye"]
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 = ["MIT"]
45
- s.require_paths = ["lib"]
46
- s.rubygems_version = %q{1.6.2}
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
@@ -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
@@ -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)
@@ -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 = html_doc.css('.track_name .artist').map { |node| node.content.strip }
41
- titles = html_doc.css('.track_name .artist + a').map { |node| node.content.strip }
42
- [ids, keys, titles, artists].each { |a| a.flatten!; a.reverse! }
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],
@@ -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
- print "Attempting to download ", self
27
- puts "\n\tDownloading song..."
28
-
29
- mp3_url = response.parsed_response["url"]
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
- "(" + [key, title, artist].join(", ") + ")"
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
@@ -12,27 +12,45 @@ describe Kanye::Track do
12
12
  end
13
13
 
14
14
  describe "to_s" do
15
- it "should display the key, artist, and title" do
16
- @track.to_s.should == "(key, Rubicon, Alan Braxe)"
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
@@ -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.reverse!.each_with_index do |track, index|
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
- hash: 31
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
- date: 2011-06-30 00:00:00 -07:00
19
- default_executable: kanye
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
- prerelease: false
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- hash: 3
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
- 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
35
+ version_requirements: *70343478859840
36
+ - !ruby/object:Gem::Dependency
66
37
  name: ruby-mp3info
67
- prerelease: false
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
- requirement: &id005 !ruby/object:Gem::Requirement
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
- requirement: &id006 !ruby/object:Gem::Requirement
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
- hash: 7
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
- requirement: &id007 !ruby/object:Gem::Requirement
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
- requirement: &id008 !ruby/object:Gem::Requirement
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
- requirement: &id009 !ruby/object:Gem::Requirement
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
- requirement: &id010 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id011 !ruby/object:Gem::Requirement
177
- none: false
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
- prerelease: false
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
- requirement: &id013 !ruby/object:Gem::Requirement
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
- version_requirements: *id013
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
- hash: 3
266
- segments:
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
- hash: 3
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.2
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