kanye 0.1.1 → 0.1.2

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
@@ -3,6 +3,7 @@ gem 'httparty', ">= 0.7.4"
3
3
  gem 'sqlite3'
4
4
  gem 'nokogiri'
5
5
  gem 'ruby-mp3info', '0.6.14'
6
+ gem 'rb-appscript', '0.6.1'
6
7
 
7
8
  group :development do
8
9
  gem "rspec", ">= 2"
data/History ADDED
@@ -0,0 +1,3 @@
1
+ == 0.1.2 2011-06-06
2
+ * major enhancements
3
+ * Added rb-appscript and iTunes class so tracks can be added to playlists
data/README.rdoc CHANGED
@@ -13,6 +13,12 @@ The first time you run +kanye+, it will ask you for your user name.
13
13
  It appears Kanye hasn't been configured yet.
14
14
  What is your hype user name?
15
15
 
16
- This will output to +~/.kanye_rc+ some YAML options. Your downloads will now begin.
16
+ This will output options to <tt>~/.kanye_rc</tt>. Your downloads will now begin.
17
17
 
18
18
  Now that you've configured it, just run +kanye+ any time to go over your latest favorites.
19
+
20
+ == iTunes integration
21
+
22
+ By adding the following to your <tt>~/.kanye_rc</tt> file, Kanye will add tracks to your iTunes library and add them to a playlist named for the current month and year (ie."June 2011")
23
+
24
+ playlist: true
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ Jeweler::Tasks.new do |gem|
15
15
  gem.name = "kanye"
16
16
  gem.homepage = "http://github.com/samvincent/kanye"
17
17
  gem.license = "MIT"
18
- gem.summary = %Q{Ruby HypeM utility}
18
+ gem.summary = %Q{Ruby H-Y-P-E utility}
19
19
  gem.description = %Q{Lyrical genius, voice of a generation.}
20
20
  gem.email = "sam.vincent@mac.com"
21
21
  gem.authors = ["Sam Vincent"]
@@ -25,6 +25,7 @@ Jeweler::Tasks.new do |gem|
25
25
  gem.add_runtime_dependency 'sqlite3'
26
26
  gem.add_runtime_dependency 'nokogiri', '> 1.4.0'
27
27
  gem.add_runtime_dependency 'ruby-mp3info', '0.6.14'
28
+ gem.add_runtime_dependency 'rb-appscript', '0.6.1'
28
29
  # gem.add_development_dependency 'rspec', '> 1.2.3'
29
30
  end
30
31
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/bin/kanye CHANGED
@@ -4,6 +4,9 @@ $:.unshift(File.join(File.dirname(__FILE__), "/../lib"))
4
4
  require 'rubygems'
5
5
  require 'kanye'
6
6
 
7
+ require 'shellwords'
8
+ include Shellwords
9
+
7
10
  KANYE_GLASSES = <<-GLASSES
8
11
 
9
12
  ..:ccCCO888@@@@@@@@@@@@@@@@@@@@@@88Coc:
@@ -56,13 +59,14 @@ if File.exist?(Kanye::DEFAULT_CONFIGURATION_PATH)
56
59
  config = load_configuration(Kanye::DEFAULT_CONFIGURATION_PATH)
57
60
  else
58
61
  puts "It appears Kanye doesn't know who you are yet."
59
- print "What is your hype name?"
62
+ print "What is your h-y-p-e name?"
60
63
  name = gets.chomp
61
64
  File.open(Kanye::DEFAULT_CONFIGURATION_PATH, "w") do |f|
62
65
  f.write "username: #{name}\n"
63
66
  f.write "pages: 5\n"
64
67
  f.write "path: #{Kanye::DEFAULT_DOWNLOAD_PATH}\n"
65
68
  f.write "db: #{Kanye::DEFAULT_DB_PATH}\n"
69
+ f.write "playlist: false\n"
66
70
  end
67
71
  config = load_configuration(Kanye::DEFAULT_CONFIGURATION_PATH)
68
72
  end
@@ -81,8 +85,24 @@ unless File.exists? config["db"]
81
85
  end
82
86
 
83
87
  # Grab as many pages as configured
88
+ pages = []
84
89
  (1..(config["pages"])).each do |page|
85
90
  user = config["username"]
86
- kanye = Kanye.new(user, page)
87
- kanye.download_all!
91
+ page = Kanye::Page.new(user, page)
92
+ pages << page
93
+
94
+ page.download_all!
95
+ end
96
+
97
+ if config["playlist"].to_s == "true"
98
+ itunes = Kanye::ITunes.new
99
+ pages.reverse.each do |page|
100
+ page.tracks.reverse.each do |track|
101
+ begin
102
+ itunes.add_to_playlist track.filename, Time.now.strftime("%B %Y")
103
+ `mv #{shellescape track.filename} ~/.Trash`
104
+ rescue MacTypes::FileNotFoundError
105
+ end
106
+ end
107
+ end
88
108
  end
data/kanye.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{kanye}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sam Vincent"]
12
- s.date = %q{2011-06-17}
12
+ s.date = %q{2011-06-30}
13
13
  s.default_executable = %q{kanye}
14
14
  s.description = %q{Lyrical genius, voice of a generation.}
15
15
  s.email = %q{sam.vincent@mac.com}
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.files = [
22
22
  ".document",
23
23
  "Gemfile",
24
+ "History",
24
25
  "LICENSE.txt",
25
26
  "README.rdoc",
26
27
  "Rakefile",
@@ -29,8 +30,12 @@ Gem::Specification.new do |s|
29
30
  "kanye.gemspec",
30
31
  "lib/kanye.rb",
31
32
  "lib/kanye/history.rb",
33
+ "lib/kanye/itunes.rb",
34
+ "lib/kanye/page.rb",
32
35
  "lib/kanye/track.rb",
33
36
  "spec/data/sample.html",
37
+ "spec/data/super.mp3",
38
+ "spec/kanye/itunes_spec.rb",
34
39
  "spec/kanye/track_spec.rb",
35
40
  "spec/kanye_spec.rb",
36
41
  "spec/spec_helper.rb"
@@ -39,8 +44,9 @@ Gem::Specification.new do |s|
39
44
  s.licenses = ["MIT"]
40
45
  s.require_paths = ["lib"]
41
46
  s.rubygems_version = %q{1.6.2}
42
- s.summary = %q{Ruby HypeM utility}
47
+ s.summary = %q{Ruby H-Y-P-E utility}
43
48
  s.test_files = [
49
+ "spec/kanye/itunes_spec.rb",
44
50
  "spec/kanye/track_spec.rb",
45
51
  "spec/kanye_spec.rb",
46
52
  "spec/spec_helper.rb"
@@ -54,6 +60,7 @@ Gem::Specification.new do |s|
54
60
  s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
55
61
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
56
62
  s.add_runtime_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
63
+ s.add_runtime_dependency(%q<rb-appscript>, ["= 0.6.1"])
57
64
  s.add_development_dependency(%q<rspec>, [">= 2"])
58
65
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
59
66
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -61,11 +68,13 @@ Gem::Specification.new do |s|
61
68
  s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
62
69
  s.add_runtime_dependency(%q<nokogiri>, ["> 1.4.0"])
63
70
  s.add_runtime_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
71
+ s.add_runtime_dependency(%q<rb-appscript>, ["= 0.6.1"])
64
72
  else
65
73
  s.add_dependency(%q<httparty>, [">= 0.7.4"])
66
74
  s.add_dependency(%q<sqlite3>, [">= 0"])
67
75
  s.add_dependency(%q<nokogiri>, [">= 0"])
68
76
  s.add_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
77
+ s.add_dependency(%q<rb-appscript>, ["= 0.6.1"])
69
78
  s.add_dependency(%q<rspec>, [">= 2"])
70
79
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
71
80
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -73,12 +82,14 @@ Gem::Specification.new do |s|
73
82
  s.add_dependency(%q<sqlite3>, [">= 0"])
74
83
  s.add_dependency(%q<nokogiri>, ["> 1.4.0"])
75
84
  s.add_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
85
+ s.add_dependency(%q<rb-appscript>, ["= 0.6.1"])
76
86
  end
77
87
  else
78
88
  s.add_dependency(%q<httparty>, [">= 0.7.4"])
79
89
  s.add_dependency(%q<sqlite3>, [">= 0"])
80
90
  s.add_dependency(%q<nokogiri>, [">= 0"])
81
91
  s.add_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
92
+ s.add_dependency(%q<rb-appscript>, ["= 0.6.1"])
82
93
  s.add_dependency(%q<rspec>, [">= 2"])
83
94
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
84
95
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -86,6 +97,7 @@ Gem::Specification.new do |s|
86
97
  s.add_dependency(%q<sqlite3>, [">= 0"])
87
98
  s.add_dependency(%q<nokogiri>, ["> 1.4.0"])
88
99
  s.add_dependency(%q<ruby-mp3info>, ["= 0.6.14"])
100
+ s.add_dependency(%q<rb-appscript>, ["= 0.6.1"])
89
101
  end
90
102
  end
91
103
 
data/lib/kanye.rb CHANGED
@@ -3,68 +3,24 @@ require 'nokogiri'
3
3
  require 'mp3info'
4
4
  require 'sqlite3'
5
5
 
6
+ require 'kanye/page'
6
7
  require 'kanye/track'
7
8
  require 'kanye/history'
9
+ require 'kanye/itunes'
8
10
 
9
- class Kanye
10
- attr_reader :html, :response, :tracks
11
-
11
+ module Kanye
12
12
  DEFAULT_CONFIGURATION_PATH = File.expand_path("~/.kanye_rc")
13
13
  DEFAULT_DOWNLOAD_PATH = File.expand_path("~/Music/Kanye/")
14
14
  DEFAULT_DB_PATH = File.expand_path("~/Music/Kanye/.history.db")
15
-
16
- def initialize(path, page=1)
17
- @response = HTTParty.get url(path, page)
18
- @tracks = []
19
- @cookie = @response.headers['set-cookie']
20
- @html = @response.parsed_response
21
- parse_response
22
- end
23
-
24
- def download_all!
25
- while tracks.size > 0
26
- current_track = tracks.pop
27
- history = History.new(DEFAULT_DB_PATH)
28
- unless history.exists?(current_track)
29
- current_track.download!
30
- history.insert(current_track)
31
- puts "\tInserted song into db"
32
- end
15
+ BASE_URL = 'h' + 'y' + 'p' + 'e' + 'm' + '.com'
16
+
17
+ class << self
18
+ def download_path
19
+ @@download_path ||= DEFAULT_DOWNLOAD_PATH
33
20
  end
34
- end
35
-
36
- def url(path, page=1)
37
- "http://hypem.com/"+path+"/"+page.to_s+"?ax=1&ts="+timestamp
38
- end
39
-
40
- def self.download_path
41
- @@download_path ||= DEFAULT_DOWNLOAD_PATH
42
- end
43
-
44
- def self.db_path
45
- @@db_path ||= DEFAULT_DB_PATH
46
- end
47
-
48
- protected
49
-
50
- def parse_response
51
- html_doc = Nokogiri::HTML(@html)
52
- ids = @html.scan /\tid:\'(\w*)\'/
53
- keys = @html.scan /\tkey:\s+?\'([\d\w]*)\'/
54
- artists = html_doc.css('.track_name .artist').map { |node| node.content.strip }
55
- titles = html_doc.css('.track_name .artist + a').map { |node| node.content.strip }
56
- [ids, keys, titles, artists].each(&:flatten!)
57
-
58
- ids.each_with_index do |id, i|
59
- @tracks << Track.new(:id => ids[i],
60
- :key => keys[i],
61
- :title => titles[i],
62
- :artist => artists[i],
63
- :cookie => @cookie)
21
+
22
+ def db_path
23
+ @@db_path ||= DEFAULT_DB_PATH
64
24
  end
65
25
  end
66
-
67
- def timestamp
68
- ("%10.10f" % Time.now.utc.to_f).gsub('.','')
69
- end
70
26
  end
data/lib/kanye/history.rb CHANGED
@@ -1,14 +1,16 @@
1
- class History
2
- attr_reader :db
3
- def initialize(db_file)
4
- @db = SQLite3::Database.new(db_file)
5
- end
1
+ module Kanye
2
+ class History
3
+ attr_reader :db
4
+ def initialize(db_file)
5
+ @db = SQLite3::Database.new(db_file)
6
+ end
6
7
 
7
- def insert(track)
8
- db.execute("insert into tracks values (?, ?)", [nil, track.id])
9
- end
8
+ def insert(track)
9
+ db.execute("insert into tracks values (?, ?)", [nil, track.id])
10
+ end
10
11
 
11
- def exists?(track)
12
- db.execute("select * from tracks where key=?", track.id).any?
12
+ def exists?(track)
13
+ db.execute("select * from tracks where key=?", track.id).any?
14
+ end
13
15
  end
14
- end
16
+ end
@@ -0,0 +1,28 @@
1
+ require 'appscript'
2
+
3
+ module Kanye
4
+ class ITunes
5
+ include Appscript
6
+
7
+ def add_to_playlist(file, playlist_name)
8
+ list = playlist(playlist_name) || create_playlist(playlist_name)
9
+ raise "Playlist could not be found or created" unless list
10
+ track = itunes.add MacTypes::Alias.path(file)
11
+ track.duplicate(:to => list)
12
+ end
13
+
14
+ def playlist(name)
15
+ itunes.user_playlists[its.name.eq(name)].get.first
16
+ end
17
+
18
+ def create_playlist(name)
19
+ itunes.make(:new => :user_playlist, :with_properties => {:name => name})
20
+ end
21
+
22
+ private
23
+
24
+ def itunes
25
+ app('iTunes')
26
+ end
27
+ end
28
+ end
data/lib/kanye/page.rb ADDED
@@ -0,0 +1,57 @@
1
+ module Kanye
2
+ class Page
3
+ attr_reader :html, :response, :tracks
4
+
5
+
6
+ def initialize(path, page=1)
7
+ @response = HTTParty.get url(path, page)
8
+ @tracks = []
9
+ @cookie = @response.headers['set-cookie']
10
+ @html = @response.parsed_response
11
+ parse_response
12
+ end
13
+
14
+ def download_all!
15
+ tracks.each do |current_track|
16
+ history = History.new(DEFAULT_DB_PATH)
17
+ unless history.exists?(current_track)
18
+ begin
19
+ current_track.download!
20
+ rescue Mp3InfoError => e
21
+ print e.message
22
+ end
23
+
24
+ history.insert(current_track)
25
+ puts "\tInserted song into db"
26
+ end
27
+ end
28
+ end
29
+
30
+ def url(path, page=1)
31
+ "http://#{BASE_URL}/"+path+"/"+page.to_s+"?ax=1&ts="+timestamp
32
+ end
33
+
34
+ protected
35
+
36
+ def parse_response
37
+ html_doc = Nokogiri::HTML(@html)
38
+ ids = @html.scan /\tid:\'(\w*)\'/
39
+ 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! }
43
+
44
+ ids.each_with_index do |id, i|
45
+ @tracks << Track.new(:id => ids[i],
46
+ :key => keys[i],
47
+ :title => titles[i],
48
+ :artist => artists[i],
49
+ :cookie => @cookie)
50
+ end
51
+ end
52
+
53
+ def timestamp
54
+ ("%10.10f" % Time.now.utc.to_f).gsub('.','')
55
+ end
56
+ end
57
+ end
data/lib/kanye/track.rb CHANGED
@@ -1,53 +1,57 @@
1
- class NoKeyError < StandardError; end
1
+ module Kanye
2
+ class NoKeyError < StandardError; end
2
3
 
3
- class Track
4
- def initialize(params={})
5
- @id = params[:id]
6
- @key = params[:key]
7
- @title = params[:title]
8
- @artist = params[:artist]
9
- @cookie = params[:cookie]
10
- end
4
+ class Track
5
+ def initialize(params={})
6
+ @id = params[:id]
7
+ @key = params[:key]
8
+ @title = params[:title]
9
+ @artist = params[:artist]
10
+ @cookie = params[:cookie]
11
+ end
11
12
 
12
- attr_reader :id, :key, :title, :artist, :cookie
13
+ attr_reader :id, :key, :title, :artist, :cookie
13
14
 
14
- def url
15
- 'http://hypem.com/serve/play/'+ id + '/' + key + ".mp3"
16
- end
15
+ def url
16
+ "http://#{BASE_URL}/serve/source/" + id + '/' + key
17
+ end
17
18
 
18
- def download!
19
- raise(NoKeyError, "Couldn't find :key for '#{self}'") if key.blank?
20
- response = HTTParty.get(url, :headers => {'cookie' => cookie})
19
+ def download!
20
+ raise(NoKeyError, "Couldn't find :key for '#{self}'") if key.blank?
21
21
 
22
- print "Attempting to download ", self
23
- puts "\n\tDownloading song..."
22
+ response = HTTParty.get(url, :headers => {'cookie' => cookie})
23
+ raise "Response Code '#{response.code}' - Something has changed." unless response.code == 200
24
24
 
25
- File.open(filename, "wb") do |f|
26
- f.write(response.parsed_response)
27
- end
28
25
 
29
- set_id3_tags!
30
- end
26
+ print "Attempting to download ", self
27
+ puts "\n\tDownloading song..."
31
28
 
32
- def to_s
33
- "(" + [key, title, artist].join(", ") + ")"
34
- end
29
+ mp3_url = response.parsed_response["url"]
30
+ mp3_response = HTTParty.get(mp3_url)
31
+
32
+ File.open(filename, "wb") do |f|
33
+ f.write(mp3_response.parsed_response)
34
+ end
35
+
36
+ set_id3_tags!
37
+ end
38
+
39
+ def to_s
40
+ "(" + [key, title, artist].join(", ") + ")"
41
+ end
35
42
 
36
- def filename
37
- name = [artist,title].join('-').gsub(/[ \/]/, "-").downcase
38
- File.join(Kanye.download_path, name + ".mp3")
39
- end
43
+ def filename
44
+ name = [artist,title].join('-').gsub(/[ \/]/, "-").downcase
45
+ File.join(Kanye.download_path, name + ".mp3")
46
+ end
40
47
 
41
- private
48
+ private
42
49
 
43
- def set_id3_tags!
44
- begin
45
- Mp3Info.open(filename, :encoding => 'utf-8') do |mp3|
50
+ def set_id3_tags!
51
+ Mp3Info.open(filename) do |mp3|
46
52
  mp3.tag.artist = artist
47
53
  mp3.tag.title = title
48
54
  end
49
- rescue Mp3InfoError => e
50
- print e.message
51
55
  end
52
56
  end
53
- end
57
+ end
@@ -11,7 +11,7 @@
11
11
 
12
12
  <div class="message-push" id="flash-warning" style="display: none">
13
13
  <div id="message-intro">
14
- <p>You seem to be missing <a href="http://www.adobe.com/support/flashplayer/downloads.html">Adobe's Flash Player</a>, please install it before attempting to listen to music on the Machine.</p>
14
+ <p>You seem to be missing <a href="http://www.adobe.com/support/flashplayer/downloads.html">Adobe's Flash Player</a>, please install it before attempting to listen to music on the .</p>
15
15
  </div>
16
16
  </div>
17
17
 
@@ -69,7 +69,7 @@
69
69
 
70
70
 
71
71
  <h3 class="track_name">
72
- <a class="artist" title="Rusko - search hype machine for this artist" href="/artist/Rusko">
72
+ <a class="artist" title="Rusko - search for this artist" href="/artist/Rusko">
73
73
  Rusko</a>
74
74
  -
75
75
 
@@ -170,7 +170,7 @@
170
170
  href="http://www.melophobe.com/concert-reviews/rusko-doorly-sir-kutz-roseland-theater-portland-or1/"
171
171
  title="Read this post: Rusko + Doorly + Sir Kutz – Ros&hellip;">
172
172
  Posted 4 days ago&nbsp;&raquo;<span style="background:url(
173
- http://static-ak.hypem.net/images/albumart2.gif
173
+ http://static-ak.m.net/images/albumart2.gif
174
174
  );"></span></a>
175
175
 
176
176
  </p>
@@ -198,7 +198,7 @@
198
198
 
199
199
 
200
200
  <h3 class="track_name">
201
- <a class="artist" title="Rusko - search hype machine for this artist" href="/artist/Rusko">
201
+ <a class="artist" title="Rusko - search for this artist" href="/artist/Rusko">
202
202
  Rusko</a>
203
203
  -
204
204
 
@@ -299,7 +299,7 @@
299
299
  href="http://www.earmilk.com/2011/04/18/rusko-everyday-the-remixes/"
300
300
  title="Read this post: Rusko – Everyday [The Remixes]">
301
301
  Posted 3 days ago&nbsp;&raquo;<span style="background:url(
302
- http://static-ak.hypem.net/thumbs/3/1459123.png
302
+ http://static-ak.m.net/thumbs/3/1459123.png
303
303
  );"></span></a>
304
304
 
305
305
  </p>
@@ -327,7 +327,7 @@
327
327
 
328
328
 
329
329
  <h3 class="track_name">
330
- <a class="artist" title="Washed Out feat. Caroline Polachek - search hype machine for this artist" href="/artist/Washed Out feat. Caroline Polachek">
330
+ <a class="artist" title="Washed Out feat. Caroline Polachek - search for this artist" href="/artist/Washed Out feat. Caroline Polachek">
331
331
  Washed Out feat. Caroline Polachek</a>
332
332
  -
333
333
 
@@ -428,7 +428,7 @@
428
428
  href="http://www.tiltmag.com/2011/04/washed-out-signs-to-sub-pop.html"
429
429
  title="Read this post: Washed Out Signs to Sub Pop">
430
430
  Posted 14 hrs ago&nbsp;&raquo;<span style="background:url(
431
- http://static-ak.hypem.net/thumbs/6/1461916.png
431
+ http://static-ak.m.net/thumbs/6/1461916.png
432
432
  );"></span></a>
433
433
 
434
434
  </p>
@@ -456,7 +456,7 @@
456
456
 
457
457
 
458
458
  <h3 class="track_name">
459
- <a class="artist" title="Le Castle Vania - search hype machine for this artist" href="/artist/Le Castle Vania">
459
+ <a class="artist" title="Le Castle Vania - search for this artist" href="/artist/Le Castle Vania">
460
460
  Le Castle Vania</a>
461
461
  -
462
462
 
@@ -557,7 +557,7 @@
557
557
  href="http://www.themusicninja.com/electro-dj-falcon-thomas-bangalter-together-le-castle-vania-computer-clubs-summer-bootleg-mix/"
558
558
  title="Read this post: [Electro] DJ Falcon + Thomas Bang&hellip;">
559
559
  Posted 9 hrs ago&nbsp;&raquo;<span style="background:url(
560
- http://static-ak.hypem.net/thumbs/7/1462247.png
560
+ http://static-ak.m.net/thumbs/7/1462247.png
561
561
  );"></span></a>
562
562
 
563
563
  </p>
@@ -585,7 +585,7 @@
585
585
 
586
586
 
587
587
  <h3 class="track_name">
588
- <a class="artist" title="Earl Da Grey - search hype machine for this artist" href="/artist/Earl Da Grey">
588
+ <a class="artist" title="Earl Da Grey - search for this artist" href="/artist/Earl Da Grey">
589
589
  Earl Da Grey</a>
590
590
  -
591
591
 
@@ -682,7 +682,7 @@
682
682
  href="http://www.ilictronix.com/2011/04/not-my-cup-of-tea.html"
683
683
  title="Read this post: Not My Cup of Tea">
684
684
  Posted 5 days ago&nbsp;&raquo;<span style="background:url(
685
- http://static-ak.hypem.net/thumbs/3/1457903.png
685
+ http://static-ak.m.net/thumbs/3/1457903.png
686
686
  );"></span></a>
687
687
 
688
688
  </p>
@@ -710,7 +710,7 @@
710
710
 
711
711
  <div class="same-post section-track" >
712
712
  <h3 class="track_name">
713
- <a class="artist" title="Earl Da Grey - search hype machine for this artist" href="/artist/Earl Da Grey">
713
+ <a class="artist" title="Earl Da Grey - search for this artist" href="/artist/Earl Da Grey">
714
714
  Earl Da Grey </a> -
715
715
  <a title="Heavenly Motion - go to page for this track" href="/item/1ar7k/Earl+Da+Grey+-+Heavenly+Motion">
716
716
  Heavenly Motion </a>
@@ -789,7 +789,7 @@
789
789
 
790
790
  <div class="same-post section-track" >
791
791
  <h3 class="track_name">
792
- <a class="artist" title="Earl Da Grey - search hype machine for this artist" href="/artist/Earl Da Grey">
792
+ <a class="artist" title="Earl Da Grey - search for this artist" href="/artist/Earl Da Grey">
793
793
  Earl Da Grey </a> -
794
794
  <a title="Millionaire Radio - go to page for this track" href="/item/1ar7g/Earl+Da+Grey+-+Millionaire+Radio">
795
795
  Millionaire Radio </a>
@@ -868,7 +868,7 @@
868
868
 
869
869
  <div class="same-post section-track" >
870
870
  <h3 class="track_name">
871
- <a class="artist" title="Earl Da Grey - search hype machine for this artist" href="/artist/Earl Da Grey">
871
+ <a class="artist" title="Earl Da Grey - search for this artist" href="/artist/Earl Da Grey">
872
872
  Earl Da Grey </a> -
873
873
  <a title="Taboo - go to page for this track" href="/item/1ar7h/Earl+Da+Grey+-+Taboo">
874
874
  Taboo </a>
@@ -941,14 +941,14 @@
941
941
  </div><!-- same-post -->
942
942
 
943
943
  </div><!-- section-player -->
944
- </div><a class="notice" onclick="if(! document.getElementById('box') ) { Lightbox.init(); } Lightbox.showBoxByAJAX('/inc/lb_signup.php', 330, 510);return false;" href=""><span>Customize the Machine with the music YOU <em>Love</em> &bull; <strong>Sign Up Now &raquo;</strong></span></a>
944
+ </div><a class="notice" onclick="if(! document.getElementById('box') ) { Lightbox.init(); } Lightbox.showBoxByAJAX('/inc/lb_signup.php', 330, 510);return false;" href=""><span>Customize the with the music YOU <em>Love</em> &bull; <strong>Sign Up Now &raquo;</strong></span></a>
945
945
  <div class="section section-track section-odd">
946
946
  <div class="section-player" >
947
947
 
948
948
 
949
949
 
950
950
  <h3 class="track_name">
951
- <a class="artist" title="James Varnish - search hype machine for this artist" href="/artist/James Varnish">
951
+ <a class="artist" title="James Varnish - search for this artist" href="/artist/James Varnish">
952
952
  James Varnish</a>
953
953
  -
954
954
 
@@ -1045,7 +1045,7 @@
1045
1045
  href="http://www.vacayvitamins.com/electro/together-boston-2011-music-arts-technology/"
1046
1046
  title="Read this post: Together Boston 2011 (Music, Arts&hellip;">
1047
1047
  Posted 4 days ago&nbsp;&raquo;<span style="background:url(
1048
- http://static-ak.hypem.net/thumbs/5/1458305.png
1048
+ http://static-ak.m.net/thumbs/5/1458305.png
1049
1049
  );"></span></a>
1050
1050
 
1051
1051
  </p>
@@ -1073,7 +1073,7 @@
1073
1073
 
1074
1074
 
1075
1075
  <h3 class="track_name">
1076
- <a class="artist" title="Jamaica - search hype machine for this artist" href="/artist/Jamaica">
1076
+ <a class="artist" title="Jamaica - search for this artist" href="/artist/Jamaica">
1077
1077
  Jamaica</a>
1078
1078
  -
1079
1079
 
@@ -1174,7 +1174,7 @@
1174
1174
  href="http://allthingsgomusic.com/interview-jamaica"
1175
1175
  title="Read this post: Interview: Jamaica">
1176
1176
  Posted 4 days ago&nbsp;&raquo;<span style="background:url(
1177
- http://static-ak.hypem.net/thumbs/6/1458346.png
1177
+ http://static-ak.m.net/thumbs/6/1458346.png
1178
1178
  );"></span></a>
1179
1179
 
1180
1180
  </p>
@@ -1202,7 +1202,7 @@
1202
1202
 
1203
1203
 
1204
1204
  <h3 class="track_name">
1205
- <a class="artist" title="Radiohead - search hype machine for this artist" href="/artist/Radiohead">
1205
+ <a class="artist" title="Radiohead - search for this artist" href="/artist/Radiohead">
1206
1206
  Radiohead</a>
1207
1207
  -
1208
1208
 
@@ -1303,7 +1303,7 @@
1303
1303
  href="http://tympanogram.com/music/stream-radiohead-supercollider/"
1304
1304
  title="Read this post: [stream] Radiohead // Supercollid&hellip;">
1305
1305
  Posted 14 hrs ago&nbsp;&raquo;<span style="background:url(
1306
- http://static-ak.hypem.net/thumbs/0/1461900.png
1306
+ http://static-ak.m.net/thumbs/0/1461900.png
1307
1307
  );"></span></a>
1308
1308
 
1309
1309
  </p>
@@ -1331,7 +1331,7 @@
1331
1331
 
1332
1332
 
1333
1333
  <h3 class="track_name">
1334
- <a class="artist" title="Dillon Francis - search hype machine for this artist" href="/artist/Dillon Francis">
1334
+ <a class="artist" title="Dillon Francis - search for this artist" href="/artist/Dillon Francis">
1335
1335
  Dillon Francis</a>
1336
1336
  -
1337
1337
 
@@ -1432,7 +1432,7 @@
1432
1432
  href="http://www.tiltmag.com/2011/04/la-dubstep-takeover-ooah-love-i-need.html"
1433
1433
  title="Read this post: L.A. DUBSTEP TAKEOVER! OOAH - The&hellip;">
1434
1434
  Posted yesterday&nbsp;&raquo;<span style="background:url(
1435
- http://static-ak.hypem.net/thumbs/1/1461131.png
1435
+ http://static-ak.m.net/thumbs/1/1461131.png
1436
1436
  );"></span></a>
1437
1437
 
1438
1438
  </p>
@@ -1460,7 +1460,7 @@
1460
1460
 
1461
1461
 
1462
1462
  <h3 class="track_name">
1463
- <a class="artist" title="The Human League - search hype machine for this artist" href="/artist/The Human League">
1463
+ <a class="artist" title="The Human League - search for this artist" href="/artist/The Human League">
1464
1464
  The Human League</a>
1465
1465
  -
1466
1466
 
@@ -1561,7 +1561,7 @@
1561
1561
  href="http://www.vacayvitamins.com/electro/mix-monday-alex-metric-bbc-radio-1-essential-mix/"
1562
1562
  title="Read this post: Mix Monday – Alex Metric BBC Ra&hellip;">
1563
1563
  Posted 3 days ago&nbsp;&raquo;<span style="background:url(
1564
- http://static-ak.hypem.net/thumbs/0/1458840.png
1564
+ http://static-ak.m.net/thumbs/0/1458840.png
1565
1565
  );"></span></a>
1566
1566
 
1567
1567
  </p>
@@ -1589,7 +1589,7 @@
1589
1589
 
1590
1590
  <div class="same-post section-track" >
1591
1591
  <h3 class="track_name">
1592
- <a class="artist" title="His Majesty Andre - search hype machine for this artist" href="/artist/His Majesty Andre">
1592
+ <a class="artist" title="His Majesty Andre - search for this artist" href="/artist/His Majesty Andre">
1593
1593
  His Majesty Andre </a> -
1594
1594
  <a title="Clubs - go to page for this track" href="/item/1as5w/His+Majesty+Andre+-+Clubs">
1595
1595
  Clubs </a>
@@ -1668,7 +1668,7 @@
1668
1668
 
1669
1669
  <div class="same-post section-track" >
1670
1670
  <h3 class="track_name">
1671
- <a class="artist" title="Cassian - search hype machine for this artist" href="/artist/Cassian">
1671
+ <a class="artist" title="Cassian - search for this artist" href="/artist/Cassian">
1672
1672
  Cassian </a> -
1673
1673
  <a title="Getting High (Original Mix) - go to page for this track" href="/item/1as5v/Cassian+-+Getting+High+Original+Mix+">
1674
1674
  Getting High (Original Mix) </a>
@@ -1747,7 +1747,7 @@
1747
1747
 
1748
1748
  <div class="same-post section-track" >
1749
1749
  <h3 class="track_name">
1750
- <a class="artist" title="Les Rythmes Digitales - search hype machine for this artist" href="/artist/Les Rythmes Digitales">
1750
+ <a class="artist" title="Les Rythmes Digitales - search for this artist" href="/artist/Les Rythmes Digitales">
1751
1751
  Les Rythmes Digitales </a> -
1752
1752
  <a title="About Funk - go to page for this track" href="/item/1as5z/Les+Rythmes+Digitales+-+About+Funk">
1753
1753
  About Funk </a>
@@ -1826,7 +1826,7 @@
1826
1826
 
1827
1827
  <div class="same-post section-track" >
1828
1828
  <h3 class="track_name">
1829
- <a class="artist" title="BeatauCue - search hype machine for this artist" href="/artist/BeatauCue">
1829
+ <a class="artist" title="BeatauCue - search for this artist" href="/artist/BeatauCue">
1830
1830
  BeatauCue </a> -
1831
1831
  <a title="Behold - go to page for this track" href="/item/1873c/BeatauCue+-+Behold">
1832
1832
  Behold </a>
@@ -1906,14 +1906,14 @@
1906
1906
  </div><!-- same-post -->
1907
1907
 
1908
1908
  </div><!-- section-player -->
1909
- </div><a class="notice" onclick="if(! document.getElementById('box') ) { Lightbox.init(); } Lightbox.showBoxByAJAX('/inc/lb_signup.php', 330, 510);return false;" href=""><span>Customize the Machine with the music YOU <em>Love</em> &bull; <strong>Sign Up Now &raquo;</strong></span></a>
1909
+ </div><a class="notice" onclick="if(! document.getElementById('box') ) { Lightbox.init(); } Lightbox.showBoxByAJAX('/inc/lb_signup.php', 330, 510);return false;" href=""><span>Customize the with the music YOU <em>Love</em> &bull; <strong>Sign Up Now &raquo;</strong></span></a>
1910
1910
  <div class="section section-track section-even">
1911
1911
  <div class="section-player" >
1912
1912
 
1913
1913
 
1914
1914
 
1915
1915
  <h3 class="track_name">
1916
- <a class="artist" title="Toddla T - search hype machine for this artist" href="/artist/Toddla T">
1916
+ <a class="artist" title="Toddla T - search for this artist" href="/artist/Toddla T">
1917
1917
  Toddla T</a>
1918
1918
  -
1919
1919
 
@@ -2014,7 +2014,7 @@
2014
2014
  href="http://schitzpopinov.com/blog/words-with-doorly"
2015
2015
  title="Read this post: Words with Doorly">
2016
2016
  Posted yesterday&nbsp;&raquo;<span style="background:url(
2017
- http://static-ak.hypem.net/thumbs/4/1461244.png
2017
+ http://static-ak.m.net/thumbs/4/1461244.png
2018
2018
  );"></span></a>
2019
2019
 
2020
2020
  </p>
@@ -2042,7 +2042,7 @@
2042
2042
 
2043
2043
 
2044
2044
  <h3 class="track_name">
2045
- <a class="artist" title="Danger Granger - search hype machine for this artist" href="/artist/Danger Granger">
2045
+ <a class="artist" title="Danger Granger - search for this artist" href="/artist/Danger Granger">
2046
2046
  Danger Granger</a>
2047
2047
  -
2048
2048
 
@@ -2131,7 +2131,7 @@
2131
2131
  title="See other tracks posted by this blog"
2132
2132
  href="/blog/earmilk/11067">
2133
2133
  earmilk</a>
2134
- &ldquo;Mashup Monday – We’re going to melt you faces off with enough mashed up music to make you wanna slap&hellip;&rdquo;
2134
+ &ldquo;Mashup Monday going to melt you faces off with enough mashed up music to make you wanna slap&hellip;&rdquo;
2135
2135
  <a
2136
2136
  class="readpost"
2137
2137
  target="_blank"
@@ -2139,7 +2139,7 @@
2139
2139
  href="http://www.earmilk.com/2011/04/18/mashup-monday-week-20/"
2140
2140
  title="Read this post: Mashup Monday – Week 20">
2141
2141
  Posted 3 days ago&nbsp;&raquo;<span style="background:url(
2142
- http://static-ak.hypem.net/thumbs/9/1459019.png
2142
+ http://static-ak.m.net/thumbs/9/1459019.png
2143
2143
  );"></span></a>
2144
2144
 
2145
2145
  </p>
@@ -2167,7 +2167,7 @@
2167
2167
 
2168
2168
  <div class="same-post section-track" >
2169
2169
  <h3 class="track_name">
2170
- <a class="artist" title="DEFEP - search hype machine for this artist" href="/artist/DEFEP">
2170
+ <a class="artist" title="DEFEP - search for this artist" href="/artist/DEFEP">
2171
2171
  DEFEP </a> -
2172
2172
  <a title="Rolling it Right (Afrojack vs Adele) - go to page for this track" href="/item/1asae/DEFEP+-+Rolling+it+Right+Afrojack+vs+Adele+">
2173
2173
  Rolling it Right (Afrojack vs Adele) </a>
Binary file
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+ require 'appscript'
3
+
4
+ describe Kanye::ITunes do
5
+ include Appscript
6
+ KANYE_TEST = 'KANYE_TEST'
7
+
8
+ describe :add_to_playlist do
9
+ let(:list) { Kanye::ITunes.new.playlist(KANYE_TEST) }
10
+ after { begin app('iTunes').delete(list); rescue; end }
11
+
12
+ context "when file found" do
13
+ context "and playlist is June" do
14
+ let(:file) { File.expand_path('spec/data/super.mp3') }
15
+
16
+ before do
17
+ Kanye::ITunes.new.add_to_playlist(file, KANYE_TEST)
18
+ end
19
+
20
+ it "should add song to playlist" do
21
+ tracks = app('iTunes').user_playlists[its.name.eq(KANYE_TEST)].first.tracks.name.get
22
+ tracks.should include('super')
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ describe :playlist do
29
+ let(:list) { Kanye::ITunes.new.create_playlist(KANYE_TEST) }
30
+ before { list }
31
+ after { begin app('iTunes').delete(list); rescue; end }
32
+
33
+ context "playlist is found" do
34
+ it "should return appscript reference" do
35
+ Kanye::ITunes.new.playlist(KANYE_TEST).class.should == Appscript::Reference
36
+ end
37
+ end
38
+
39
+ context "playlist can not be found" do
40
+ before { app('iTunes').delete list }
41
+ it "should return nil" do
42
+ Kanye::ITunes.new.playlist(KANYE_TEST).should be_nil
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,13 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Track do
3
+ describe Kanye::Track do
4
4
  before do
5
- @track = Track.new(:id => 'id', :key => 'key', :artist => 'Alan Braxe', :title => 'Rubicon', :cookie => 'cookie')
5
+ @track = Kanye::Track.new(:id => 'id', :key => 'key', :artist => 'Alan Braxe', :title => 'Rubicon', :cookie => 'cookie')
6
6
  end
7
7
 
8
8
  describe "url" do
9
9
  it "should contain contain :id and :key" do
10
- @track.url.should == "http://hypem.com/serve/play/id/key.mp3"
10
+ @track.url.should == "http://#{Kanye::BASE_URL}/serve/source/id/key"
11
11
  end
12
12
  end
13
13
 
@@ -19,12 +19,12 @@ describe Track do
19
19
 
20
20
  describe "download!" do
21
21
  before do
22
- HTTParty.stub!(:get)
22
+ HTTParty.stub!(:get) { mock(:response, :parsed_response => {}, :code => 200) }
23
23
  File.stub!(:open)
24
24
  Mp3Info.stub!(:open)
25
25
  end
26
26
 
27
- it "should request mp3 from hypem with cookie" do
27
+ it "should request mp3 with cookie" do
28
28
  HTTParty.should_receive(:get).with(@track.url, {:headers => {"cookie" => @track.cookie}})
29
29
  @track.download!
30
30
  end
data/spec/kanye_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Kanye do
3
+ describe Kanye::Page do
4
4
  describe '#parse_response' do
5
5
  let(:html) { File.open('spec/data/sample.html', 'r').read }
6
6
 
@@ -12,7 +12,7 @@ describe Kanye do
12
12
  HTTParty.stub!(:get).and_return(resp)
13
13
  end
14
14
 
15
- let(:kanye) { Kanye.new('test') }
15
+ let(:kanye) { Kanye::Page.new('test') }
16
16
 
17
17
  describe 'format strings' do
18
18
  results = [
@@ -37,7 +37,7 @@ describe Kanye 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.each_with_index do |track, index|
40
+ results.reverse!.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,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kanye
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sam Vincent
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-17 00:00:00 -07:00
18
+ date: 2011-06-30 00:00:00 -07:00
19
19
  default_executable: kanye
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -79,9 +79,25 @@ dependencies:
79
79
  type: :runtime
80
80
  version_requirements: *id004
81
81
  - !ruby/object:Gem::Dependency
82
- name: rspec
82
+ name: rb-appscript
83
83
  prerelease: false
84
84
  requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - "="
88
+ - !ruby/object:Gem::Version
89
+ hash: 5
90
+ segments:
91
+ - 0
92
+ - 6
93
+ - 1
94
+ version: 0.6.1
95
+ type: :runtime
96
+ version_requirements: *id005
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ prerelease: false
100
+ requirement: &id006 !ruby/object:Gem::Requirement
85
101
  none: false
86
102
  requirements:
87
103
  - - ">="
@@ -91,11 +107,11 @@ dependencies:
91
107
  - 2
92
108
  version: "2"
93
109
  type: :development
94
- version_requirements: *id005
110
+ version_requirements: *id006
95
111
  - !ruby/object:Gem::Dependency
96
112
  name: bundler
97
113
  prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
114
+ requirement: &id007 !ruby/object:Gem::Requirement
99
115
  none: false
100
116
  requirements:
101
117
  - - ~>
@@ -107,11 +123,11 @@ dependencies:
107
123
  - 0
108
124
  version: 1.0.0
109
125
  type: :development
110
- version_requirements: *id006
126
+ version_requirements: *id007
111
127
  - !ruby/object:Gem::Dependency
112
128
  name: jeweler
113
129
  prerelease: false
114
- requirement: &id007 !ruby/object:Gem::Requirement
130
+ requirement: &id008 !ruby/object:Gem::Requirement
115
131
  none: false
116
132
  requirements:
117
133
  - - ~>
@@ -123,11 +139,11 @@ dependencies:
123
139
  - 2
124
140
  version: 1.5.2
125
141
  type: :development
126
- version_requirements: *id007
142
+ version_requirements: *id008
127
143
  - !ruby/object:Gem::Dependency
128
144
  name: httparty
129
145
  prerelease: false
130
- requirement: &id008 !ruby/object:Gem::Requirement
146
+ requirement: &id009 !ruby/object:Gem::Requirement
131
147
  none: false
132
148
  requirements:
133
149
  - - ">="
@@ -139,11 +155,11 @@ dependencies:
139
155
  - 4
140
156
  version: 0.7.4
141
157
  type: :runtime
142
- version_requirements: *id008
158
+ version_requirements: *id009
143
159
  - !ruby/object:Gem::Dependency
144
160
  name: sqlite3
145
161
  prerelease: false
146
- requirement: &id009 !ruby/object:Gem::Requirement
162
+ requirement: &id010 !ruby/object:Gem::Requirement
147
163
  none: false
148
164
  requirements:
149
165
  - - ">="
@@ -153,11 +169,11 @@ dependencies:
153
169
  - 0
154
170
  version: "0"
155
171
  type: :runtime
156
- version_requirements: *id009
172
+ version_requirements: *id010
157
173
  - !ruby/object:Gem::Dependency
158
174
  name: nokogiri
159
175
  prerelease: false
160
- requirement: &id010 !ruby/object:Gem::Requirement
176
+ requirement: &id011 !ruby/object:Gem::Requirement
161
177
  none: false
162
178
  requirements:
163
179
  - - ">"
@@ -169,11 +185,11 @@ dependencies:
169
185
  - 0
170
186
  version: 1.4.0
171
187
  type: :runtime
172
- version_requirements: *id010
188
+ version_requirements: *id011
173
189
  - !ruby/object:Gem::Dependency
174
190
  name: ruby-mp3info
175
191
  prerelease: false
176
- requirement: &id011 !ruby/object:Gem::Requirement
192
+ requirement: &id012 !ruby/object:Gem::Requirement
177
193
  none: false
178
194
  requirements:
179
195
  - - "="
@@ -185,7 +201,23 @@ dependencies:
185
201
  - 14
186
202
  version: 0.6.14
187
203
  type: :runtime
188
- version_requirements: *id011
204
+ version_requirements: *id012
205
+ - !ruby/object:Gem::Dependency
206
+ name: rb-appscript
207
+ prerelease: false
208
+ requirement: &id013 !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - "="
212
+ - !ruby/object:Gem::Version
213
+ hash: 5
214
+ segments:
215
+ - 0
216
+ - 6
217
+ - 1
218
+ version: 0.6.1
219
+ type: :runtime
220
+ version_requirements: *id013
189
221
  description: Lyrical genius, voice of a generation.
190
222
  email: sam.vincent@mac.com
191
223
  executables:
@@ -198,6 +230,7 @@ extra_rdoc_files:
198
230
  files:
199
231
  - .document
200
232
  - Gemfile
233
+ - History
201
234
  - LICENSE.txt
202
235
  - README.rdoc
203
236
  - Rakefile
@@ -206,8 +239,12 @@ files:
206
239
  - kanye.gemspec
207
240
  - lib/kanye.rb
208
241
  - lib/kanye/history.rb
242
+ - lib/kanye/itunes.rb
243
+ - lib/kanye/page.rb
209
244
  - lib/kanye/track.rb
210
245
  - spec/data/sample.html
246
+ - spec/data/super.mp3
247
+ - spec/kanye/itunes_spec.rb
211
248
  - spec/kanye/track_spec.rb
212
249
  - spec/kanye_spec.rb
213
250
  - spec/spec_helper.rb
@@ -244,8 +281,9 @@ rubyforge_project:
244
281
  rubygems_version: 1.6.2
245
282
  signing_key:
246
283
  specification_version: 3
247
- summary: Ruby HypeM utility
284
+ summary: Ruby H-Y-P-E utility
248
285
  test_files:
286
+ - spec/kanye/itunes_spec.rb
249
287
  - spec/kanye/track_spec.rb
250
288
  - spec/kanye_spec.rb
251
289
  - spec/spec_helper.rb