steam-store-parser 0.1.2 → 0.1.3

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.
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: