vegas_insider_scraper 0.1.5 → 0.2.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.
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,