bnet_scraper 0.5.0 → 0.6.0
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/CHANGELOG.md +7 -0
- data/README.md +11 -0
- data/bnet_scraper.gemspec +1 -1
- data/lib/bnet_scraper/starcraft2.rb +2 -54
- data/lib/bnet_scraper/starcraft2/grandmaster_scraper.rb +49 -0
- data/lib/bnet_scraper/starcraft2/portrait.rb +82 -0
- data/lib/bnet_scraper/starcraft2/profile_scraper.rb +4 -23
- data/spec/starcraft2/grandmaster_scraper_spec.rb +42 -0
- data/spec/starcraft2/portrait_spec.rb +12 -0
- data/spec/starcraft2/profile_scraper_spec.rb +8 -2
- data/spec/support/fixtures/vcr_cassettes/grandmaster_na.yml +456 -0
- metadata +10 -3
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog!
|
2
2
|
|
3
|
+
## 0.6.0 (May 09 2013)
|
4
|
+
|
5
|
+
* Adds GrandmasterScraper to pull all grandmasters by region
|
6
|
+
* Updates Portrait names for anniversary
|
7
|
+
* Improves portait code
|
8
|
+
* Documentation updates
|
9
|
+
|
3
10
|
## 0.5.0 (Mar 29 2013)
|
4
11
|
|
5
12
|
* Adds Heart of the Swarm Portrait Names
|
data/README.md
CHANGED
@@ -168,6 +168,17 @@ BnetScraper::Starcraft2::Status.fetch # => [
|
|
168
168
|
]
|
169
169
|
```
|
170
170
|
|
171
|
+
## BnetScraper::Starcraft2::GrandmasterScraper
|
172
|
+
|
173
|
+
This pulls the list of 200 Grandmasters for a given region. Each player is returned as a hash.
|
174
|
+
|
175
|
+
``` ruby
|
176
|
+
scraper = BnetScraper::Starcraft2::GrandmasterScraper.new(region: :na)
|
177
|
+
players = scraper.scraper
|
178
|
+
players.size # => 200
|
179
|
+
players[0].keys # => [:rank, :name, :race, :points, :wins, :losses]
|
180
|
+
```
|
181
|
+
|
171
182
|
# Contribute!
|
172
183
|
|
173
184
|
I would love to see contributions! Please send a pull request with a feature branch containing specs
|
data/bnet_scraper.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "bnet_scraper"
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.6.0"
|
7
7
|
s.authors = ["Andrew Nordman"]
|
8
8
|
s.email = ["cadwallion@gmail.com"]
|
9
9
|
s.homepage = "https://github.com/agoragames/bnet_scraper/"
|
@@ -4,6 +4,7 @@ require 'bnet_scraper/starcraft2/league_scraper'
|
|
4
4
|
require 'bnet_scraper/starcraft2/achievement_scraper'
|
5
5
|
require 'bnet_scraper/starcraft2/match_history_scraper'
|
6
6
|
require 'bnet_scraper/starcraft2/status_scraper'
|
7
|
+
require 'bnet_scraper/starcraft2/grandmaster_scraper'
|
7
8
|
|
8
9
|
module BnetScraper
|
9
10
|
# This module contains everything about scraping Starcraft 2 Battle.net accounts.
|
@@ -27,60 +28,7 @@ module BnetScraper
|
|
27
28
|
'tw.battle.net' => 'fea'
|
28
29
|
}
|
29
30
|
|
30
|
-
|
31
|
-
# 6x6 grid. We'll simply use the portrait names, left to right, top to
|
32
|
-
# bottom.
|
33
|
-
#
|
34
|
-
# Note: I couldn't identify the exact names of some of these and instead of
|
35
|
-
# guessing, I didn't name them. Some appear in multiple files too, which
|
36
|
-
# is odd.
|
37
|
-
#
|
38
|
-
# I decided th pad the arrays even if there are no images to make various
|
39
|
-
# helping functionality (e.g. retrieving position for a name) easier.
|
40
|
-
# I've also kept them in 6x6 here for better overview.
|
41
|
-
|
42
|
-
PORTRAITS = [
|
43
|
-
[
|
44
|
-
'Kachinsky', 'Cade', 'Thatcher', 'Hall', 'Tiger Marine', 'Panda Marine',
|
45
|
-
'General Warfield', 'Jim Raynor', 'Arcturus Mengsk', 'Sarah Kerrigan', 'Kate Lockwell', 'Rory Swann',
|
46
|
-
'Egon Stetmann', 'Hill', 'Adjutant', 'Dr. Ariel Hanson', 'Gabriel Tosh', 'Matt Horner',
|
47
|
-
'Tychus Findlay', 'Zeratul', 'Valerian Mengsk', 'Spectre', 'Raynor Marine', 'Tauren Marine',
|
48
|
-
'Night Elf Banshee', 'Diablo Marine', 'SCV', 'Firebat', 'Vulture', 'Hellion',
|
49
|
-
'Medic', 'Spartan Company', 'Wraith', 'Diamondback', 'Probe', 'Scout'
|
50
|
-
],
|
51
|
-
[
|
52
|
-
'Tauren Marine', 'Night Elf Banshee', 'Diablo Marine', 'Worgen Marine', 'Goblin Marine', 'PanTerran Marine',
|
53
|
-
'Wizard Templar', 'Tyrael Marine', 'Witch Doctor Zergling', 'Stank', 'Night Elf Templar', 'Infested Orc',
|
54
|
-
'', 'Diablo Marine', '', 'Pandaren Firebat', 'Prince Valerian', 'Zagara',
|
55
|
-
'Lasarra', 'Dehaka', 'Infested Stukov', 'Mira Horner', 'Primal Queen', 'Izsha',
|
56
|
-
'Abathur', 'Ghost Kerrigan', 'Zurvan', 'Narud', '', '',
|
57
|
-
'', '', '', '', '', ''
|
58
|
-
],
|
59
|
-
[
|
60
|
-
'Ghost', 'Thor', 'Battlecruiser', 'Nova', 'Zealot', 'Stalker',
|
61
|
-
'Phoenix', 'Immortal', 'Void Ray', 'Colossus', 'Carrier', 'Tassadar',
|
62
|
-
'Reaper', 'Sentry', 'Overseer', 'Viking', 'High Templar', 'Mutalisk',
|
63
|
-
'Banshee', 'Hybrid Destroyer', 'Dark Voice', 'Urubu', 'Lyote', 'Automaton 2000',
|
64
|
-
'Orian', 'Wolf Marine', 'Murloc Marine', 'Worgen Marine', 'Goblin Marine', 'Zealot Chef',
|
65
|
-
'Stank', 'Ornatus', 'Facebook Corps Members', 'Lion Marines', 'Dragons', 'Raynor Marine'
|
66
|
-
],
|
67
|
-
[
|
68
|
-
'Urun', 'Nyon', 'Executor', 'Mohandar', 'Selendis', 'Artanis',
|
69
|
-
'Drone', 'Infested Colonist', 'Infested Marine', 'Corruptor', 'Aberration', 'Broodlord',
|
70
|
-
'Overmind', 'Leviathan', 'Overlord', 'Hydralisk Marine', "Zer'atai Dark Templar", 'Goliath',
|
71
|
-
'Lenassa Dark Templar', 'Mira Han', 'Archon', 'Hybrid Reaver', 'Predator', 'Unknown',
|
72
|
-
'Zergling', 'Roach', 'Baneling', 'Hydralisk', 'Queen', 'Infestor',
|
73
|
-
'Ultralisk', 'Queen of Blades', 'Marine', 'Marauder', 'Medivac', 'Siege Tank'
|
74
|
-
],
|
75
|
-
[
|
76
|
-
'Level 3 Zealot', 'Level 5 Stalker', 'Level 8 Sentinel', 'Level 11 Immortal', 'Level 14 Oracle', 'Level 17 High Templar',
|
77
|
-
'Level 21 Tempest', 'Level 23 Colossus', 'Level 27 Carrier', 'Level 29 Zeratul', 'Level 3 Marine', 'Level 5 Marauder',
|
78
|
-
'Level 8 Hellbat', 'Level 11 Widow Mine', 'Level 14 Medivac', 'Level 17 Banshee', 'Level 21 Ghost', 'Level 23 Thor',
|
79
|
-
'Level 27 Battlecruiser', 'Level 29 Raynor', 'Level 3 Zergling', 'Level 5 Roach', 'Level 8 Hydralisk', 'Level 11 Locust',
|
80
|
-
'Level 14 Swarm Host', 'Level 17 Infestor', 'Level 21 Viper', 'Level 23 Broodlord', 'Level 27 Ultralisk', 'Level 29 Kerrigan',
|
81
|
-
'Protoss Champion',' Terran Champion', 'Zerg Champion', '', '', ''
|
82
|
-
]
|
83
|
-
]
|
31
|
+
|
84
32
|
|
85
33
|
# This is a convenience method that chains calls to ProfileScraper,
|
86
34
|
# followed by a scrape of each league returned in the `leagues` array
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module BnetScraper
|
2
|
+
module Starcraft2
|
3
|
+
class GrandmasterScraper < BaseScraper
|
4
|
+
attr_reader :players
|
5
|
+
REGIONS = [:us, :eu, :kr, :tw, :sea]
|
6
|
+
|
7
|
+
def initialize options = {}
|
8
|
+
@players = []
|
9
|
+
if REGIONS.include? options[:region]
|
10
|
+
@url = "https://#{options[:region]}.battle.net/sc2/en/ladder/grandmaster/heart-of-the-swarm"
|
11
|
+
else
|
12
|
+
raise "Invalid Region #{options[:region]}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def scrape
|
17
|
+
html = retrieve_data
|
18
|
+
|
19
|
+
get_grandmasters html
|
20
|
+
|
21
|
+
@players
|
22
|
+
end
|
23
|
+
|
24
|
+
def retrieve_data
|
25
|
+
response = Faraday.get @url
|
26
|
+
|
27
|
+
if response.success?
|
28
|
+
Nokogiri::HTML(response.body)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_grandmasters html
|
33
|
+
html.css("#ladder tbody tr").each do |player_data|
|
34
|
+
player_cells = player_data.css("td[class='align-center']")
|
35
|
+
player = {
|
36
|
+
name: player_data.css("td a").inner_text.strip,
|
37
|
+
points: player_cells[2].inner_text,
|
38
|
+
wins: player_cells[3].inner_text,
|
39
|
+
losses: player_cells[4].inner_text,
|
40
|
+
race: player_data.css("td a").attr('class').value.sub('race-', ''),
|
41
|
+
rank: player_cells[1].inner_text.strip
|
42
|
+
}
|
43
|
+
|
44
|
+
@players << player
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module BnetScraper
|
2
|
+
module Starcraft2
|
3
|
+
# Portrait information pulled from the Armory. Portraits are 90-pixel jpgs that are either viewed as a single
|
4
|
+
# image or as part of a 6x6 spritesheet. There are several spritesheets with a few cells in the sheets not yet
|
5
|
+
# filled but will be in the future.
|
6
|
+
#
|
7
|
+
# The Profile page uses the spritesheet version of the Portrait with an X/Y background position. This is
|
8
|
+
# converted into sheet, column, and row, which allows us to know the name and map to the single image url as
|
9
|
+
# well.
|
10
|
+
class Portrait
|
11
|
+
# The armory uses spritemaps that are sequentially named and have a fixed
|
12
|
+
# 6x6 grid. We'll simply use the portrait names, left to right, top to
|
13
|
+
# bottom. The sheets are padded even when no portrait is present to account for the 36-image sheet
|
14
|
+
NAMES = [
|
15
|
+
# SPRITESHEET 1
|
16
|
+
'Kachinsky', 'Cade', 'Thatcher', 'Hall', 'Tiger Marine', 'Panda Marine',
|
17
|
+
'General Warfield', 'Jim Raynor', 'Arcturus Mengsk', 'Sarah Kerrigan', 'Kate Lockwell', 'Rory Swann',
|
18
|
+
'Egon Stetmann', 'Hill', 'Adjutant', 'Dr. Ariel Hanson', 'Gabriel Tosh', 'Matt Horner',
|
19
|
+
'Tychus Findlay', 'Zeratul', 'Valerian Mengsk', 'Spectre', 'Raynor Marine', 'Tauren Marine',
|
20
|
+
'Night Elf Banshee', 'Diablo Marine', 'SCV', 'Firebat', 'Vulture', 'Hellion',
|
21
|
+
'Medic', 'Spartan Company', 'Wraith', 'Diamondback', 'Probe', 'Scout',
|
22
|
+
# SPRITESHEET 2
|
23
|
+
'Tauren Marine', 'Night Elf Banshee', 'Diablo Marine', 'Worgen Marine', 'Goblin Marine', 'PanTerran Marine',
|
24
|
+
'Wizard Templar', 'Tyrael Marine', 'Witch Doctor Zergling', 'Stank', 'Night Elf Templar', 'Infested Orc',
|
25
|
+
'', 'Diablo Marine', '', 'Pandaren Firebat', 'Prince Valerian', 'Zagara',
|
26
|
+
'Lasarra', 'Dehaka', 'Infested Stukov', 'Mira Horner', 'Primal Queen', 'Izsha',
|
27
|
+
'Abathur', 'Ghost Kerrigan', 'Zurvan', 'Narud', '', '15 Year Terran',
|
28
|
+
'15 Year Protoss', '15 Year Zerg', '', '', '', '',
|
29
|
+
# SPRITESHEET 3
|
30
|
+
'Ghost', 'Thor', 'Battlecruiser', 'Nova', 'Zealot', 'Stalker',
|
31
|
+
'Phoenix', 'Immortal', 'Void Ray', 'Colossus', 'Carrier', 'Tassadar',
|
32
|
+
'Reaper', 'Sentry', 'Overseer', 'Viking', 'High Templar', 'Mutalisk',
|
33
|
+
'Banshee', 'Hybrid Destroyer', 'Dark Voice', 'Urubu', 'Lyote', 'Automaton 2000',
|
34
|
+
'Orian', 'Wolf Marine', 'Murloc Marine', 'Worgen Marine', 'Goblin Marine', 'Zealot Chef',
|
35
|
+
'Stank', 'Ornatus', 'Facebook Corps Members', 'Lion Marines', 'Dragons', 'Raynor Marine',
|
36
|
+
# SPRITESHEET 4
|
37
|
+
'Urun', 'Nyon', 'Executor', 'Mohandar', 'Selendis', 'Artanis',
|
38
|
+
'Drone', 'Infested Colonist', 'Infested Marine', 'Corruptor', 'Aberration', 'Broodlord',
|
39
|
+
'Overmind', 'Leviathan', 'Overlord', 'Hydralisk Marine', "Zer'atai Dark Templar", 'Goliath',
|
40
|
+
'Lenassa Dark Templar', 'Mira Han', 'Archon', 'Hybrid Reaver', 'Predator', 'Unknown',
|
41
|
+
'Zergling', 'Roach', 'Baneling', 'Hydralisk', 'Queen', 'Infestor',
|
42
|
+
'Ultralisk', 'Queen of Blades', 'Marine', 'Marauder', 'Medivac', 'Siege Tank',
|
43
|
+
# SPRITESHEET 5
|
44
|
+
'Level 3 Zealot', 'Level 5 Stalker', 'Level 8 Sentinel', 'Level 11 Immortal', 'Level 14 Oracle', 'Level 17 High Templar',
|
45
|
+
'Level 21 Tempest', 'Level 23 Colossus', 'Level 27 Carrier', 'Level 29 Zeratul', 'Level 3 Marine', 'Level 5 Marauder',
|
46
|
+
'Level 8 Hellbat', 'Level 11 Widow Mine', 'Level 14 Medivac', 'Level 17 Banshee', 'Level 21 Ghost', 'Level 23 Thor',
|
47
|
+
'Level 27 Battlecruiser', 'Level 29 Raynor', 'Level 11 Locust', 'Level 3 Zergling', 'Level 5 Roach', 'Level 8 Hydralisk',
|
48
|
+
'Level 14 Swarm Host', 'Level 17 Infestor', 'Level 21 Viper', 'Level 23 Broodlord', 'Level 27 Ultralisk', 'Level 29 Kerrigan',
|
49
|
+
'Protoss Champion',' Terran Champion', 'Zerg Champion', '', '', ''
|
50
|
+
]
|
51
|
+
attr_reader :name, :sheet, :row, :column
|
52
|
+
def initialize sheet, pixel_size, pixel_column, pixel_row
|
53
|
+
@sheet = sheet
|
54
|
+
@column = pixel_column / pixel_size
|
55
|
+
@row = pixel_row / pixel_size
|
56
|
+
@name = name_from_position
|
57
|
+
end
|
58
|
+
|
59
|
+
def name_from_position
|
60
|
+
index = (@sheet * 36) + image_position
|
61
|
+
NAMES[index]
|
62
|
+
end
|
63
|
+
|
64
|
+
# @return [String] The URL to the portrait image iteslf
|
65
|
+
def url
|
66
|
+
"http://media.blizzard.com/sc2/portraits/#{@sheet}-#{image_position}.jpg"
|
67
|
+
end
|
68
|
+
|
69
|
+
# @return [String] The URL to the spritesheet the portrait is part of
|
70
|
+
def spritesheet_url
|
71
|
+
"http://media.blizzard.com/sc2/portraits/#{@sheet}-90.jpg"
|
72
|
+
end
|
73
|
+
|
74
|
+
# The image position within a given 6x6 spritesheet
|
75
|
+
#
|
76
|
+
# @return [Fixnum] image position within the spritesheet
|
77
|
+
def image_position
|
78
|
+
(@row * 6) + @column
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'bnet_scraper/starcraft2/profile'
|
2
|
+
require 'bnet_scraper/starcraft2/portrait'
|
2
3
|
|
3
4
|
module BnetScraper
|
4
5
|
module Starcraft2
|
@@ -82,15 +83,9 @@ module BnetScraper
|
|
82
83
|
# is the position within the spritesheet
|
83
84
|
#
|
84
85
|
# @param [Nokogiri::XML] html node
|
85
|
-
# @return [
|
86
|
+
# @return [BnetScraper::Starcraft2::Portrait] Portrait containing spritesheet information
|
86
87
|
def get_portrait html
|
87
|
-
@profile.portrait =
|
88
|
-
portrait_info = extract_portrait_info html
|
89
|
-
position = get_portrait_position html, portrait_info
|
90
|
-
PORTRAITS[portrait_info[0].to_i][position-1]
|
91
|
-
rescue
|
92
|
-
nil
|
93
|
-
end
|
88
|
+
@profile.portrait = Portrait.new(*extract_portrait_info(html))
|
94
89
|
end
|
95
90
|
|
96
91
|
# Extracts portrait information (spritesheet page, portsize size, X, Y) from HTML page
|
@@ -98,21 +93,7 @@ module BnetScraper
|
|
98
93
|
# @param [Nokogiri::XML] html node
|
99
94
|
# @return [Fixnum, Fixnum, Fixnum, Fixnum] Array of sprite information
|
100
95
|
def extract_portrait_info html
|
101
|
-
html.css("#portrait .icon-frame").attr('style').to_s.scan(/url\('.+(\d+)-(\d+)\.jpg'\) (
|
102
|
-
end
|
103
|
-
|
104
|
-
# Translates x/y positions of the background spritesheet into an array index. There are
|
105
|
-
# 6 pictures per row, but X/Y is in pixels, so account for portrait size in the incrementor
|
106
|
-
#
|
107
|
-
# @param [Nokogiri::HTML] html node
|
108
|
-
# @param [Fixnum] size of portrait in pixels
|
109
|
-
# @return [Fixnum] index position of portrait spritesheet
|
110
|
-
def get_portrait_position html, portrait_info
|
111
|
-
size = portrait_info[1].to_i
|
112
|
-
x = portrait_info[2].to_i
|
113
|
-
y = portrait_info[3].to_i
|
114
|
-
|
115
|
-
((-y/size) * 6) + (-x/size + 1)
|
96
|
+
html.css("#portrait .icon-frame").attr('style').to_s.scan(/url\('.+(\d+)-(\d+)\.jpg'\) -{0,1}(\d+)px -{0,1}(\d+)px/).flatten.map(&:to_i)
|
116
97
|
end
|
117
98
|
|
118
99
|
# Extracts the current and highest ever solo league achieved
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BnetScraper::Starcraft2::GrandmasterScraper do
|
4
|
+
describe '#scrape' do
|
5
|
+
let(:scraper) { BnetScraper::Starcraft2::GrandmasterScraper.new(region: :us) }
|
6
|
+
subject { scraper }
|
7
|
+
before do
|
8
|
+
VCR.use_cassette('grandmaster_na', record: :new_episodes) do
|
9
|
+
scraper.scrape
|
10
|
+
end
|
11
|
+
end
|
12
|
+
it { should have(200).players }
|
13
|
+
|
14
|
+
context 'player statistics' do
|
15
|
+
let(:player) { scraper.players[0] }
|
16
|
+
|
17
|
+
it 'should have rank 1' do
|
18
|
+
player[:rank].should == '1st'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should have a race' do
|
22
|
+
player[:race].should == 'zerg'
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should have a name' do
|
26
|
+
player[:name].should == '[Qntc] QuanticHyuN'
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should have points' do
|
30
|
+
player[:points].should == '953'
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should have wins' do
|
34
|
+
player[:wins].should == '71'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should have losses' do
|
38
|
+
player[:losses].should == '11'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BnetScraper::Starcraft2::Portrait do
|
4
|
+
subject { BnetScraper::Starcraft2::Portrait.new(3, 90, 360, 0) }
|
5
|
+
its(:name) { should == 'Selendis' }
|
6
|
+
its(:sheet) { should == 3 }
|
7
|
+
its(:row) { should == 0 }
|
8
|
+
its(:column) { should == 4 }
|
9
|
+
its(:image_position) { should == 4 }
|
10
|
+
its(:url) { should == 'http://media.blizzard.com/sc2/portraits/3-4.jpg' }
|
11
|
+
its(:spritesheet_url) { should == 'http://media.blizzard.com/sc2/portraits/3-90.jpg' }
|
12
|
+
end
|
@@ -9,12 +9,14 @@ describe BnetScraper::Starcraft2::ProfileScraper do
|
|
9
9
|
let(:scraper) { BnetScraper::Starcraft2::ProfileScraper.new(bnet_id: '2377239', account: 'Demon') }
|
10
10
|
|
11
11
|
describe '#scrape' do
|
12
|
-
|
12
|
+
let(:output) do
|
13
13
|
VCR.use_cassette('demon_profile', record: :new_episodes) do
|
14
14
|
scraper.scrape
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
+
subject { output }
|
19
|
+
|
18
20
|
its(:achievement_points) { should == '4890' }
|
19
21
|
its(:current_solo_league) { should == 'None' }
|
20
22
|
its(:highest_solo_league) { should == 'Platinum' }
|
@@ -22,11 +24,15 @@ describe BnetScraper::Starcraft2::ProfileScraper do
|
|
22
24
|
its(:highest_team_league) { should == 'Master' }
|
23
25
|
its(:career_games) { should == '1804' }
|
24
26
|
its(:games_this_season) { should == '27' }
|
25
|
-
its(:portrait) { should == 'Mohandar' }
|
26
27
|
its(:terran_swarm_level) { should == 0 }
|
27
28
|
its(:protoss_swarm_level) { should == 12 }
|
28
29
|
its(:zerg_swarm_level) { should == 0 }
|
29
30
|
|
31
|
+
it 'should have a scraped portrait' do
|
32
|
+
output.portrait.name.should == 'Mohandar'
|
33
|
+
output.portrait.url.should == 'http://media.blizzard.com/sc2/portraits/3-3.jpg'
|
34
|
+
end
|
35
|
+
|
30
36
|
context 'first league ever' do
|
31
37
|
let(:scraper) { BnetScraper::Starcraft2::ProfileScraper.new url: 'http://us.battle.net/sc2/en/profile/3513522/1/Heritic/' }
|
32
38
|
|
@@ -0,0 +1,456 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://us.battle.net/sc2/en/ladder/grandmaster/heart-of-the-swarm
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
user-agent:
|
11
|
+
- Faraday v0.8.7
|
12
|
+
accept-encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
accept:
|
15
|
+
- ! '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
date:
|
22
|
+
- Fri, 10 May 2013 04:17:31 GMT
|
23
|
+
server:
|
24
|
+
- Apache
|
25
|
+
x-frame-options:
|
26
|
+
- SAMEORIGIN
|
27
|
+
set-cookie:
|
28
|
+
- perm=1; Domain=battle.net; Path=/
|
29
|
+
content-language:
|
30
|
+
- en-US
|
31
|
+
vary:
|
32
|
+
- Accept-Encoding
|
33
|
+
content-encoding:
|
34
|
+
- gzip
|
35
|
+
connection:
|
36
|
+
- close
|
37
|
+
transfer-encoding:
|
38
|
+
- chunked
|
39
|
+
content-type:
|
40
|
+
- application/xhtml+xml;charset=UTF-8
|
41
|
+
body:
|
42
|
+
encoding: ASCII-8BIT
|
43
|
+
string: !binary |-
|
44
|
+
H4sIAAAAAAAAA+y963LbSLIu+rsnYt4BzV6xZZ/dvOBKwm55QpZsWW3Jdlty
|
45
|
+
d093MDpAskTCAgEOAOri2R2xf5yXOP9W7B874sSJ2A8xj7Ke5GRWFcgCRckp
|
46
|
+
lewlCKtnLYu4fVko5FeZWVmXHyb5NDLOp1GcbTYmeT570m6fnZ21zuxWko7b
|
47
|
+
pu/77XO8p4E3PYmCeLzZYHFznjWMYRRkWXH07K9/+WHCgpHAepKMF3DJeNaa
|
48
|
+
snacfdeQF48Hly+2jwffcZA8zCP2bDcN4tE0yHKWGvssGM+Z0TR2gykzdufh
|
49
|
+
CA8O8yDdToPj3Njb+6EtnoLHpywPjGES5yzONxvHQZSxhoHCmuwf8/B0sxFO
|
50
|
+
gzHLkyQaBGnDaF9+Zu/FJhuN2ffDSZpM2aZZfvzX5oet5nYynQV5OIiYRIjC
|
51
|
+
+MRIWbTZyCZJmg/nuRECIDyasuPNRjsbWu0sh0eG7SgZBlFzmEynSdzmhYF3
|
52
|
+
D07x9gzva8GvhpFfzJgsa/u8ybFWBbEgHU6KO4PZLAqHIABAkxmLxdURy4Zp
|
53
|
+
OMOz//0cv6Eojqz7edYaBDnUWytmeZt/xvYoyAMFAOCxYjcbzxc3Gofyymp5
|
54
|
+
8ouIZRPG8qJMOTvP28MMNGXKRmEAhYyiz9YI3N8WP1vw82+njislfdts/h4e
|
55
|
+
G3sv+s+MLym2GbJVyb+zeBQe95vNUjkM78uXxCMWpfvli9K9tihcttSVBTP/
|
56
|
+
9X/+9e97e8DVN+wsK0ljcfuYsVE75hcuq3CQJ1Ohsfx9ggjagTjI2SUS3PpF
|
57
|
+
8d2QbfylLPcO1RmRo2A0Yqn8syLjzhVZvspCca2vprhLyR5R9J0p6lJ091rR
|
58
|
+
ogFUwT8Gp4E42zCydHiN/n/M2vkkTEfNWZDmF+2P/5iz9KL1UbDg2Q9tgXIH
|
59
|
+
UoZJyr4ELpq5PJythV5Rh2slwf3tNlTs9s7W0dbvf/1Lnl4Y/zRGyXA+BZPZ
|
60
|
+
YudsCCZxCib70cbzYHgyTpN5PNpD67UdDCds43uDW+LvjTyds8fGnwbwfDh5
|
61
|
+
BD//+Sdi9/tYJLV09I+4WrhtrExRIR/SyNg0NpQq2nha3DAJUjY6LG4r31Wq
|
62
|
+
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
|
453
|
+
8tpypZMf2tjP/uz/FwAAAP//AwDOa6eLf9ACAA==
|
454
|
+
http_version: '1.1'
|
455
|
+
recorded_at: Fri, 10 May 2013 04:17:31 GMT
|
456
|
+
recorded_with: VCR 2.4.0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bnet_scraper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -146,19 +146,23 @@ files:
|
|
146
146
|
- lib/bnet_scraper/starcraft2/achievement.rb
|
147
147
|
- lib/bnet_scraper/starcraft2/achievement_scraper.rb
|
148
148
|
- lib/bnet_scraper/starcraft2/base_scraper.rb
|
149
|
+
- lib/bnet_scraper/starcraft2/grandmaster_scraper.rb
|
149
150
|
- lib/bnet_scraper/starcraft2/league.rb
|
150
151
|
- lib/bnet_scraper/starcraft2/league_scraper.rb
|
151
152
|
- lib/bnet_scraper/starcraft2/match.rb
|
152
153
|
- lib/bnet_scraper/starcraft2/match_history_scraper.rb
|
154
|
+
- lib/bnet_scraper/starcraft2/portrait.rb
|
153
155
|
- lib/bnet_scraper/starcraft2/profile.rb
|
154
156
|
- lib/bnet_scraper/starcraft2/profile_scraper.rb
|
155
157
|
- lib/bnet_scraper/starcraft2/status_scraper.rb
|
156
158
|
- spec/spec_helper.rb
|
157
159
|
- spec/starcraft2/achievement_scraper_spec.rb
|
158
160
|
- spec/starcraft2/base_scraper_spec.rb
|
161
|
+
- spec/starcraft2/grandmaster_scraper_spec.rb
|
159
162
|
- spec/starcraft2/league_scraper_spec.rb
|
160
163
|
- spec/starcraft2/league_spec.rb
|
161
164
|
- spec/starcraft2/match_history_scraper_spec.rb
|
165
|
+
- spec/starcraft2/portrait_spec.rb
|
162
166
|
- spec/starcraft2/profile_scraper_spec.rb
|
163
167
|
- spec/starcraft2/profile_spec.rb
|
164
168
|
- spec/starcraft2/status_scraper_spec.rb
|
@@ -170,6 +174,7 @@ files:
|
|
170
174
|
- spec/support/fixtures/vcr_cassettes/demon_profile.yml
|
171
175
|
- spec/support/fixtures/vcr_cassettes/demon_profile_leagues.yml
|
172
176
|
- spec/support/fixtures/vcr_cassettes/full_demon_scrape.yml
|
177
|
+
- spec/support/fixtures/vcr_cassettes/grandmaster_na.yml
|
173
178
|
- spec/support/fixtures/vcr_cassettes/invalid_achievement.yml
|
174
179
|
- spec/support/fixtures/vcr_cassettes/invalid_leagues.yml
|
175
180
|
- spec/support/fixtures/vcr_cassettes/invalid_matches.yml
|
@@ -207,9 +212,11 @@ test_files:
|
|
207
212
|
- spec/spec_helper.rb
|
208
213
|
- spec/starcraft2/achievement_scraper_spec.rb
|
209
214
|
- spec/starcraft2/base_scraper_spec.rb
|
215
|
+
- spec/starcraft2/grandmaster_scraper_spec.rb
|
210
216
|
- spec/starcraft2/league_scraper_spec.rb
|
211
217
|
- spec/starcraft2/league_spec.rb
|
212
218
|
- spec/starcraft2/match_history_scraper_spec.rb
|
219
|
+
- spec/starcraft2/portrait_spec.rb
|
213
220
|
- spec/starcraft2/profile_scraper_spec.rb
|
214
221
|
- spec/starcraft2/profile_spec.rb
|
215
222
|
- spec/starcraft2/status_scraper_spec.rb
|
@@ -221,6 +228,7 @@ test_files:
|
|
221
228
|
- spec/support/fixtures/vcr_cassettes/demon_profile.yml
|
222
229
|
- spec/support/fixtures/vcr_cassettes/demon_profile_leagues.yml
|
223
230
|
- spec/support/fixtures/vcr_cassettes/full_demon_scrape.yml
|
231
|
+
- spec/support/fixtures/vcr_cassettes/grandmaster_na.yml
|
224
232
|
- spec/support/fixtures/vcr_cassettes/invalid_achievement.yml
|
225
233
|
- spec/support/fixtures/vcr_cassettes/invalid_leagues.yml
|
226
234
|
- spec/support/fixtures/vcr_cassettes/invalid_matches.yml
|
@@ -230,4 +238,3 @@ test_files:
|
|
230
238
|
- spec/support/fixtures/vcr_cassettes/profile_not_laddered.yml
|
231
239
|
- spec/support/fixtures/vcr_cassettes/realm_status.yml
|
232
240
|
- spec/support/shared/sc2_scraper.rb
|
233
|
-
has_rdoc:
|