vegas_insider_scraper 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 89031700cd6bec519bb2a1841530ccf2f4e958e000de5f024bb88aa41f443177
4
- data.tar.gz: 42b5277aaec3c8892ae3b183817423ab40ed11b8c32eccec3280f5af7029043b
3
+ metadata.gz: 0d913d3440b91317653dc9fd161e9b9a5474cc7dfd80012682c74c9f6a2bb9e6
4
+ data.tar.gz: 43b029b0436db2dcf18bf472cf9784521b5546b8aaf383ab4a10b9fa2c36d618
5
5
  SHA512:
6
- metadata.gz: 2e7e9a97da1085b1dbc41960bb2d8dfdafa6aaa52a8acd92025b6710f105490d80bb2b9b11b1a23a15d8f73f5719e89946627c37068959cc9e8b1f940a6810de
7
- data.tar.gz: 2517e5e4149b16d7b235eb04065ff03214ff6244a5c681f82d3bad3214dd4563a1f35b5c142a08c6ebf3fc4588900cb0946ea64edcbce39bcd853682d9207994
6
+ metadata.gz: 120c346e644548e23676daa0f4a264a75bcf9a12396e1510272239f96a4da832f41f2e8b460b5d2bb65cfa8eba944a7eaeee21c6e0251d4a6fdd31a38418c755
7
+ data.tar.gz: a2ed206492830f2b4e11ba348ef443ea5f608efa719a4764e0b06b2dfcb30d29a4cd170bc3690f8bedff769a1c33dab016cbc9f15a9f575907bcd95ecf3bb2a9
@@ -630,6 +630,8 @@ class ScraperLeague
630
630
  ODDS = /(<br><br>(?<home_line>-\d+(\.5)?))|(<br>(?<away_line>-\d+(\.5)?)[+-]\d\d<br>)|
631
631
  ((?<over_under>\d+(\.5)?)[ou]((-\d{2})|EV)(?<home_line>-\d+(.5)?)-\d\d\z)|
632
632
  ((?<away_line>-\d+(.5)?)-\d\d(?<over_under>\d+(\.5)?)[ou]((-\d{2})|EV)\z)/x
633
+ SOCCER_ODDS = /(?<away_line>(-|\+)?((-0)|(\d|\.)+))(((\+|-)\d\d)|(EV))(?<home_line>(-|\+)?((-0)|(\d|\.)+))(((\+|-)\d\d)|(EV))/
634
+ SOCCER_MONEYLINE_ODDS = /(?<away_moneyline>(-|\+)\d+)(?<home_moneyline>(-|\+)\d+)(?<draw>(-|\+)\d+)(?<over_under>\d((\.5)|(\.25)|(\.75))?)(o|u).\d\d/
633
635
  RUNLINE_ODDS = /(?<away_line>(\+|-)\d+(\.5)?)\/(\+|-)\d{3}(?<home_line>(\+|-)\d+(\.5)?)\/(\+|-)\d{3}/
634
636
  MONEYLINE_ODDS = /((?<over_under>\d+(\.5)?)[ou]-\d{2})?(?<away_moneyline>(\+|-)\d{3}\d*)(?<home_moneyline>(\+|-)\d{3}\d*)/
635
637
 
@@ -642,7 +644,8 @@ class ScraperLeague
642
644
 
643
645
  class Game
644
646
  attr_reader :time, :away_team, :home_team, :vegas_info,
645
- :ending, :winning_team, :winning_score, :losing_score, :ats_winner, :over_under_result, :doubleheader, :notes
647
+ :ending, :winning_team, :winning_score, :losing_score,
648
+ :ats_winner, :over_under_result, :doubleheader, :notes
646
649
 
647
650
  def initialize(args = {})
648
651
  Game.sanitize(args).map { |attribute, value| instance_variable_set("@#{attribute}", value) }
@@ -682,7 +685,8 @@ class ScraperLeague
682
685
  private
683
686
  def self.sanitize(args)
684
687
  permitted_keys = [:time, :away_team, :home_team, :vegas_info,
685
- :ending, :winning_team, :winning_score, :losing_score, :ats_winner, :over_under_result, :doubleheader, :notes]
688
+ :ending, :winning_team, :winning_score, :losing_score,
689
+ :ats_winner, :over_under_result, :doubleheader, :notes]
686
690
  args.select { |key,_| permitted_keys.include? key }
687
691
  end
688
692
  end
@@ -0,0 +1,89 @@
1
+
2
+ class Soccer < ScraperLeague
3
+ def initialize
4
+ @sport_id = 9
5
+ @sport_name = :soccer
6
+ super
7
+ @moneyline_sport = true
8
+ end
9
+
10
+ def current_games
11
+ @current_games ||= get_lines([
12
+ "http://www.vegasinsider.com/#{sport_name}/odds/las-vegas/spread",
13
+ "http://www.vegasinsider.com/#{sport_name}/odds/las-vegas/"
14
+ ])
15
+ end
16
+
17
+ def teams
18
+ []
19
+ end
20
+
21
+ def standings
22
+ []
23
+ end
24
+
25
+ def team_schedules
26
+ []
27
+ end
28
+
29
+ def live_scores
30
+ []
31
+ end
32
+
33
+ private
34
+
35
+ def get_lines(urls)
36
+ games = []
37
+
38
+ urls.each { |url|
39
+ is_first_url = games.empty?
40
+ doc = Nokogiri::HTML(open(url))
41
+ doc.css('.viBodyBorderNorm .frodds-data-tbl tr').each do |game_row|
42
+ game_cell = game_row.at_css('td:first-child')
43
+ teams = game_cell_parser(game_cell)
44
+ game = Game.new(home_team: teams[1], away_team: teams[0])
45
+
46
+ if game.teams_found?
47
+ game.update(time: get_game_time(game_cell))
48
+ game.update(doubleheader: doubleheader_id(game_row.next&.next&.at_css('td:first-child')&.content))
49
+ is_first_url ? (games.push game) : (game = game.find_equal(games))
50
+ game.update(vegas_info: get_line(get_odds(game_row)))
51
+
52
+ elsif is_first_url
53
+ last_game = games.last
54
+ if last_game then last_game.update(notes: (last_game.notes ? "#{last_game.notes} / " : '') + game_cell.content) end
55
+ end
56
+ end
57
+ }
58
+ games
59
+ end
60
+
61
+ def game_cell_parser(cell)
62
+ cell.css('b').map(&:content)
63
+ end
64
+
65
+ def get_odds(odds_element)
66
+ (odds_element.at_css('td:nth-child(3)')&.content || '')
67
+ .gsub(' ', '')
68
+ .gsub(/[[:space:]]/, '')
69
+ .gsub('½','.5')
70
+ .gsub('¼', '.25')
71
+ .gsub('¾', '.75')
72
+ .strip
73
+ end
74
+
75
+ def get_odds_inner_html(odds_element)
76
+ ''
77
+ # ((odds_element.at_css('td:nth-child(3) a'))&.inner_html || '').encode('utf-8').gsub(" ","").gsub("½",".5").strip
78
+ end
79
+
80
+ def get_line(odds_string)
81
+ odds_string = odds_string.gsub('PK', '-0')
82
+ result = matchdata_to_hash(RegularExpressions::SOCCER_MONEYLINE_ODDS.match(odds_string) ||
83
+ RegularExpressions::SOCCER_ODDS.match(odds_string))
84
+
85
+
86
+ result.each { |k,v| result[k] = result[k].to_s.to_f if result[k] }
87
+ get_home_and_away(result)
88
+ end
89
+ end
@@ -9,6 +9,7 @@ require 'sports/nba'
9
9
  require 'sports/nfl'
10
10
  require 'sports/mlb'
11
11
  require 'sports/nhl'
12
+ require 'sports/soccer'
12
13
 
13
14
  class VegasInsiderScraper
14
15
  attr_reader :sports
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vegas_insider_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Reitz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-25 00:00:00.000000000 Z
11
+ date: 2019-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -52,6 +52,7 @@ files:
52
52
  - lib/sports/nfl.rb
53
53
  - lib/sports/nhl.rb
54
54
  - lib/sports/scraper_league.rb
55
+ - lib/sports/soccer.rb
55
56
  - lib/vegas_insider_scraper.rb
56
57
  homepage: https://github.com/mreitz94/betting-tools-scraper
57
58
  licenses:
@@ -73,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
74
  version: '0'
74
75
  requirements: []
75
76
  rubyforge_project:
76
- rubygems_version: 2.7.7
77
+ rubygems_version: 2.7.9
77
78
  signing_key:
78
79
  specification_version: 4
79
80
  summary: A gem to scrape the web for sports statistics, teams, betting lines, records,