steam-prices 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.md ADDED
File without changes
@@ -0,0 +1,25 @@
1
+ module SteamPrices
2
+ class Country
3
+
4
+ @currencies = {
5
+ 'usd' => 'us',
6
+ 'gbp' => 'uk',
7
+ 'aud' => 'au',
8
+ 'eur' => 'at',
9
+ 'eur' => 'de',
10
+ 'nok' => 'no' }
11
+
12
+ class << self; attr_reader :currencies; end
13
+
14
+ def initialize
15
+ end
16
+
17
+ def self.get_currency(country)
18
+ return (country.length == 2 ? @currencies.index(country) : nil)
19
+ end
20
+
21
+ def self.get_country(currency)
22
+ return (currency.length == 3 ? @currencies[currency] : nil)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,24 @@
1
+ module SteamPrices
2
+ class Game
3
+
4
+ include Updater
5
+
6
+ attr_reader :app_id, :app_name, :store_link, :logo_link, :date_released, :price
7
+
8
+ def initialize(app_name = nil, app_id = nil, store_link = nil, logo_link = nil, date_released = nil, price = nil)
9
+ @app_id = app_id.to_i
10
+ @app_name = app_name.to_s
11
+ @store_link = store_link
12
+ @logo_link = logo_link
13
+ @date_released = date_released
14
+ raise ArgumentError, "Expected: Money()" if price.class.name != 'Money' && price != nil
15
+ @price = price
16
+ end
17
+
18
+ def update(currency = nil)
19
+ return nil if !@app_name or @app_id == 0
20
+ self.class.update_one(@app_name, @app_id, currency)
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,87 @@
1
+ module SteamPrices
2
+ module Updater
3
+
4
+
5
+
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+
11
+
12
+
13
+ module ClassMethods
14
+ def currency(c)
15
+ return (c.nil? && SteamPrices::Country.currencies) || { c => SteamPrices::Country.get_country(c) }
16
+ end
17
+
18
+
19
+ # update a single one
20
+ def update_one(name, app_id, currency = nil)
21
+ prices = Hash.new
22
+
23
+ @countries = self.currency(currency) if !currency.nil?
24
+
25
+ @countries.each do |curr, country|
26
+ doc = Nokogiri::HTML(open(URI.encode("http://store.steampowered.com/search/results?sort_by=Name&sort_order=ASC&category1=998&cc=#{country}&v6=1&page=1&term=#{name}")))
27
+ price = doc.xpath('.//a[regex(., "/store\.steampowered\.com\/app\/' + app_id.to_s + '/")]', Class.new {
28
+ def regex node_set, regex
29
+ node_set.find_all { |node| node['href'] =~ /#{regex}/ }
30
+ end
31
+ }.new).search('.search_price').text.gsub(/[\W_]/, '').to_i
32
+ prices[curr] = Money.new(price, curr)
33
+ end
34
+ prices
35
+ end
36
+
37
+
38
+ # display stolen from https://github.com/spezifanta/SteamCalculator-Scripts/blob/master/getGames
39
+ def update_all(currency = nil, display = true)
40
+ games = Array.new
41
+
42
+ @countries = self.currency(currency) if !currency.nil?
43
+
44
+ @countries.each do |curr, country|
45
+ doc = Nokogiri::HTML(open(URI.encode("http://store.steampowered.com/search/results?sort_by=Name&sort_order=ASC&category1=998&cc=#{country}&v6=1&page=1")))
46
+ gamesPerPage, totalGames = doc.search('.search_pagination_left')[0].text.match(/showing\s\d+\s-\s(\d+)\sof\s(\d+)/m).captures
47
+
48
+ totalPages = (totalGames.to_i / gamesPerPage.to_i).ceil
49
+
50
+ for i in 1..totalPages
51
+
52
+ if display then
53
+ printf "\n Loading '#{country}', page %02d of %02d \n", i, totalPages
54
+ printf " Entries % 5d - % 5d of %d \n", ((i - 1) * gamesPerPage.to_i + 1), (i * gamesPerPage.to_i), totalGames
55
+ printf "+---------+---------+---------------+--------------------------------------------\n"
56
+ printf "| AppID | Price | Release | Game Title \n"
57
+ printf "+---------+---------+---------------+--------------------------------------------\n"
58
+ end
59
+
60
+ doc.search('.search_result_row').each do |game|
61
+ link, app_id = game.attr('href').match(/(.*store\.steampowered\.com\/app\/([\d]+)\/)/).captures
62
+ price = game.search('.search_price').text.gsub(/[\W_]/, '').to_i
63
+ date = game.search('.search_released').text
64
+ name = game.search('h4').text
65
+ logo = game.search('.search_capsule img').attr('src').value
66
+
67
+ print "|% 8s |" % app_id + "% 8.2f |" % (price / 100) + "% 14s |" % date if display
68
+ printf " %s%" + (43 - name[0,43].length).to_s + "s\n", name[0,42], " " if display
69
+ games << SteamPrices::Game.new(name, app_id, link, logo, date, Money.new(price, curr))
70
+
71
+
72
+ end
73
+
74
+ printf "+---------+---------+---------------+--------------------------------------------\n\n" if display
75
+ #grab the next page only if we're not on the last page
76
+ doc = Nokogiri::HTML(open(URI.encode("http://store.steampowered.com/search/results?sort_by=Name&sort_order=ASC&category1=998&cc=#{country}&v6=1&page=#{i+1}"))) if i != totalPages
77
+
78
+ end
79
+
80
+ end
81
+ games
82
+ end
83
+ end
84
+
85
+
86
+ end
87
+ end
@@ -0,0 +1,3 @@
1
+ module SteamPrices
2
+ VERSION = "0.1"
3
+ end
@@ -0,0 +1,6 @@
1
+ require 'steam_prices/steam_updater'
2
+ require 'steam_prices/steam_country'
3
+ require 'steam_prices/steam_game'
4
+ require 'nokogiri'
5
+ require 'open-uri'
6
+ require 'money'
@@ -0,0 +1,5 @@
1
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
2
+ $LOAD_PATH << File.join(File.dirname(__FILE__))
3
+
4
+ require 'steam_prices'
5
+ require 'rspec'
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe SteamPrices::Country do
4
+
5
+ context "currency from country" do
6
+ it "should return a currency if I specify a valid country" do
7
+ SteamPrices::Country.get_currency('us').should == 'usd'
8
+ end
9
+
10
+ it "should return nil if I specify an invalid country" do
11
+ SteamPrices::Country.get_currency('la').should == nil
12
+ end
13
+ end
14
+
15
+
16
+ context "country from currency" do
17
+ it "should return a country if I specify a valid currency" do
18
+ SteamPrices::Country.get_country('usd').should == 'us'
19
+ end
20
+
21
+ it "should return nil if I specify an invalid currency" do
22
+ SteamPrices::Country.get_country('hello').should == nil
23
+ end
24
+ end
25
+
26
+
27
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe SteamPrices::Game do
4
+
5
+ it "should be able to have an app id, app name, logo, and store link" do
6
+ g = SteamPrices::Game.new('brink', 31314, '', '', '', Money.new(1499, 'USD'))
7
+ g.app_name.should == 'brink'
8
+ g.app_id.should == 31314
9
+ end
10
+
11
+ it "should have a valid price of the money class" do
12
+ lambda { g = SteamPrices::Game.new('brink', 31314, '', '', '', '') }.should raise_error
13
+ g = SteamPrices::Game.new('brink', 31314, '', '', '', Money.new(1499, 'USD'))
14
+ g.price.should == 14.99
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe SteamPrices::Updater do
4
+
5
+ before(:each) do
6
+ URI.stub!(:encode)
7
+ end
8
+ context "all prices" do
9
+
10
+ it "should be able to scrape steam and give a bunch of prices" do
11
+ URI.should_receive(:encode).exactly(5).times.and_return(File.dirname(__FILE__) + '/support/us.html')
12
+ games = SteamPrices::Game.update_all('usd', true)
13
+ # the pages are set to 5 in the example, and there are 19 items on the page
14
+ 5.times do |i|
15
+ games[i*19].price.should == 9.99
16
+ end
17
+ games.size.should == 95
18
+ end
19
+
20
+ end
21
+
22
+ context "a single price" do
23
+ before(:each) do
24
+ URI.should_receive(:encode).and_return(File.dirname(__FILE__) + '/support/us.html')
25
+
26
+ end
27
+
28
+ it "should be able to find a single game and update it's price (instance)" do
29
+ g = SteamPrices::Game.new('brink', 22350)
30
+ g.update('usd')['usd'].should == 49.99
31
+
32
+ end
33
+
34
+ it "should be able to find a single game and update it's price (class)" do
35
+ prices = SteamPrices::Game.update_one('brink', 22350, 'usd')
36
+ prices['usd'].should == 49.99
37
+ end
38
+ end
39
+
40
+ end
@@ -0,0 +1,351 @@
1
+
2
+ <!-- saved from url=(0115)http://store.steampowered.com/search/results?sort_by=Name&sort_order=ASC&category1=998&cc=us&v6=1&page=1&term=brink -->
3
+ <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><h2 class="results_description">
4
+ brink : Games</h2>
5
+
6
+ <div class="search_rule"></div>
7
+
8
+
9
+ <div class="search_pagination">
10
+ <div class="search_pagination_left">
11
+ showing 1 - 19 of 95 </div>
12
+ <div class="search_pagination_right">
13
+ Page:
14
+ 1
15
+ </div>
16
+ <div style="clear: both;"></div>
17
+ </div>
18
+
19
+ <div id="search_header">
20
+ <div class="col search_price" onclick="location.href=&#39;http://store.steampowered.com/search/?sort_by=Price&amp;sort_order=ASC&amp;term=brink&amp;category1=998&#39;;">Price</div>
21
+ <div class="col search_type" onclick="location.href=&#39;http://store.steampowered.com/search/?sort_by=Type&amp;sort_order=ASC&amp;term=brink&amp;category1=998&#39;;">Type</div>
22
+ <div class="col search_metascore" onclick="location.href=&#39;http://store.steampowered.com/search/?sort_by=Metascore&amp;sort_order=DESC&amp;term=brink&amp;category1=998&#39;;">Metascore®</div>
23
+ <div class="col search_released" onclick="location.href=&#39;http://store.steampowered.com/search/?sort_by=Released&amp;sort_order=DESC&amp;term=brink&amp;category1=998&#39;;">Released</div>
24
+ <div class="search_name" onclick="location.href=&#39;http://store.steampowered.com/search/?sort_by=Name&amp;sort_order=DESC&amp;term=brink&amp;category1=998&#39;;">Title <img src="./results_files/up.gif" width="10" height="10" border="0"></div>
25
+ <div style="clear: both;"></div>
26
+ </div>
27
+ <!-- List Items -->
28
+ <div>
29
+ <!-- Extra empty div to hack around lame IE7 layout bug -->
30
+ <div></div>
31
+ <!-- End Extra empty div -->
32
+ <a href="http://store.steampowered.com/app/61510/?snr=1_7_7_151_150_1" class="search_result_row even">
33
+ <div class="col search_price">$9.99</div>
34
+ <div class="col search_type">
35
+ <img src="./results_files/ico_type_app.gif">
36
+ </div>
37
+ <div class="col search_metascore"></div>
38
+ <div class="col search_released">Oct 2010</div>
39
+
40
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120.jpg" alt="Buy Age of Wonders II: The Wizard&#39;s Throne" width="120" height="45"></div>
41
+ <div class="col search_name">
42
+ <h4>Age of Wonders II: The Wizard's Throne</h4>
43
+ <p>
44
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Strategy, RPG - Released: Oct 2010 </p>
45
+ </div>
46
+ <div style="clear: both;"></div>
47
+ </a>
48
+ <a href="http://store.steampowered.com/app/22350/?snr=1_7_7_151_150_1" class="search_result_row odd">
49
+ <div class="col search_price">$49.99</div>
50
+ <div class="col search_type">
51
+ <img src="./results_files/ico_type_app.gif">
52
+ </div>
53
+ <div class="col search_metascore">71</div>
54
+ <div class="col search_released">May 9, 2011</div>
55
+
56
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(1).jpg" alt="Buy BRINK" width="120" height="45"></div>
57
+ <div class="col search_name">
58
+ <h4>BRINK</h4>
59
+ <p>
60
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Action - Released: May 9, 2011 </p>
61
+ </div>
62
+ <div style="clear: both;"></div>
63
+ </a>
64
+ <a href="http://store.steampowered.com/app/10180/?snr=1_7_7_151_150_1" class="search_result_row even">
65
+ <div class="col search_price">$39.99</div>
66
+ <div class="col search_type">
67
+ <img src="./results_files/ico_type_app.gif">
68
+ </div>
69
+ <div class="col search_metascore">86</div>
70
+ <div class="col search_released">Nov 11, 2009</div>
71
+
72
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(2).jpg" alt="Buy Call of Duty®: Modern Warfare® 2" width="120" height="45"></div>
73
+ <div class="col search_name">
74
+ <h4>Call of Duty®: Modern Warfare® 2</h4>
75
+ <p>
76
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Action - Released: Nov 11, 2009 </p>
77
+ </div>
78
+ <div style="clear: both;"></div>
79
+ </a>
80
+ <a href="http://store.steampowered.com/app/47700/?snr=1_7_7_151_150_1" class="search_result_row odd">
81
+ <div class="col search_price">$19.99</div>
82
+ <div class="col search_type">
83
+ <img src="./results_files/ico_type_app.gif">
84
+ </div>
85
+ <div class="col search_metascore">64</div>
86
+ <div class="col search_released">Mar 16, 2010</div>
87
+
88
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(3).jpg" alt="Buy Command &amp; Conquer 4: Tiberian Twilight" width="120" height="45"></div>
89
+ <div class="col search_name">
90
+ <h4>Command &amp; Conquer 4: Tiberian Twilight</h4>
91
+ <p>
92
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Strategy - Released: Mar 16, 2010 </p>
93
+ </div>
94
+ <div style="clear: both;"></div>
95
+ </a>
96
+ <a href="http://store.steampowered.com/app/29900/?snr=1_7_7_151_150_1" class="search_result_row even">
97
+ <div class="col search_price">$9.99</div>
98
+ <div class="col search_type">
99
+ <img src="./results_files/ico_type_app.gif">
100
+ </div>
101
+ <div class="col search_metascore">66</div>
102
+ <div class="col search_released">Mar 24, 2009</div>
103
+
104
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(4).jpg" alt="Buy Dark Sector" width="120" height="45"></div>
105
+ <div class="col search_name">
106
+ <h4>Dark Sector</h4>
107
+ <p>
108
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Action - Released: Mar 24, 2009 </p>
109
+ </div>
110
+ <div style="clear: both;"></div>
111
+ </a>
112
+ <a href="http://store.steampowered.com/app/17450/?snr=1_7_7_151_150_1" class="search_result_row odd">
113
+ <div class="col search_price">$29.99</div>
114
+ <div class="col search_type">
115
+ <img src="./results_files/ico_type_app.gif">
116
+ </div>
117
+ <div class="col search_metascore">91</div>
118
+ <div class="col search_released">Nov 5, 2009</div>
119
+
120
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(5).jpg" alt="Buy Dragon Age: Origins" width="120" height="45"></div>
121
+ <div class="col search_name">
122
+ <h4>Dragon Age: Origins</h4>
123
+ <p>
124
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">RPG - Released: Nov 5, 2009 </p>
125
+ </div>
126
+ <div style="clear: both;"></div>
127
+ </a>
128
+ <a href="http://store.steampowered.com/app/39160/?snr=1_7_7_151_150_1" class="search_result_row even">
129
+ <div class="col search_price">$49.99</div>
130
+ <div class="col search_type">
131
+ <img src="./results_files/ico_type_app.gif">
132
+ </div>
133
+ <div class="col search_metascore"></div>
134
+ <div class="col search_released">Jun 2011</div>
135
+
136
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(6).jpg" alt="Buy Dungeon Siege III" width="120" height="45"></div>
137
+ <div class="col search_name">
138
+ <h4>Dungeon Siege III</h4>
139
+ <p>
140
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">RPG, Action - Available: Jun 2011 </p>
141
+ </div>
142
+ <div style="clear: both;"></div>
143
+ </a>
144
+ <a href="http://store.steampowered.com/app/40370/?snr=1_7_7_151_150_1" class="search_result_row odd">
145
+ <div class="col search_price">$19.99</div>
146
+ <div class="col search_type">
147
+ <img src="./results_files/ico_type_app.gif">
148
+ </div>
149
+ <div class="col search_metascore">64</div>
150
+ <div class="col search_released">Nov 22, 2010</div>
151
+
152
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(7).jpg" alt="Buy Emergency 2012" width="120" height="45"></div>
153
+ <div class="col search_name">
154
+ <h4>Emergency 2012</h4>
155
+ <p>
156
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Strategy, Simulation - Released: Nov 22, 2010 </p>
157
+ </div>
158
+ <div style="clear: both;"></div>
159
+ </a>
160
+ <a href="http://store.steampowered.com/app/34288/?snr=1_7_7_151_150_1" class="search_result_row even">
161
+ <div class="col search_price">$2.99</div>
162
+ <div class="col search_type">
163
+ <img src="./results_files/ico_type_app.gif">
164
+ </div>
165
+ <div class="col search_metascore"></div>
166
+ <div class="col search_released">Sep 13, 2010</div>
167
+
168
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(8).jpg" alt="Buy Eternal Champions™" width="120" height="45"></div>
169
+ <div class="col search_name">
170
+ <h4>Eternal Champions™</h4>
171
+ <p>
172
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Action - Released: Sep 13, 2010 </p>
173
+ </div>
174
+ <div style="clear: both;"></div>
175
+ </a>
176
+ <a href="http://store.steampowered.com/app/23450/?snr=1_7_7_151_150_1" class="search_result_row odd">
177
+ <div class="col search_price">$9.99</div>
178
+ <div class="col search_type">
179
+ <img src="./results_files/ico_type_app.gif">
180
+ </div>
181
+ <div class="col search_metascore">72</div>
182
+ <div class="col search_released">Mar 20, 2009</div>
183
+
184
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(9).jpg" alt="Buy Grand Ages: Rome" width="120" height="45"></div>
185
+ <div class="col search_name">
186
+ <h4>Grand Ages: Rome</h4>
187
+ <p>
188
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Strategy, Simulation - Released: Mar 20, 2009 </p>
189
+ </div>
190
+ <div style="clear: both;"></div>
191
+ </a>
192
+ <a href="http://store.steampowered.com/app/10100/?snr=1_7_7_151_150_1" class="search_result_row even">
193
+ <div class="col search_price">$19.99</div>
194
+ <div class="col search_type">
195
+ <img src="./results_files/ico_type_app.gif">
196
+ </div>
197
+ <div class="col search_metascore"></div>
198
+ <div class="col search_released">Jul 23, 2009</div>
199
+
200
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(10).jpg" alt="Buy King&#39;s Quest™ Collection" width="120" height="45"></div>
201
+ <div class="col search_name">
202
+ <h4>King's Quest™ Collection</h4>
203
+ <p>
204
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Adventure - Released: Jul 23, 2009 </p>
205
+ </div>
206
+ <div style="clear: both;"></div>
207
+ </a>
208
+ <a href="http://store.steampowered.com/app/36240/?snr=1_7_7_151_150_1" class="search_result_row odd">
209
+ <div class="col search_price">$6.99</div>
210
+ <div class="col search_type">
211
+ <img src="./results_files/ico_type_app.gif">
212
+ </div>
213
+ <div class="col search_metascore"></div>
214
+ <div class="col search_released">Sep 21, 2009</div>
215
+
216
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(11).jpg" alt="Buy Kuros" width="120" height="45"></div>
217
+ <div class="col search_name">
218
+ <h4>Kuros</h4>
219
+ <p>
220
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Family, Casual - Released: Sep 21, 2009 </p>
221
+ </div>
222
+ <div style="clear: both;"></div>
223
+ </a>
224
+ <a href="http://store.steampowered.com/app/6510/?snr=1_7_7_151_150_1" class="search_result_row even">
225
+ <div class="col search_price">$14.99</div>
226
+ <div class="col search_type">
227
+ <img src="./results_files/ico_type_app.gif">
228
+ </div>
229
+ <div class="col search_metascore">66</div>
230
+ <div class="col search_released">Jun 26, 2007</div>
231
+
232
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(12).jpg" alt="Buy Lost Planet™: Extreme Condition" width="120" height="45"></div>
233
+ <div class="col search_name">
234
+ <h4>Lost Planet™: Extreme Condition</h4>
235
+ <p>
236
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Action - Released: Jun 26, 2007 </p>
237
+ </div>
238
+ <div style="clear: both;"></div>
239
+ </a>
240
+ <a href="http://store.steampowered.com/app/23700/?snr=1_7_7_151_150_1" class="search_result_row odd">
241
+ <div class="col search_price">$14.99</div>
242
+ <div class="col search_type">
243
+ <img src="./results_files/ico_type_app.gif">
244
+ </div>
245
+ <div class="col search_metascore"></div>
246
+ <div class="col search_released">Apr 27, 2009</div>
247
+
248
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(13).jpg" alt="Buy Puzzle Kingdoms" width="120" height="45"></div>
249
+ <div class="col search_name">
250
+ <h4>Puzzle Kingdoms</h4>
251
+ <p>
252
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Casual, Family - Released: Apr 27, 2009 </p>
253
+ </div>
254
+ <div style="clear: both;"></div>
255
+ </a>
256
+ <a href="http://store.steampowered.com/app/20510/?snr=1_7_7_151_150_1" class="search_result_row even">
257
+ <div class="col search_price">$9.99</div>
258
+ <div class="col search_type">
259
+ <img src="./results_files/ico_type_app.gif">
260
+ </div>
261
+ <div class="col search_metascore">75</div>
262
+ <div class="col search_released">Sep 15, 2008</div>
263
+
264
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(14).jpg" alt="Buy S.T.A.L.K.E.R.: Clear Sky" width="120" height="45"></div>
265
+ <div class="col search_name">
266
+ <h4>S.T.A.L.K.E.R.: Clear Sky</h4>
267
+ <p>
268
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Action, RPG - Released: Sep 15, 2008 </p>
269
+ </div>
270
+ <div style="clear: both;"></div>
271
+ </a>
272
+ <a href="http://store.steampowered.com/app/40340/?snr=1_7_7_151_150_1" class="search_result_row odd">
273
+ <div class="col search_price">$9.99</div>
274
+ <div class="col search_type">
275
+ <img src="./results_files/ico_type_app.gif">
276
+ </div>
277
+ <div class="col search_metascore">64</div>
278
+ <div class="col search_released">Oct 29, 2009</div>
279
+
280
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(15).jpg" alt="Buy Secret Files 2: Puritas Cordis" width="120" height="45"></div>
281
+ <div class="col search_name">
282
+ <h4>Secret Files 2: Puritas Cordis</h4>
283
+ <p>
284
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Adventure - Released: Oct 29, 2009 </p>
285
+ </div>
286
+ <div style="clear: both;"></div>
287
+ </a>
288
+ <a href="http://store.steampowered.com/app/10650/?snr=1_7_7_151_150_1" class="search_result_row even">
289
+ <div class="col search_price">$19.99</div>
290
+ <div class="col search_type">
291
+ <img src="./results_files/ico_type_app.gif">
292
+ </div>
293
+ <div class="col search_metascore">42</div>
294
+ <div class="col search_released">Mar 25, 2009</div>
295
+
296
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(16).jpg" alt="Buy Stormrise" width="120" height="45"></div>
297
+ <div class="col search_name">
298
+ <h4>Stormrise</h4>
299
+ <p>
300
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Strategy - Released: Mar 25, 2009 </p>
301
+ </div>
302
+ <div style="clear: both;"></div>
303
+ </a>
304
+ <a href="http://store.steampowered.com/app/6040/?snr=1_7_7_151_150_1" class="search_result_row odd">
305
+ <div class="col search_price">$4.99</div>
306
+ <div class="col search_type">
307
+ <img src="./results_files/ico_type_app.gif">
308
+ </div>
309
+ <div class="col search_metascore"></div>
310
+ <div class="col search_released">Jul 8, 2009</div>
311
+
312
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(17).jpg" alt="Buy The Dig® " width="120" height="45"></div>
313
+ <div class="col search_name">
314
+ <h4>The Dig® </h4>
315
+ <p>
316
+ <img class="platform_img" title="Buy it once. Play it on Mac or PC." src="./results_files/platform_steamplay.png" width="123" height="22">Adventure - Released: Jul 8, 2009 </p>
317
+ </div>
318
+ <div style="clear: both;"></div>
319
+ </a>
320
+ <a href="http://store.steampowered.com/app/57680/?snr=1_7_7_151_150_1" class="search_result_row even">
321
+ <div class="col search_price">$39.99</div>
322
+ <div class="col search_type">
323
+ <img src="./results_files/ico_type_app.gif">
324
+ </div>
325
+ <div class="col search_metascore"></div>
326
+ <div class="col search_released">May 12, 2011</div>
327
+
328
+ <div class="col search_capsule"><img src="./results_files/capsule_sm_120(18).jpg" alt="Buy The First Templar - Steam Special Edition" width="120" height="45"></div>
329
+ <div class="col search_name">
330
+ <h4>The First Templar - Steam Special Edition</h4>
331
+ <p>
332
+ <img class="platform_img" src="./results_files/platform_win.png" width="22" height="22">Action, Adventure - Released: May 12, 2011 </p>
333
+ </div>
334
+ <div style="clear: both;"></div>
335
+ </a>
336
+
337
+ <!-- End List Items -->
338
+ </div>
339
+
340
+ <div class="search_pagination">
341
+ <div class="search_pagination_left">
342
+ showing 1 - 19 of 19 </div>
343
+ <div class="search_pagination_right">
344
+ Page:
345
+ 1
346
+ </div>
347
+ <div style="clear: both;"></div>
348
+ </div>
349
+
350
+
351
+ </body></html>
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "steam_prices/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "steam-prices"
7
+ s.version = SteamPrices::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["scott tesoriere"]
10
+ s.email = ["scott@tesoriere.com"]
11
+ s.homepage = "http://github.com/scottkf/steam_prices"
12
+ s.summary = "Prices for steam."
13
+
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_development_dependency "rspec", ">= 2.0.0.beta.12"
21
+ s.add_development_dependency "nokogiri"
22
+ s.add_development_dependency "money"
23
+ s.add_development_dependency "open-uri"
24
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: steam-prices
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ version: "0.1"
10
+ platform: ruby
11
+ authors:
12
+ - scott tesoriere
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-05-23 00:00:00 Z
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: rspec
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 62196475
28
+ segments:
29
+ - 2
30
+ - 0
31
+ - 0
32
+ - beta
33
+ - 12
34
+ version: 2.0.0.beta.12
35
+ type: :development
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: nokogiri
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: money
53
+ 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: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: open-uri
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :development
78
+ version_requirements: *id004
79
+ description:
80
+ email:
81
+ - scott@tesoriere.com
82
+ executables: []
83
+
84
+ extensions: []
85
+
86
+ extra_rdoc_files: []
87
+
88
+ files:
89
+ - README.md
90
+ - lib/steam_prices.rb
91
+ - lib/steam_prices/steam_country.rb
92
+ - lib/steam_prices/steam_game.rb
93
+ - lib/steam_prices/steam_updater.rb
94
+ - lib/steam_prices/version.rb
95
+ - spec/spec_helper.rb
96
+ - spec/steam_country_spec.rb
97
+ - spec/steam_game_spec.rb
98
+ - spec/steam_updater_spec.rb
99
+ - spec/support/us.html
100
+ - steam_prices.gemspec
101
+ homepage: http://github.com/scottkf/steam_prices
102
+ licenses: []
103
+
104
+ post_install_message:
105
+ rdoc_options: []
106
+
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 0
117
+ version: "0"
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ hash: 3
124
+ segments:
125
+ - 0
126
+ version: "0"
127
+ requirements: []
128
+
129
+ rubyforge_project:
130
+ rubygems_version: 1.7.2
131
+ signing_key:
132
+ specification_version: 3
133
+ summary: Prices for steam.
134
+ test_files:
135
+ - spec/spec_helper.rb
136
+ - spec/steam_country_spec.rb
137
+ - spec/steam_game_spec.rb
138
+ - spec/steam_updater_spec.rb
139
+ - spec/support/us.html