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 +4 -4
- data/Gemfile.lock +1 -8
- data/lib/steam-store-parser/base-client.rb +47 -0
- data/lib/steam-store-parser/error.rb +8 -0
- data/lib/steam-store-parser/game.rb +13 -0
- data/lib/steam-store-parser/parameters.rb +43 -0
- data/lib/steam-store-parser/parser.rb +32 -0
- data/lib/steam-store-parser/version.rb +3 -0
- data/steam-store-parser-0.1.2.gem +0 -0
- data/steam-store-parser.gemspec +1 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e77b628868a3bf491a989d578f999d967657f5dc
|
4
|
+
data.tar.gz: 65c802d3803a33bbced97c6d6090ae88cbb0ac22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f44672d166b0f51e8bcf528e75097a083fd0a1c6f40ccbb68c1a9cb41b13a95f4cc1515881b9d75de04778943682b91e3820881a1ce79b4f3b3560db8f0233fc
|
7
|
+
data.tar.gz: 028180cc84883e22e2fe29f0d8dc2a4ec307340bcc691a37dbb4b9ff30b0d07319f506b663760caff7b96e35690172bfa769704e6c2839a225a3c7386f516f55
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
steam-store-parser (0.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,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
|
Binary file
|
data/steam-store-parser.gemspec
CHANGED
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.
|
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
|
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:
|