steam-store-parser 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d78459c41fafe6531ba48996a1f4f012cfb2b7b4
4
- data.tar.gz: ab2c13d7e1c6da0802aef73d4a6560f0db96a3c6
3
+ metadata.gz: e77b628868a3bf491a989d578f999d967657f5dc
4
+ data.tar.gz: 65c802d3803a33bbced97c6d6090ae88cbb0ac22
5
5
  SHA512:
6
- metadata.gz: 088d36eb03dcc005d37811202298efc2f85120e1d7a50a985c67dc5d57f5f2ed58d0ced56c2fae3ca49e716829c86fb2deb6fcbd2ec8156739ba64536482a6fe
7
- data.tar.gz: d24023d66105519b603e7e2361349bb1c92edf434a041a834029a8d6e8101946609ea4c1b8d546d321d89d21e265bd08c4d7a772748f56774bdef5767ae5a45a
6
+ metadata.gz: f44672d166b0f51e8bcf528e75097a083fd0a1c6f40ccbb68c1a9cb41b13a95f4cc1515881b9d75de04778943682b91e3820881a1ce79b4f3b3560db8f0233fc
7
+ data.tar.gz: 028180cc84883e22e2fe29f0d8dc2a4ec307340bcc691a37dbb4b9ff30b0d07319f506b663760caff7b96e35690172bfa769704e6c2839a225a3c7386f516f55
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- steam-store-parser (0.1.1)
4
+ steam-store-parser (0.1.2)
5
5
  nokogiri (~> 1.6)
6
6
  rest-client (~> 1.8)
7
7
 
@@ -17,15 +17,9 @@ GEM
17
17
  mime-types (2.5)
18
18
  mini_portile (0.6.2)
19
19
  netrc (0.10.3)
20
- nokogiri (1.6.6.2)
21
- mini_portile (~> 0.6.0)
22
20
  nokogiri (1.6.6.2-x64-mingw32)
23
21
  mini_portile (~> 0.6.0)
24
22
  rake (10.4.2)
25
- rest-client (1.8.0)
26
- http-cookie (>= 1.0.2, < 2.0)
27
- mime-types (>= 1.16, < 3.0)
28
- netrc (~> 0.7)
29
23
  rest-client (1.8.0-x64-mingw32)
30
24
  ffi (~> 1.9)
31
25
  http-cookie (>= 1.0.2, < 2.0)
@@ -46,7 +40,6 @@ GEM
46
40
  rspec-support (3.2.2)
47
41
  unf (0.1.4)
48
42
  unf_ext
49
- unf_ext (0.0.7.1)
50
43
  unf_ext (0.0.7.1-x64-mingw32)
51
44
 
52
45
  PLATFORMS
@@ -0,0 +1,47 @@
1
+ module SteamStoreParser
2
+ class BaseClient
3
+
4
+ BASE_URL = 'http://store.steampowered.com/search/?'
5
+ GAMES_ONLY = '&category1=998' # to filter games only
6
+
7
+ def initialize(params)
8
+ raise ArgumentError unless params.is_a? Hash
9
+ @url = build_url(params)
10
+ end
11
+
12
+ # @return [String] Webpage
13
+ def page(page)
14
+ RestClient.get "#{@url}&page=#{page}"
15
+ end
16
+
17
+ # @return [String] the HTML source of the page
18
+ def home_page
19
+ page(1)
20
+ end
21
+
22
+ private
23
+ def build_url(params)
24
+ url = "#{BASE_URL}"
25
+ params.each { |key, value| params[key] = [value] unless value.is_a? Array }
26
+
27
+ if params.has_key? :tags
28
+ tags = params[:tags].map! {|tag| Parameters::TAGS.fetch(tag)}
29
+ url << "tags=#{tags.join(',')}&"
30
+ end
31
+ if params.has_key? :os
32
+ os = params[:os].map! {|os| Parameters::OS.fetch(os)}
33
+ url << "os=#{os.join(',')}&"
34
+ end
35
+ if params.has_key? :player_amount
36
+ player_amount = params[:player_amount].map! {|pa| Parameters::PLAYER_AMOUNT.fetch(pa)}
37
+ url << "category3=#{player_amount.join(',')}"
38
+ end
39
+
40
+ url << GAMES_ONLY
41
+
42
+ url
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -0,0 +1,8 @@
1
+ module SteamStoreParser
2
+ # TODO : write errors
3
+
4
+ class TooManyTagsError < StandardError; end
5
+ class LabelDoesntExistError < StandardError; end
6
+
7
+
8
+ end
@@ -0,0 +1,13 @@
1
+ module SteamStoreParser
2
+ class Game
3
+ attr_reader :title
4
+ attr_reader :steamapp_id
5
+
6
+ def initialize(title, steamapp_id)
7
+ @title = title
8
+ @steamapp_id = steamapp_id
9
+ end
10
+
11
+ end
12
+ end
13
+
@@ -0,0 +1,43 @@
1
+ module SteamStoreParser
2
+
3
+ # TODO : add more tags
4
+ module Parameters
5
+
6
+ TAGS = {
7
+ action: 19,
8
+ indie: 492,
9
+ adventure: 21,
10
+ strategy: 9,
11
+ rpg: 122,
12
+ simulation: 599,
13
+ casual: 597,
14
+ free_to_play: 113,
15
+ singleplayer: 4182,
16
+ mmo: 128,
17
+ multiplayer: 3859,
18
+ racing: 699,
19
+ sports: 701,
20
+ coop: 1685,
21
+ atmospheric: 4166,
22
+ open_world: 1695,
23
+ puzzle: 1664,
24
+ fps: 1663,
25
+ platformer: 1625
26
+ }
27
+
28
+ PLAYER_AMOUNT = {
29
+ singleplayer: 2,
30
+ multiplayer: 1,
31
+ crossplatform_multiplayer: 27,
32
+ coop: 9,
33
+ local_coop: 24
34
+ }
35
+
36
+ OS = {
37
+ windows: 'win',
38
+ mac: 'mac',
39
+ linux: 'linux'
40
+ }
41
+
42
+ end
43
+ end
@@ -0,0 +1,32 @@
1
+ module SteamStoreParser
2
+ class Parser
3
+
4
+ PAGE_AMOUNT_CSS = '.search_pagination_right a'
5
+ CONTAINER_CSS = '#search_result_container div'
6
+
7
+ def initialize(params)
8
+ @base_client = BaseClient.new(params)
9
+ end
10
+
11
+ def games
12
+ @pages_nb = page_amount
13
+ parse_games
14
+ end
15
+
16
+ private
17
+ def page_amount
18
+ home_page = Nokogiri::HTML(@base_client.home_page)
19
+ home_page.css(PAGE_AMOUNT_CSS)[2].text.to_i
20
+ end
21
+
22
+ def parse_games
23
+ @pages_nb.times.flat_map do |page_nb|
24
+ page = Nokogiri::HTML(@base_client.page(page_nb))
25
+ page.css(CONTAINER_CSS)[1].css('a').map do |item|
26
+ Game.new(item.css('.title').text, item['data-ds-appid'])
27
+ end
28
+ end
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,3 @@
1
+ module SteamStoreParser
2
+ VERSION = "0.1.3"
3
+ end
@@ -14,6 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = FileList['lib/*.rb',
17
+ 'lib/steam-store-parser/*.rb',
17
18
  'bin/*',
18
19
  '[A-Z]*',
19
20
  'test/*'].to_a
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steam-store-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Viale
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-24 00:00:00.000000000 Z
11
+ date: 2015-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -92,8 +92,15 @@ files:
92
92
  - README.md
93
93
  - Rakefile
94
94
  - lib/steam-store-parser.rb
95
+ - lib/steam-store-parser/base-client.rb
96
+ - lib/steam-store-parser/error.rb
97
+ - lib/steam-store-parser/game.rb
98
+ - lib/steam-store-parser/parameters.rb
99
+ - lib/steam-store-parser/parser.rb
100
+ - lib/steam-store-parser/version.rb
95
101
  - steam-store-parser-0.1.0.gem
96
102
  - steam-store-parser-0.1.1.gem
103
+ - steam-store-parser-0.1.2.gem
97
104
  - steam-store-parser.gemspec
98
105
  homepage: https://github.com/Koroeskohr/steam-store-parser
99
106
  licenses: