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