woot 0.0.0 → 0.0.1

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/README.rdoc CHANGED
@@ -11,12 +11,21 @@ Scapes woot.com sites with ruby
11
11
  Simply call <tt>Woot.scrape</tt> and optionally specify the woot subdomain (e.g. www, shirt, kids, wine, etc).
12
12
  Defaults to www.
13
13
 
14
- data = Woot.scrape
15
- puts data.title
16
- puts data.price
14
+ woot = Woot.scrape
15
+ puts woot.title
16
+ puts woot.price
17
17
 
18
18
  data = Woot.scrape(:shirt)
19
- puts data.title
19
+ puts woot.title
20
+
21
+ You can also receive live Woot updates using "Twitter's Streaming API"[http://apiwiki.twitter.com/Streaming-API-Documentation].
22
+ Simply call <tt>Woot.stream</tt> with your Twitter username, password, and a block.
23
+
24
+ Woot.stream('your-twitter-username', 'your-twitter-password') do |woot|
25
+ puts "#{woot.subdomain}: #{woot.title}"
26
+ end
27
+
28
+ Call <tt>Woot.stop</tt> to stop streaming.
20
29
 
21
30
  == Note on Patches/Pull Requests
22
31
 
@@ -32,8 +41,6 @@ Defaults to www.
32
41
  == Todo
33
42
 
34
43
  * sellout.woot.com support
35
- * woot-off quantities
36
- * build gem
37
44
 
38
45
  == Copyright
39
46
 
data/Rakefile CHANGED
@@ -11,6 +11,7 @@ begin
11
11
  gem.homepage = 'http://github.com/shuber/woot'
12
12
  gem.authors = ['Sean Huber']
13
13
  gem.add_dependency 'scrapi'
14
+ gem.add_dependency 'tweetstream'
14
15
  gem.add_development_dependency 'shoulda'
15
16
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
17
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.0.1
data/lib/woot.rb CHANGED
@@ -1,11 +1,21 @@
1
1
  class Woot
2
2
  DOMAIN = 'woot.com'
3
+ WOOT_OFF = 'woot-off'
4
+ TWITTER_IDS = {
5
+ 'kids' => 66527200,
6
+ 'shirt' => 7696162,
7
+ 'sellout' => 15458304,
8
+ 'wine' => 1647621,
9
+ 'www' => 734493,
10
+ WOOT_OFF => 20557892
11
+ }
12
+ SUBDOMAINS = TWITTER_IDS.keys - [WOOT_OFF]
3
13
 
4
14
  def self.scrape(subdomain = :www)
5
15
  selectors = self.selectors(subdomain)
6
16
  Scraper.define do
7
17
  result *(selectors.inject([]) do |array, (pattern, results)|
8
- process pattern, results
18
+ process_first pattern, results
9
19
  array += results.keys
10
20
  end)
11
21
  end.scrape(URI.parse("http://#{subdomain}.#{DOMAIN}/"))
@@ -13,6 +23,7 @@ class Woot
13
23
 
14
24
  def self.selectors(subdomain = :www)
15
25
  @selectors = {
26
+ '*' => { :subdomain => proc { |element| subdomain.to_s } },
16
27
  'h2.fn' => { :title => :text },
17
28
  'span.amount' => { :price => :text },
18
29
  'ul#shippingOptions' => { :shipping => :text },
@@ -30,4 +41,18 @@ class Woot
30
41
  end }
31
42
  }
32
43
  end
44
+
45
+ def self.stream(twitter_username, twitter_password)
46
+ TweetStream::Client.new(twitter_username, twitter_password).follow(*TWITTER_IDS.values) do |status|
47
+ subdomain = TWITTER_IDS.index(status.user.id)
48
+ unless subdomain.nil?
49
+ subdomain = status.text.match(/https?:\/\/([^\.]+)\.#{DOMAIN}/).captures.first if subdomain == WOOT_OFF
50
+ yield Woot.scrape(subdomain)
51
+ end
52
+ end
53
+ end
54
+
55
+ def self.stop
56
+ TweetStream::Client.stop
57
+ end
33
58
  end
data/test/test_helper.rb CHANGED
@@ -2,6 +2,7 @@ require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'shoulda'
4
4
  require 'scrapi'
5
+ require 'tweetstream'
5
6
  Tidy.path = ENV['TIDY_PATH'] if ENV['TIDY_PATH']
6
7
 
7
8
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
data/woot.gemspec ADDED
@@ -0,0 +1,58 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{woot}
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Sean Huber"]
12
+ s.date = %q{2009-11-02}
13
+ s.description = %q{Scapes woot.com sites}
14
+ s.email = %q{shuber@huberry.com}
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "MIT-LICENSE",
21
+ "README.rdoc",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "init.rb",
25
+ "lib/woot.rb",
26
+ "test/test_helper.rb",
27
+ "test/woot_test.rb",
28
+ "woot.gemspec"
29
+ ]
30
+ s.homepage = %q{http://github.com/shuber/woot}
31
+ s.rdoc_options = ["--charset=UTF-8"]
32
+ s.require_paths = ["lib"]
33
+ s.rubygems_version = %q{1.3.5}
34
+ s.summary = %q{Scapes woot.com sites}
35
+ s.test_files = [
36
+ "test/test_helper.rb",
37
+ "test/woot_test.rb"
38
+ ]
39
+
40
+ if s.respond_to? :specification_version then
41
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
42
+ s.specification_version = 3
43
+
44
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
45
+ s.add_runtime_dependency(%q<scrapi>, [">= 0"])
46
+ s.add_runtime_dependency(%q<tweetstream>, [">= 0"])
47
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
48
+ else
49
+ s.add_dependency(%q<scrapi>, [">= 0"])
50
+ s.add_dependency(%q<tweetstream>, [">= 0"])
51
+ s.add_dependency(%q<shoulda>, [">= 0"])
52
+ end
53
+ else
54
+ s.add_dependency(%q<scrapi>, [">= 0"])
55
+ s.add_dependency(%q<tweetstream>, [">= 0"])
56
+ s.add_dependency(%q<shoulda>, [">= 0"])
57
+ end
58
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: woot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Huber
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-30 00:00:00 -07:00
12
+ date: 2009-11-02 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,6 +22,16 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "0"
24
24
  version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: tweetstream
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
25
35
  - !ruby/object:Gem::Dependency
26
36
  name: shoulda
27
37
  type: :development
@@ -50,6 +60,7 @@ files:
50
60
  - lib/woot.rb
51
61
  - test/test_helper.rb
52
62
  - test/woot_test.rb
63
+ - woot.gemspec
53
64
  has_rdoc: true
54
65
  homepage: http://github.com/shuber/woot
55
66
  licenses: []