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 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