Class: GGXrd::Frames
- Inherits:
-
Object
- Object
- GGXrd::Frames
- Defined in:
- lib/ggxrd/frames.rb,
lib/ggxrd/frames/error.rb,
lib/ggxrd/frames/column.rb,
lib/ggxrd/frames/version.rb,
lib/ggxrd/frames/characters.rb
Defined Under Namespace
Classes: ScrapingError
Constant Summary collapse
- COLUMN =
[ 'name', 'damage', 'tension', 'attack_lv', 'risc_lv', 'prorate', 'attribute', 'startup', 'active', 'recovery', 'frame_adv', 'invincibility', 'remarks', ]
- VERSION =
"0.1.0"
- CHARACTERS =
{ :SO => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_1 table'}, :SO_DI => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_2 table'}, :KY => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_3 table'}, :MA => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_4 table'}, :MI => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_5 table'}, :ZT => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_6 table'}, :PO => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_7 table'}, :CH => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_8 table'}, :FA => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_9 table'}, :AX => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_10 table'}, :VE => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_11 table'}, :SL => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_12 table'}, :IN => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_13 table'}, :BE => {url: 'http://www.4gamer.net/guide/ggxrd/031723018/', selector: 'div#table_result_14 table'}, :RA => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_15 table'}, :SI => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_16 table'}, :EL => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_17 table'}, :LE => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_18 table'}, :JO => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_19 table'}, :JC => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_20 table'}, :JA => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_21 table'}, :RV => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_22 table'}, :KU => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_23 table'}, :DI => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_24 table'}, :BA => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_25 table'}, :AS => {url: 'http://www.4gamer.net/guide/ggxrd/031723052/', selector: 'div#table_result_26 table'}, }
Instance Method Summary collapse
Instance Method Details
#frame_of(character) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/ggxrd/frames.rb', line 9 def frame_of (character) raise ArgumentError.new('The argument must be a String or a Symbol') unless character.is_a?(String) || character.is_a?(Symbol) character = character.to_sym raise ArgumentError.new('The argument must be an abbrev of a character name, like "SO", "KY", ...') unless GGXrd::Frames::CHARACTERS[character] url = GGXrd::Frames::CHARACTERS[character][:url] res = Mechanize.new.get(url) # scraping table = res.at(GGXrd::Frames::CHARACTERS[character][:selector]) raise GGXrd::Frames::ScrapingError.new('Frame data is "Download Complete", but failed to scrape it') unless table data = ( table.search('tr').to_a.map do |row| row.search('td').to_a.map do |el| (el.at('img') ? el.at('img').attribute('alt') : '').to_s + el.content.strip end end ) # screening data.select! {|row| row != []} # convert to hash data.map do |row| Hash[*([GGXrd::Frames::COLUMN, row].transpose.flatten)] end end |