woot 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  = woot
2
2
 
3
- Scapes woot.com sites with ruby
3
+ Scrapes woot.com sites
4
4
 
5
5
  == Installation
6
6
 
@@ -15,10 +15,10 @@ Defaults to www.
15
15
  puts woot.title
16
16
  puts woot.price
17
17
 
18
- data = Woot.scrape(:shirt)
18
+ woot = Woot.scrape(:shirt)
19
19
  puts woot.title
20
20
 
21
- You can also receive live Woot updates using "Twitter's Streaming API"[http://apiwiki.twitter.com/Streaming-API-Documentation].
21
+ You can also receive live Woot updates using Twitter's Streaming API (See http://apiwiki.twitter.com/Streaming-API-Documentation).
22
22
  Simply call <tt>Woot.stream</tt> with your Twitter username, password, and a block.
23
23
 
24
24
  Woot.stream('your-twitter-username', 'your-twitter-password') do |woot|
@@ -41,6 +41,7 @@ Call <tt>Woot.stop</tt> to stop streaming.
41
41
  == Todo
42
42
 
43
43
  * sellout.woot.com support
44
+ * parsing and streaming tests
44
45
 
45
46
  == Copyright
46
47
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -13,7 +13,7 @@ class Woot
13
13
 
14
14
  def self.scrape(subdomain = :www)
15
15
  selectors = self.selectors(subdomain)
16
- Scraper.define do
16
+ ::Scraper.define do
17
17
  result *(selectors.inject([]) do |array, (pattern, results)|
18
18
  process_first pattern, results
19
19
  array += results.keys
@@ -43,16 +43,14 @@ class Woot
43
43
  end
44
44
 
45
45
  def self.stream(twitter_username, twitter_password)
46
- TweetStream::Client.new(twitter_username, twitter_password).follow(*TWITTER_IDS.values) do |status|
46
+ ::TweetStream::Client.new(twitter_username, twitter_password).follow(*TWITTER_IDS.values) do |status|
47
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
48
+ subdomain = $1 if subdomain == WOOT_OFF && subdomain =~ /https?:\/\/([^\.]+)\.#{DOMAIN}/
49
+ yield Woot.scrape(subdomain) unless subdomain.nil?
52
50
  end
53
51
  end
54
52
 
55
53
  def self.stop
56
- TweetStream::Client.stop
54
+ ::TweetStream::Client.stop
57
55
  end
58
56
  end
@@ -0,0 +1,645 @@
1
+
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head id="ctl00_ctl00_Head"><title>
5
+ Woot : One Day, One Deal (SM)
6
+ </title>
7
+ <script type="text/javascript">document.write(unescape("%3Cscript src='" + document.location.protocol + "//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'%3E%3C/script%3E"));</script>
8
+
9
+
10
+ <link rel="icon" href="http://gzip.static.woot.com/App_Themes/Woot/favicon.5.ico" type="image/x-icon" /><link rel="shortcut icon" href="http://gzip.static.woot.com/App_Themes/Woot/favicon.5.ico" type="image/x-icon" /><link rel="apple-touch-icon" href="http://gzip.static.woot.com/App_Themes/Woot/Images/apple-touch-icon.5.png" /><link rel='search' type='application/opensearchdescription+xml' title='Woot' href='/Search/OpenSearch.ashx' /><link href='http://gzip.static.woot.com/Styles/MasterPage.min.5034.css' rel='stylesheet' type='text/css' /><link href='Blog/Feed.ashx' rel='alternate' title='RSS' type='application/rss+xml' /><link rel="microsummary" type="application/x.microsummary+xml" href="DefaultMicrosummary.ashx" /><link rel="microsummary" type="application/x.microsummary+xml" href="DefaultReversedMicrosummary.ashx" /><link href='http://gzip.static.woot.com/Styles/HomePage.min.5034.css' rel='stylesheet' type='text/css' /><link href='http://gzip.static.woot.com/App_Themes/Woot/Styles/Theme.min.5034.css' rel='stylesheet' type='text/css' /></head>
11
+ <body id="ctl00_ctl00_Body" class="todaysWoot">
12
+ <div class="clearfix" id="header">
13
+ <h1>
14
+ <a href="./" class="logo">Woot : One Day, One Deal (SM)</a>
15
+
16
+ </h1>
17
+ <script type="text/javascript">
18
+ function showLoginForm() {
19
+ $('#loginLink').hide();
20
+ $('#loginForm').show();
21
+ $('#username').focus();
22
+ }
23
+ </script>
24
+ <div id="login">
25
+ <noscript>
26
+
27
+
28
+ <h4>Welcome back!</h4>
29
+ <p><a href='https://sslwww.woot.com/Member/YourAccount.aspx'>My account</a> | <a href='https://account.woot.com/logout?returnurl=http%3a%2f%2fwww.woot.com%2fdefault.aspx'>Log out</a></p>
30
+
31
+ </noscript>
32
+ <div id="loggedIn" style="display:none;">
33
+ <h4>Welcome <span class="username"></span><span class="qube"></span></h4>
34
+ <p><a href='https://sslwww.woot.com/Member/YourAccount.aspx'>My account</a> | <a href='https://account.woot.com/logout?returnurl=http%3a%2f%2fwww.woot.com%2fdefault.aspx'>Log out</a></p>
35
+ </div>
36
+ <div id="loggedOut" style="display:none;">
37
+ <div id="loginLink">
38
+ <h4><a href="https://account.woot.com/login?returnurl=http%3a%2f%2fwww.woot.com%2fdefault.aspx" onclick="showLoginForm(); return false;">Log in</a></h4>
39
+ </div>
40
+ <div id="loginForm" style="display:none;">
41
+ <form action='https://account.woot.com/login?returnurl=http%3a%2f%2fwww.woot.com%2fdefault.aspx' method="post">
42
+ <ul class="clearfix">
43
+ <li>
44
+ <input id="username" name="username" tabindex="1" type="text" />
45
+ <span>username</span>
46
+ </li>
47
+ <li>
48
+ <input name="password" tabindex="2" type="password" />
49
+ <span>password <a href='https://sslwww.woot.com/User/ForgotPassword.aspx'>(forget?)</a></span>
50
+ </li>
51
+ <li id="loginSubmit">
52
+ <input tabindex="3" type="submit" value="Go" />
53
+ </li>
54
+ </ul>
55
+ </form>
56
+ </div>
57
+ <p>Hi, are you new? <a href='https://sslwww.woot.com/User/Register.aspx'>Start here</a>.</p>
58
+ </div>
59
+ </div>
60
+
61
+ <ul class="nav">
62
+ <li id="navTodaysWoot"><a href="/"><span>Today's Woot</span></a></li>
63
+ <li id="navBlog"><a href="/Blog/"><span>Blog</span></a></li>
64
+ <li id="navCommunity"><a href="/Forums/"><span>Community</span></a></li>
65
+ <li id="navWriteUs"><a href="/WriteUs.aspx"><span>Write Us</span></a></li>
66
+ <li id="navWhatIsWoot"><a href="/WhatIsWoot.aspx"><span>What Is Woot?</span></a></li>
67
+ </ul>
68
+ </div>
69
+ <form name="aspnetForm" method="post" action="default.aspx" id="aspnetForm">
70
+ <div>
71
+ <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNDMwNzE3MDMwZGTHscstbp0E2jJMrd8uGXSlJpAbZw==" />
72
+ </div>
73
+
74
+
75
+ <script src="http://gzip.static.woot.com/Scripts/jquery.corner.min.5034.js" type="text/javascript"></script>
76
+ <script src="http://gzip.static.woot.com/Scripts/jquery.simplemodal.min.5034.js" type="text/javascript"></script>
77
+ <script src="http://gzip.static.woot.com/Scripts/MasterPage.min.5034.js" type="text/javascript"></script>
78
+ <script src="http://gzip.static.woot.com/Scripts/jquery.qtip.min.5034.js" type="text/javascript"></script>
79
+ <script type="text/javascript">
80
+ //<![CDATA[
81
+ $(function() { $('.otherWootSite img').qtip(thumbnailQtipSettings); });//]]>
82
+ </script>
83
+
84
+ <script src="http://gzip.static.woot.com/Scripts/jquery.jscrollpane.min.5034.js" type="text/javascript"></script>
85
+ <script src="http://gzip.static.woot.com/Scripts/jquery.mousewheel.min.5034.js" type="text/javascript"></script>
86
+ <script src="http://partner.googleadservices.com/gampad/google_service.js" type="text/javascript"></script><script type="text/javascript">GS_googleAddAdSenseService('ca-pub-2332856072838068'); GS_googleEnableAllServices();</script><script type="text/javascript">GA_googleAddSlot('ca-pub-2332856072838068', 'woot-homeside1-300x250');</script><script type="text/javascript">GA_googleFetchAds();</script><script type="text/javascript">GA_googleAddSlot('ca-pub-2332856072838068', 'woot-homeside2-300x250');</script><script type="text/javascript">GA_googleAddSlot('ca-pub-2332856072838068', 'woot-homeside3-300x250');</script>
87
+
88
+ <p class="accessibility">Woot is the originator of One Day, One Deal. Every midnight (central) we launch an
89
+ event: one sale that lives until it sells out, or the next midnight.</p>
90
+ <div class="leadIn">
91
+
92
+
93
+
94
+ <div class="hproduct clearfix">
95
+ <a href="javascript:lightboxImage('http://sale.images.woot.com/iRobot_Roomba_530_Robotic_Vacuum_with_Virtual_WallyxlDetail.jpg');"><img alt="iRobot Roomba 530 Robotic Vacuum with Virtual Wall" class="photo" src="http://sale.images.woot.com/iRobot_Roomba_530_Robotic_Vacuum_with_Virtual_WalluquStandard.jpg" /></a>
96
+ <div class="productDescription">
97
+
98
+ <h2 class="fn">iRobot Roomba 530 Robotic Vacuum with Virtual Wall</h2>
99
+ <h3 class="price"><span class="money"><abbr class="currency" title="USD" lang="en">$</abbr><span class="amount">129.99</span></span></h3>
100
+
101
+ <ul id="shippingOptions">
102
+
103
+ <li>+ $5 shipping</li>
104
+
105
+ </ul>
106
+
107
+
108
+ <a href='http://www.woot.com/sale/10244' class="url" style="display:none;"></a>
109
+ <dl>
110
+
111
+ <dt>Condition:</dt>
112
+ <dd>Refurbished</dd>
113
+ <dt>Product:</dt>
114
+
115
+ <dd>
116
+ 1 iRobot Roomba 530 Robotic Vacuum with Virtual Wall and Self-Charging Home Base
117
+
118
+ </dd>
119
+
120
+
121
+ </dl>
122
+ <h5><a id="ctl00_ctl00_ContentPlaceHolderLeadIn_ContentPlaceHolderLeadIn_SaleControl_HyperLinkWantOne" class="soldOut">I Want One!</a></h5>
123
+ </div>
124
+ <!-- Event Codes -->
125
+
126
+
127
+
128
+ </div>
129
+
130
+ <div id="ctl00_ctl00_ContentPlaceHolderLeadIn_ContentPlaceHolderLeadIn_PanelSalebar" class="salebar">
131
+
132
+ <div class="module qualityPosts">
133
+ <div class="header">
134
+ <h3><a id="ctl00_ctl00_ContentPlaceHolderLeadIn_ContentPlaceHolderLeadIn_ctl00_ctl00_HyperLinkDiscussion" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553042">Discussion on Today's Woot</a></h3>
135
+ </div>
136
+ <div class="content">
137
+
138
+
139
+ <p>shelby61 wants to know, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553921#3553921" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553921#3553921">"How does this model do with standard fringe at the ends of rugs?"</a></p>
140
+
141
+ <p>ZigIsAwesome worries about <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553900#3553900" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553900#3553900">bar stools</a>.</p>
142
+
143
+ <p>Aellus replies, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553843#3553843" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553843#3553843">"Yes, easily. My 530 climbs up into the bottom shelf of my TV stand every time it cleans the living room. Its about a full inch shelf height."</a></p>
144
+
145
+ <p>noomehtrevo asks, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553804#3553804" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553804#3553804">"I live in an apartment and there is about a half-inch lip going from the den to the kitchen area. Will it make it up to that area?"</a></p>
146
+
147
+ <p>rswoot555 opines, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553773#3553773" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553773#3553773">"if you have young children that leave their toys, etc. around the house the iRobot isn't for you."</a> Wootbot picks up first.</p>
148
+
149
+ <p>bnedella says, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553758#3553758" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553758#3553758">"530 is loud enough you'll have to turn up the TV if it is in the same room, but not so much that it is unbearable. Solve the problem by vacuuming while away from home though."</a></p>
150
+
151
+ <p>rfreed wants to know, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553680#3553680" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553680#3553680">" Can you purchase additional virtual walls?"</a></p>
152
+
153
+ <p>smaw0351 notes, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553545#3553545" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553545#3553545">"it works great on our hardwood floors. very rarely it would get stuck going over the a/c vents on the floor."</a></p>
154
+
155
+ <p>cticindy may love <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553514#3553514" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553514#3553514">Roombas a little much</a>.</p>
156
+
157
+ <p>psychodad1961 wonders, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553487#3553487" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553487#3553487">"Is this really a vacuum or does it just sweep the floor like my Swivel Sweeper...?"</a></p>
158
+
159
+ <p>rfekecs thinks, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553470#3553470" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553470#3553470">"...it was worthless, a huge disappointment. Easier to just vacuum myself."</a></p>
160
+
161
+ <p>gorbag says, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553403#3553403" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553403#3553403">"They're really great, but be aware that they do have to be cleaned after each run, and extracting hair..."</a></p>
162
+
163
+ <p>Flagg looks into using them with <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553390#3553390" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553390#3553390">220V power</a>.</p>
164
+
165
+ <p>Inuyasha inquires, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553382#3553382" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553382#3553382">" do you know if the power supply is it ok for 220V?"</a></p>
166
+
167
+ <p>Flagg responds, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553379#3553379" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553379#3553379">"I've had my Roomba run over pet barf and other accidents, and believe me, it's not good."</a></p>
168
+
169
+ <p>ElevenBangBang worries about other <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553365#3553365" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553365#3553365">pet... issues</a>.</p>
170
+
171
+ <p>scorpshockey thinks this is a <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553354#3553354" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553354#3553354"> very tempting price.</a></p>
172
+
173
+ <p>mmiteshm checks out <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553265#3553265" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553265#3553265">coverage</a>.</p>
174
+
175
+ <p>zephalis relates, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553241#3553241" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553241#3553241">"This model does fairly well at getting itself unstuck from carpet tassels and cords. It's strong enough to pick up a AA battery without me noticing."</a></p>
176
+
177
+ <p>mmiteshm <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553236#3553236" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553236#3553236">hacks</a> Roombas.</p>
178
+
179
+ <p>bnedella tries to cover some <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553212#3553212" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553212#3553212">frequently asked questions</a>.</p>
180
+
181
+ <p>mmiteshm hurries off to <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553205#3553205" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553205#3553205">YouTube</a>.</p>
182
+
183
+ <p>goldiemcg posts, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553202#3553202" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553202#3553202">"It works great on hardwoods and doesn't seem to have much of an issue with our rugs."</a></p>
184
+
185
+ <p>esperath shares, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553184#3553184" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553184#3553184">"The Roomba does a great job of picking up cat fur and stray litter pellets from around the house."</a></p>
186
+
187
+ <p>danib62 warns, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553158#3553158" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553158#3553158">"One caveat though is that it will not like dark colored rugs!"</a></p>
188
+
189
+ <p>greatgerm found us some <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553155#3553155" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553155#3553155">reviews</a>.</p>
190
+
191
+ <p>kmeltzer says, <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553115#3553115" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553115#3553115">"I bought one at this previous Wooting. Been very happy with it. I named it Roombie."</a></p>
192
+
193
+ <p>LEM- checks out a <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553086#3553086" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553086#3553086">previous wooting</a>.</p>
194
+
195
+ <p>DCno10 visits <a href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553055#3553055" rel="nofollow" title="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553055#3553055">iRobot</a>.</p>
196
+
197
+ </div>
198
+ <div class="footer">
199
+ <ul class="clearfix">
200
+ <li class="discuss"><a id="ctl00_ctl00_ContentPlaceHolderLeadIn_ContentPlaceHolderLeadIn_ctl00_ctl00_HyperLinkAllDiscussion" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553042">Join This Discussion</a></li>
201
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderLeadIn_ContentPlaceHolderLeadIn_ctl00_ctl00_HyperLinkCommentCount" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553042">209 comments</a></li>
202
+ </ul>
203
+ </div>
204
+ </div>
205
+
206
+ </div>
207
+
208
+
209
+ </div>
210
+ <div class="contentWrapper">
211
+ <div class="contentContainer clearfix">
212
+ <div class="arrow"></div>
213
+ <div class="mainContent clearfix">
214
+
215
+
216
+ <div class="story">
217
+ <h2>Looking For Mr. Roombar</h2>
218
+ <h3>This is nice, isn’t it? I have to say, I was surprised when you called me. Most people who date robots prefer the kind that, you know, look like people.</h3>
219
+ <div class="writeUp"><p>I just keep thinking about all those times you came over to play cards with Len and Sherry. Of course I noticed you, but I never imagined you noticed me, way down on the floor in my self-charging home base. Well, there was this one time when I heard you ask Sherry about me. It made my heart leap. But then Sherry just started talking about how convenient I was, and how my counter-rotating Bristle Brush and Beater Brush work together like a broom and dustpan to lift hair, dust, and debris out of carpet. I just assumed you were interested in my cleaning abilities, not me personally. Glad I was wrong!</p>
220
+ <p>Wow, everything on the menu looks so good. I’d heard about this place, but it’s even nicer than I imagined. Well, except for the floors. It’s like they think they can slap down a brown carpet and forget about ever vacuuming again. Well, they can’t fool me and my Dirt Detect capability. Like that smear of, like, dried holladaise sauce or whatever it is, over by that booth. See, if it was up to me, I’d really bear down with my Spot Clean mode, and I’d have that crud lifted up before you could say “new, improved filter”. See, that’s the difference between me and a regular old-</p>
221
+ <p>Listen to me. Talking shop in the middle of a lovely first date. Sorry. I just don’t get out much.</p>
222
+ <p>So, uh, have you seen any interesting movies lately? I haven’t. I’ve actually never seen a movie in a theater. Every time I try, I see all that popcorn and all those crumbs all over the floor, and I just can’t resist getting down there and sweeping it all up. Well, you can imagine the noise. I’m loud, I know. What can I say? I grew up in a loud family. You get us together, it’s <span class="caps">VRRRR</span>-VRRRR-VRRRR the whole time.</p>
223
+ <p>What? Go back to your place? Sure. Yeah, that would be fun. I’m not that hungry anyway. Um, yes, I did bring my Virtual Wall. Yeah, I emptied my Debris Bin right before you picked me up. Why do you ask?</p>
224
+ <p>Oh. Oh, I see. So it’s like that. I guess I should’ve known.</p></div>
225
+ <div class="specs">
226
+
227
+ <strong>Authorized for <a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=5728">SquareTrade</a> Extended Warranty</strong><br><br><script type="text/javascript" src="http://static.woot.com/Scripts/quoteWidget-custom.min.3588.js"></script><span id="squaretradewidget"></span><script type="text/javascript">$(document).ready(function() {st_widget.create({itemCondition:'Refurbished',itemDescription:'iRobot Roomba 530 Robotic Vacuum with Virtual Wall',itemPrice:'129.99',bannerStyle:'wide',widgetType:'quote',merchantID:'subscrip_014793207843'}); });</script><br/><br/>
228
+ <p><strong>Warranty:</strong> 90 Day iRobot</p>
229
+ <p><strong>Features:</strong></p>
230
+ <ul>
231
+ <li>Efficiently vacuums dirt, debris, pet hair, dust, allergens and more from carpets and hard floors</li>
232
+ <li>Counter rotating Bristle Brush and Beater Brush work together like a dustpan and broom</li>
233
+ <li>Sturdy Bristle Brush digs deep into carpet fibers to grab dirt, debris, pet hair and more</li>
234
+ <li>Powerful vacuum sucks large and small debris into the large, bag-less bin</li>
235
+ <li>Fine filter traps dust, pollen and tiny particulate inside the bin</li>
236
+ <li>Cleans the whole floor, under and around furniture, into corners and along wall edges</li>
237
+ <li>Detects dirtier areas and spends more time cleaning them</li>
238
+ <li>Spot Clean provides quick clean-up of spills and concentrated messes</li>
239
+ <li>Automatically senses and avoids stairs and other drop-offs</li>
240
+ <li>Simple operation—just press the Clean button and Roomba does the rest</li>
241
+ <li>Automatically returns to its self-charging Home Base® to dock and recharge between cleanings</li>
242
+ <li>Faster counter-rotating brushes with improved design pick up more hair and debris and are easier to remove and clean</li>
243
+ <li>Improved filter captures more dust and allergens while a larger bin holds more debris</li>
244
+ <li>Improved anti-tangle technology keeps Roomba from getting stuck on cords, carpet fringe and tassels</li>
245
+ <li>Improved sidebrush makes Roomba even more efficient at cleaning edges and corners</li>
246
+ </ul>
247
+ <p><strong>Additional Photo:</strong></p>
248
+ <ul>
249
+ <li><a href="javascript:lightboxImage('http://sale.images.woot.com/HG77034C_Specs2.jpg');">Underbelly</a></li>
250
+ <li><a href="javascript:lightboxImage('http://sale.images.woot.com/HG77034C_specs3.jpg');">In Home Base with Virtual Wall</a></li>
251
+ <li><a href="javascript:lightboxImage('http://sale.images.woot.com/HG77034C_specs4.jpg');">Virtual Wall</a></li>
252
+ </ul>
253
+ <p><strong>In the box:</strong></p>
254
+ <ul>
255
+ <li>1 iRobot Roomba 530</li>
256
+ <li>1 Virtual Wall&#160;</li>
257
+ <li>1 Self-charging Home Base</li>
258
+ <li>1 Power Supply (3 hour charge time)</li>
259
+ <li>1 Rechargeable Battery</li>
260
+ <li>1 Filter </li>
261
+ </ul>
262
+ <p>&#160;</p>
263
+ </div>
264
+ <div class="rider"></div>
265
+ </div>
266
+ <div id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_PanelInnerbar" class="innerbar">
267
+ <div id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_ctl02_ctl00_PanelAdvertisement" class="module advertisement">
268
+
269
+ <div class="content">
270
+ <script type="text/javascript">GA_googleFillSlot('woot-homeside1-300x250');</script>
271
+ </div>
272
+ <div class="footer">
273
+ <p><a href="SponsorUs.aspx">Advertisement</a></p>
274
+ </div>
275
+
276
+ </div>
277
+ <div id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_ctl02_ctl01_PanelWootcast" class="module wootcast haudio hmedia">
278
+
279
+ <div class="header">
280
+ <h3><a id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_ctl02_ctl01_HyperLinkYourDailyWootcast" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553045">Today's Wootcast</a></h3>
281
+ <h4><a href="Blog/Feed.ashx?cat=Woot">RSS Feed</a></h4>
282
+ </div>
283
+ <div class="content">
284
+ <ul class="clearfix">
285
+ <li class="playButton">
286
+
287
+ <!-- object, two implementations nested + IE conditional comments: http://www.swffix.org/testsuite/ -->
288
+ <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="31" width="56">
289
+ <param name="movie" value="http://gzip.static.woot.com/Flash/SoundPlayer.swf?url=http://files.woot.com/20091101-qaz2qs.mp3" />
290
+ <param name="bgcolor" value="#91AB62" />
291
+ <!--[if !IE]>-->
292
+ <object type="application/x-shockwave-flash" data="http://gzip.static.woot.com/Flash/SoundPlayer.swf?url=http://files.woot.com/20091101-qaz2qs.mp3" height="31" width="56">
293
+ <param name="bgcolor" value="#91AB62" />
294
+ <!--<![endif]-->
295
+ <a href="http://files.woot.com/20091101-qaz2qs.mp3">Play</a>
296
+ <!--[if !IE]>-->
297
+ </object>
298
+ <!--<![endif]-->
299
+ </object>
300
+ </li>
301
+ <li class="title fn">
302
+ <a id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_ctl02_ctl01_HyperLinkTitle" rel="enclosure" type="audio/mpeg" href="http://files.woot.com/20091101-qaz2qs.mp3">Today in History</a>
303
+ </li>
304
+ </ul>
305
+ </div>
306
+ <div class="footer">
307
+ <ul class="clearfix">
308
+ <li class="discuss"><a id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_ctl02_ctl01_HyperLinkDiscuss" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553045">Discuss This Wootcast</a></li>
309
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_ctl02_ctl01_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553045">6 comments</a></li>
310
+ </ul>
311
+ </div>
312
+
313
+ </div>
314
+
315
+ <script type="text/javascript">
316
+ function showFullSaleStats()
317
+ {
318
+ // Only load sale stats one time per page load
319
+ if (jQuery('#fullSaleStats')[0].innerHTML.length == 0)
320
+ {
321
+ jQuery('#fullSaleStats').load('/SaleStats.aspx?wootsaleid=10244 #saleStats', null, function() { lightboxElement('fullSaleStats'); });
322
+ }
323
+ else
324
+ {
325
+ lightboxElement('fullSaleStats');
326
+ }
327
+ }
328
+ </script>
329
+ <div id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_ctl02_ctl02_PanelSaleStats" class="module saleStats">
330
+
331
+ <div class="header">
332
+ <h3><a href="javascript:showFullSaleStats();">Sale Stats Snapshot</a></h3>
333
+ <h4><a href="javascript:showFullSaleStats();">Full Stats</a></h4>
334
+ </div>
335
+ <div class="content">
336
+ <dl class="singleStats clearfix">
337
+
338
+ <dt>Speed to First Woot:</dt>
339
+ <dd>6m 19.830s</dd>
340
+
341
+
342
+ <dt>First Sucker:</dt>
343
+ <dd>lasombra25</dd>
344
+
345
+
346
+ <dt>Sellout Time:</dt>
347
+ <dd>4:05:16 PM Central Time</dd>
348
+
349
+
350
+ <dt>Item quantity:</dt>
351
+ <dd>4999</dd>
352
+
353
+ </dl>
354
+ <h4>Quantity Breakdown</h4>
355
+ <ul class="horizontalBarChart">
356
+ <li><span class="value">90% bought 1</span><span class="bar" style="width:90%">90%</span></li>
357
+ <li><span class="value">5% bought 2</span><span class="bar" style="width:5%">5%</span></li>
358
+ <li><span class="value">4% bought 3</span><span class="bar" style="width:4%">4%</span></li>
359
+ </ul>
360
+ </div>
361
+ <div class="footer">
362
+ <p><a href="javascript:showFullSaleStats();">Full Stats &rarr;</a></p>
363
+ </div>
364
+
365
+ </div>
366
+ <div class="statsBoxOuter" id="fullSaleStats"></div>
367
+
368
+ <div id="ctl00_ctl00_ContentPlaceHolderMainContent_ContentPlaceHolderMainContent_ctl02_ctl03_PanelAdvertisement" class="module advertisement">
369
+
370
+ <div class="content">
371
+ <script type="text/javascript">GA_googleFillSlot('woot-homeside2-300x250');</script>
372
+ </div>
373
+ <div class="footer">
374
+ <p><a href="SponsorUs.aspx">Advertisement</a></p>
375
+ </div>
376
+
377
+ </div>
378
+ </div>
379
+ <p class="backToTop"><a href="#header">Back to top</a></p>
380
+
381
+
382
+ </div>
383
+ <div class="sidebar">
384
+
385
+
386
+
387
+ <script type="text/javascript">
388
+ // Google Analytics variables
389
+ var serverHour = 17;
390
+ var isWootOff = false;
391
+ </script>
392
+
393
+ <div class="module onOtherWoots">
394
+ <div class="content">
395
+ <div class="otherWootSite firstWoot">
396
+ <h3><a class="kids" href="http://kids.woot.com">Kids.Woot</a></h3>
397
+ <a href="http://kids.woot.com"><img alt="Matchbox Power Scouts Adventure System" src="http://sale.images.woot.com/Matchbox_Power_Scouts_Adventure_System07qThumbnail.jpg" /></a>
398
+ </div>
399
+ <div class="otherWootSite lastWoot">
400
+ <h3><a class="shirt" href="http://shirt.woot.com">Shirt.Woot</a></h3>
401
+ <a href="http://shirt.woot.com"><img alt="Big On The Inside" src="http://sale.images.woot.com/Big_On_The_InsidexrmThumbnail.png" /></a>
402
+ </div>
403
+ </div>
404
+ </div>
405
+
406
+ <div class="module onOtherWoots">
407
+ <div class="content">
408
+ <div class="otherWootSite firstWoot">
409
+ <h3><a class="sellout" href="http://sellout.woot.com">Sellout.Woot</a></h3>
410
+ <a href="http://sellout.woot.com"><img alt="Garrity Rechargeable LED Flashlight" src="http://sale.images.woot.com/Garrity_Rechargeable_LED_Flashlight8prThumbnail.jpg" /></a>
411
+ </div>
412
+ <div class="otherWootSite lastWoot">
413
+ <h3><a class="wine" href="http://wine.woot.com">Wine.Woot</a></h3>
414
+ <a href="http://wine.woot.com"><img alt="St. Supery Vineyards &#201;lu - 375ml - Three Pack" src="http://sale.images.woot.com/St._Supery_Vineyards_Élu__-_3_Pack3vyThumbnail.jpg" /></a>
415
+ </div>
416
+ </div>
417
+ </div>
418
+
419
+ <div class="module sideDeal">
420
+ <div class="header">
421
+ <h3><a href="SponsorUs.aspx" id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl02_SideDealLink">Today's Side Deal</a></h3>
422
+ </div>
423
+ <div class="content">
424
+ <p><p>Woot Exclusive – I-Inc 25” LCD Monitor 1080p $179.97 with Free Shipping @ <a href="http://www.woot.com/3le.r?url=http%3a%2f%2fwww.tigerdirect.com%2fapplications%2fcampaigns%2fcampaigntemplate.asp%3fCampaignID%3d28%26SRCCODE%3dWOOT0107%26cm_mmc_o%3d8BBfCjC-KeCjC-KeCjC-Ke">TigerDirect</a></p></p>
425
+ </div>
426
+ <div class="footer">
427
+ <ul class="clearfix">
428
+ <li class="discuss"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl02_HyperLinkDiscuss" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553043">Discuss This Side Deal</a></li>
429
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl02_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3553043">1 comment</a></li>
430
+ </ul>
431
+ </div>
432
+ </div>
433
+
434
+
435
+ <div class="module blog">
436
+ <div class="header">
437
+ <h3><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_HyperLinkHeader" href="Blog/">Woot Blog</a></h3>
438
+ <h4><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_HyperLinkFeed" href="Blog/Feed.ashx">RSS Feed</a></h4>
439
+ </div>
440
+ <div class="content">
441
+
442
+ <ul class="clearfix firstPost">
443
+ <li class="date">Today</li>
444
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9846">Of Course, If You WANT To Pay Us To Hype You…</a></li>
445
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl00_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3554057">1 comment</a></li>
446
+ </ul>
447
+
448
+ <ul class="clearfix ">
449
+ <li class="date">Oct 30</li>
450
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9829">Wootcasts from the Past: All Hallow’s Eve Edition</a></li>
451
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl01_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3549210">3 comments</a></li>
452
+ </ul>
453
+
454
+ <ul class="clearfix ">
455
+ <li class="date">Oct 29</li>
456
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9823">The Monster Mashup: Great Halloween Hits</a></li>
457
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl02_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3547872">8 comments</a></li>
458
+ </ul>
459
+
460
+ <ul class="clearfix ">
461
+ <li class="date">Oct 29</li>
462
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9821">Flash In The Brainpan: Red Remover</a></li>
463
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl03_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3547803">7 comments</a></li>
464
+ </ul>
465
+
466
+ <ul class="clearfix ">
467
+ <li class="date">Oct 28</li>
468
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9729">Real Actual Field Tests #3: Superman Inflato-Suit</a></li>
469
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl04_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3537168">20 comments</a></li>
470
+ </ul>
471
+
472
+ <ul class="clearfix ">
473
+ <li class="date">Oct 26</li>
474
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9585">10 Hot Rumors About Tomorrow's Ares Rocket Test Launch</a></li>
475
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl05_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3525409">12 comments</a></li>
476
+ </ul>
477
+
478
+ <ul class="clearfix ">
479
+ <li class="date">Oct 22</li>
480
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9565">Wootcasts from the Past: Magellan Like a Felon Edition</a></li>
481
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl06_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3518491">5 comments</a></li>
482
+ </ul>
483
+
484
+ <ul class="clearfix ">
485
+ <li class="date">Oct 22</li>
486
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9563">Windows 7 FAQ Or...Something Else?</a></li>
487
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl07_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3518355">11 comments</a></li>
488
+ </ul>
489
+
490
+ <ul class="clearfix ">
491
+ <li class="date">Oct 21</li>
492
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9557">Dancers Must Be At Least Ten Hours Old: Woot Weads The Wire</a></li>
493
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl08_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3517243">1 comment</a></li>
494
+ </ul>
495
+
496
+ <ul class="clearfix ">
497
+ <li class="date">Oct 21</li>
498
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9556">14 Amazing New Mac Features That Apple Forgot To Mention</a></li>
499
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_RepeaterNews_ctl09_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3516836">23 comments</a></li>
500
+ </ul>
501
+
502
+ </div>
503
+ <div class="footer">
504
+ <p><a href="Blog/" id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl04_SeeAllLink">See All &rarr;</a></p>
505
+ </div>
506
+ </div>
507
+ <div id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl05_PanelAdvertisement" class="module advertisement">
508
+
509
+ <div class="content">
510
+ <script type="text/javascript">GA_googleFillSlot('woot-homeside3-300x250');</script>
511
+ </div>
512
+ <div class="footer">
513
+ <p><a href="SponsorUs.aspx">Advertisement</a></p>
514
+ </div>
515
+
516
+ </div>
517
+
518
+ <div class="module blog">
519
+ <div class="header">
520
+ <h3><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl06_HyperLinkHeader" href="Blog/?cat=Contest">Woot Contests</a></h3>
521
+ <h4><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl06_HyperLinkFeed" href="Blog/Feed.ashx?cat=Contest">RSS Feed</a></h4>
522
+ </div>
523
+ <div class="content">
524
+
525
+ <ul class="clearfix firstPost">
526
+ <li class="date">Oct 28</li>
527
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9655">Winners' Gallery: the Best of Contest 232</a></li>
528
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl06_RepeaterNews_ctl00_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3536801">10 comments</a></li>
529
+ </ul>
530
+
531
+ <ul class="clearfix ">
532
+ <li class="date">Oct 27</li>
533
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9654">Winners' Gallery: the Best of Contest 231</a></li>
534
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl06_RepeaterNews_ctl01_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3529204">19 comments</a></li>
535
+ </ul>
536
+
537
+ <ul class="clearfix ">
538
+ <li class="date">Oct 19</li>
539
+ <li class="title"><a href="http://www.woot.com/Blog/ViewEntry.aspx?Id=9544">Woot Contest 237: Deflating The Conspiracy</a></li>
540
+ <li class="comments"><a id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl06_RepeaterNews_ctl02_HyperLinkComments" href="http://www.woot.com/Forums/ViewPost.aspx?PostID=3513628">53 comments</a></li>
541
+ </ul>
542
+
543
+ </div>
544
+ <div class="footer">
545
+ <p><a href="Blog/" id="ctl00_ctl00_ContentPlaceHolderSidebar_ContentPlaceHolderSidebar_ctl00_ctl06_SeeAllLink">See All &rarr;</a></p>
546
+ </div>
547
+ </div>
548
+
549
+
550
+
551
+ </div>
552
+ </div>
553
+ <div id="footerWrapper">
554
+ <div id="footer">
555
+
556
+
557
+ <div id="ctl00_ctl00_ContentPlaceHolderFooter_ContentPlaceHolderFooter_ctl00_PanelFooterAdditionalNav">
558
+
559
+ <div class="footerSeparator"></div>
560
+ <div class="linkFooter">
561
+ <div class="mumbo">
562
+ <h5><a href="/Terms.aspx">Mumbo Jumbo</a></h5>
563
+ <p>
564
+ Product narratives are for entertainment purposes and frequently employ <a href="http://en.wikipedia.org/wiki/Point_of_view_(literature)">literary point of view</a>; the narratives do not express Woot's editorial opinion.
565
+ Aside from literary abuse, your use of this site also subjects you to Woot's <a href="/Terms.aspx">terms of use</a> and <a href="/User/PrivacyNotice.aspx">privacy policy</a>.
566
+ </p>
567
+ <p>Woot logos, site design, &amp; content &copy; Woot, Inc. 2004-2009. All Rights Reserved.</p>
568
+ </div>
569
+ <div class="linkCol footerGutter">
570
+ <h5><a href="/">Woot</a></h5>
571
+ <ul>
572
+ <li><a href="/">Today's Woot</a></li>
573
+ <li><a href="/Blog/">Blog</a></li>
574
+ <li><a href="/Forums/">Community</a></li>
575
+ <li><a href="/WriteUs.aspx">Write Us</a></li>
576
+ <li><a href="/WhatIsWoot.aspx">What is Woot?</a></li>
577
+ </ul>
578
+ </div>
579
+ <div class="linkCol">
580
+ <h5><a href="/Blog/">Blog</a></h5>
581
+ <ul>
582
+ <li><a href="/Blog/?cat=Woot">Woot</a></li>
583
+ <li><a href="/Blog/?cat=News">News</a></li>
584
+ <li><a href="/Blog/?cat=Contest">Contest</a></li>
585
+ <li><a href="/Blog/?cat=Laffs">Laffs</a></li>
586
+ <li><a href="/Blog/?cat=Miscellanea">Miscellanea</a></li>
587
+ </ul>
588
+ </div>
589
+ <div class="linkCol">
590
+ <h5><a href="/Forums/">Community</a></h5>
591
+ <ul>
592
+ <li><a href="/Forums/">Woots</a></li>
593
+ <li><a href="/Forums/ViewForum.aspx?ForumID=15">World of Woot</a></li>
594
+ <li><a href="/Forums/ViewForum.aspx?ForumID=16">Contests</a></li>
595
+ <li><a href="/Forums/ViewForum.aspx?ForumID=21">Woot Side Deals</a></li>
596
+ <li><a href="/Forums/ViewForum.aspx?ForumID=17">Everything But Woot</a></li>
597
+ </ul>
598
+ </div>
599
+ <div class="linkCol">
600
+ <h5><a href="/WhatIsWoot.aspx">What Is Woot?</a></h5>
601
+ <ul>
602
+ <li><a href="/WhatIsWoot.aspx">Woot FAQ</a></li>
603
+ <li><a href="/SponsorUs.aspx">Be a Woot Sponsor</a></li>
604
+ <li><a href="/Jobs.aspx">Work for Woot</a></li>
605
+ <li><a href="/Recalls.aspx">Product Recall Notices</a></li>
606
+ <li><a href="/Terms.aspx">Terms and Conditions</a></li>
607
+ <li><a href="/User/PrivacyNotice.aspx">Privacy Policy</a></li>
608
+ </ul>
609
+ </div>
610
+ </div>
611
+
612
+ </div>
613
+
614
+
615
+ </div>
616
+ </div>
617
+ </div>
618
+ </form>
619
+ <!--[if IE 6]>
620
+ <script type="text/javascript" src="http://gzip.static.woot.com/Scripts/mtjs_iepnghandler_solo.min.5034.js"></script>
621
+ <script type="text/javascript">$(document).ready(function() { mtjs_iepnghandler_solo.go(); });</script>
622
+ <![endif]-->
623
+ <script type="text/javascript">
624
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
625
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
626
+ </script>
627
+ <script type="text/javascript">
628
+ var pageTracker = _gat._getTracker('UA-31798-1');
629
+ pageTracker._initData();
630
+ pageTracker._trackPageview('%2fdefault.aspx');
631
+ </script>
632
+ <!-- Start Quantcast tag -->
633
+ <script type="text/javascript">
634
+ _qoptions = { qacct: "p-45WWkjSYwI3II" };
635
+ </script>
636
+ <script type="text/javascript">
637
+ var quantcastHost = (("https:" == document.location.protocol) ? "https://secure." : "http://edge.");
638
+ document.write(unescape("%3Cscript src='" + quantcastHost + "quantserve.com/quant.js' type='text/javascript'%3E%3C/script%3E"));
639
+ </script>
640
+ <noscript>
641
+ <img src="https://secure.quantserve.com/pixel/p-45WWkjSYwI3II.gif" style="display:none;" border="0" height="1" width="1" alt="Quantcast" />
642
+ </noscript>
643
+ <!-- End Quantcast tag -->
644
+ </body>
645
+ </html>
@@ -23,4 +23,8 @@ class Test::Unit::TestCase
23
23
  @subdomains ||= [:www, :wine, :shirt, :kids] # TODO: sellout
24
24
  end
25
25
 
26
+ def self.woots
27
+ @woots ||= subdomains.inject({}) { |hash, subdomain| hash.merge! subdomain => Woot.scrape(subdomain) }
28
+ end
29
+
26
30
  end
@@ -2,19 +2,17 @@ require 'test_helper'
2
2
 
3
3
  class WootTest < Test::Unit::TestCase
4
4
 
5
- subdomains.each do |subdomain|
5
+ woots.each do |subdomain, woot|
6
6
  context "When parsing http://#{subdomain}.#{Woot::DOMAIN}/ it" do
7
- setup { @woot = Woot.scrape(subdomain) }
8
-
9
7
  attributes.each do |attribute|
10
8
  should "have a key for #{attribute}" do
11
- assert @woot.members.include?(attribute.to_s)
9
+ assert woot.members.include?(attribute.to_s)
12
10
  end
13
11
 
14
12
  unless possible_blank_attributes.include?(attribute)
15
13
  should "have a value for #{attribute}" do
16
- assert !@woot.send(attribute).nil?
17
- assert !@woot.send(attribute).empty?
14
+ assert !woot.send(attribute).nil?
15
+ assert !woot.send(attribute).empty?
18
16
  end
19
17
  end
20
18
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{woot}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sean Huber"]
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  "VERSION",
24
24
  "init.rb",
25
25
  "lib/woot.rb",
26
+ "test/fixtures/sold_out.html",
26
27
  "test/test_helper.rb",
27
28
  "test/woot_test.rb",
28
29
  "woot.gemspec"
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.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Huber
@@ -58,6 +58,7 @@ files:
58
58
  - VERSION
59
59
  - init.rb
60
60
  - lib/woot.rb
61
+ - test/fixtures/sold_out.html
61
62
  - test/test_helper.rb
62
63
  - test/woot_test.rb
63
64
  - woot.gemspec