webget-football 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/Manifest.txt +20 -0
  3. data/Rakefile +1 -0
  4. data/lib/webget-football.rb +8 -0
  5. data/lib/webget-football/apis.rb +1 -0
  6. data/lib/webget-football/apis/download.rb +22 -2
  7. data/lib/webget-football/apis/leagues.rb +51 -0
  8. data/lib/webget-football/fbref.rb +7 -0
  9. data/lib/webget-football/fbref/config.rb +14 -0
  10. data/lib/webget-football/fbref/download.rb +41 -0
  11. data/lib/webget-football/fbref/leagues.rb +47 -0
  12. data/lib/webget-football/fbref/page.rb +32 -0
  13. data/lib/webget-football/fbref/page_schedule.rb +322 -0
  14. data/lib/webget-football/metal.rb +19 -0
  15. data/lib/webget-football/version.rb +1 -1
  16. data/lib/webget-football/worldfootball.rb +1 -0
  17. data/lib/webget-football/worldfootball/download.rb +61 -28
  18. data/lib/webget-football/worldfootball/leagues.rb +200 -0
  19. data/lib/webget-football/worldfootball/leagues/asia.rb +53 -0
  20. data/lib/webget-football/worldfootball/leagues/europe--british_isles.rb +59 -0
  21. data/lib/webget-football/worldfootball/leagues/europe--central.rb +127 -0
  22. data/lib/webget-football/worldfootball/leagues/europe--eastern.rb +82 -0
  23. data/lib/webget-football/worldfootball/leagues/europe--northern.rb +57 -0
  24. data/lib/webget-football/worldfootball/leagues/europe--southern.rb +86 -0
  25. data/lib/webget-football/worldfootball/leagues/europe--western.rb +38 -0
  26. data/lib/webget-football/worldfootball/leagues/europe.rb +13 -0
  27. data/lib/webget-football/worldfootball/leagues/north_america.rb +44 -0
  28. data/lib/webget-football/worldfootball/leagues/pacific.rb +21 -0
  29. data/lib/webget-football/worldfootball/leagues/south_america.rb +11 -0
  30. data/lib/webget-football/worldfootball/page_report.rb +1 -1
  31. data/lib/webget-football/worldfootball/page_schedule.rb +1 -1
  32. metadata +36 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1c534ca41cdcab1afdbeee5718e2a869905e320f
4
- data.tar.gz: 150766a4f8aadb4806979fcb3e993162d48fe467
3
+ metadata.gz: 697087826fff9e6bcf453cc39b306f0417a14a8b
4
+ data.tar.gz: fd2b4ccbf17a04ce25be90ca09abbe5301f2b862
5
5
  SHA512:
6
- metadata.gz: d6cbe90e31236fd503d3dbc75cf63bdee8520a060bf557a0c1534833da20ea62956d1fd0fbc261799ddc768c98ba91ae92921fba9f3fe92a06397d160e988cf5
7
- data.tar.gz: e4971085d96f4b2101537ce79390df78060fc13e44a841251f6f28110e7187f0c17e2f6cb12a2ef26c8a8e595137862b738193a2f7851afefeea16208991b4de
6
+ metadata.gz: 5f3a15071cbadfca2711be5014d9a74d619cf61307791268ad667fd70269d2a7d947f26523f42af9b2b6773a038fecd4e049d5dcc56d50b14ac6db57fbf90229
7
+ data.tar.gz: 6ab3f694ae27784402cc5cf17ecb8a7fee8961248c92a8659be4caf018d250770921af635de2cc1be2aa16cbeb4d1d8c808b53276a25f0397fc0be9f3cc4c1a4
@@ -6,10 +6,30 @@ lib/webget-football.rb
6
6
  lib/webget-football/apis.rb
7
7
  lib/webget-football/apis/config.rb
8
8
  lib/webget-football/apis/download.rb
9
+ lib/webget-football/apis/leagues.rb
10
+ lib/webget-football/fbref.rb
11
+ lib/webget-football/fbref/config.rb
12
+ lib/webget-football/fbref/download.rb
13
+ lib/webget-football/fbref/leagues.rb
14
+ lib/webget-football/fbref/page.rb
15
+ lib/webget-football/fbref/page_schedule.rb
16
+ lib/webget-football/metal.rb
9
17
  lib/webget-football/version.rb
10
18
  lib/webget-football/worldfootball.rb
11
19
  lib/webget-football/worldfootball/config.rb
12
20
  lib/webget-football/worldfootball/download.rb
21
+ lib/webget-football/worldfootball/leagues.rb
22
+ lib/webget-football/worldfootball/leagues/asia.rb
23
+ lib/webget-football/worldfootball/leagues/europe--british_isles.rb
24
+ lib/webget-football/worldfootball/leagues/europe--central.rb
25
+ lib/webget-football/worldfootball/leagues/europe--eastern.rb
26
+ lib/webget-football/worldfootball/leagues/europe--northern.rb
27
+ lib/webget-football/worldfootball/leagues/europe--southern.rb
28
+ lib/webget-football/worldfootball/leagues/europe--western.rb
29
+ lib/webget-football/worldfootball/leagues/europe.rb
30
+ lib/webget-football/worldfootball/leagues/north_america.rb
31
+ lib/webget-football/worldfootball/leagues/pacific.rb
32
+ lib/webget-football/worldfootball/leagues/south_america.rb
13
33
  lib/webget-football/worldfootball/page.rb
14
34
  lib/webget-football/worldfootball/page_report.rb
15
35
  lib/webget-football/worldfootball/page_schedule.rb
data/Rakefile CHANGED
@@ -20,6 +20,7 @@ Hoe.spec 'webget-football' do
20
20
  self.extra_deps = [
21
21
  ['webget', '>= 0.2.1'],
22
22
  ['nokogiri'],
23
+ ['sportdb-structs'], ## add season support - todo/fix: move to season-formats??
23
24
  ]
24
25
 
25
26
 
@@ -5,12 +5,20 @@ require 'webget' ## incl. webget, webcache, webclient, etc.
5
5
  require 'nokogiri'
6
6
 
7
7
 
8
+ require 'sportdb/structs' ## add season support - todo/fix: move to season-formats??
9
+
10
+
8
11
  ###
9
12
  # our own code
10
13
  require 'webget-football/version' # let version always go first
11
14
 
15
+ ## shared base code (e.g. Metal::Base, Page::Base, etc.)
16
+ require 'webget-football/metal'
17
+
18
+ ## sources
12
19
  require 'webget-football/apis'
13
20
  require 'webget-football/worldfootball'
21
+ require 'webget-football/fbref'
14
22
 
15
23
 
16
24
  puts Webget::Module::Football.banner # say hello
@@ -5,6 +5,7 @@
5
5
 
6
6
  ## our own code
7
7
  require_relative 'apis/config'
8
+ require_relative 'apis/leagues'
8
9
  require_relative 'apis/download'
9
10
 
10
11
 
@@ -1,5 +1,22 @@
1
1
  module Footballdata
2
2
 
3
+
4
+ #################
5
+ ## porcelain "api"
6
+ def self.schedule( league:, season: )
7
+ season = Season( season ) ## cast (ensure) season class (NOT string, integer, etc.)
8
+
9
+ league_code = LEAGUES[ league.downcase ]
10
+
11
+ Metal.teams( league_code, season.start_year )
12
+ Metal.matches( league_code, season.start_year )
13
+ end
14
+
15
+
16
+
17
+ ##################
18
+ ## plumbing metal "helpers"
19
+
3
20
  ## todo/check: put in Downloader namespace/class - why? why not?
4
21
  ## or use Metal - no "porcelain" downloaders / machinery
5
22
  class Metal
@@ -26,11 +43,14 @@ class Metal
26
43
  get( competions_url( 'TIER_THREE' ))
27
44
  end
28
45
 
29
- def self.competition( code, year )
30
- get( competition_matches_url( code, year ))
46
+
47
+ def self.teams( code, year )
31
48
  get( competition_teams_url( code, year ))
32
49
  end
33
50
 
51
+ def self.matches( code, year )
52
+ get( competition_matches_url( code, year ))
53
+ end
34
54
 
35
55
  =begin
36
56
  def self.matches
@@ -0,0 +1,51 @@
1
+ module Footballdata
2
+
3
+ LEAGUES = {
4
+ 'eng.1' => 'PL', # incl. team(s) from wales
5
+ 'eng.2' => 'ELC',
6
+ # PL - Premier League , England 27 seasons | 2019-08-09 - 2020-07-25 / matchday 31
7
+ # ELC - Championship , England 3 seasons | 2019-08-02 - 2020-07-22 / matchday 38
8
+ #
9
+ # 2019 => 2019/20
10
+ # 2018 => 2018/19
11
+ # 2017 => xxx 2017-18 - requires subscription !!!
12
+
13
+ 'es.1' => 'PD',
14
+ # PD - Primera Division , Spain 27 seasons | 2019-08-16 - 2020-07-19 / matchday 31
15
+
16
+ 'pt.1' => 'PPL',
17
+ # PPL - Primeira Liga , Portugal 9 seasons | 2019-08-10 - 2020-07-26 / matchday 28
18
+
19
+ 'de.1' => 'BL1',
20
+ # BL1 - Bundesliga , Germany 24 seasons | 2019-08-16 - 2020-06-27 / matchday 34
21
+
22
+ 'nl.1' => 'DED',
23
+ # DED - Eredivisie , Netherlands 10 seasons | 2019-08-09 - 2020-03-08 / matchday 34
24
+
25
+ 'fr.1' => 'FL1', # incl. team(s) monaco
26
+ # FL1 - Ligue 1, France
27
+ # 9 seasons | 2019-08-09 - 2020-05-31 / matchday 38
28
+ #
29
+ # 2019 => 2019/20
30
+ # 2018 => 2018/19
31
+ # 2017 => xxx 2017-18 - requires subscription !!!
32
+
33
+ 'it.1' => 'SA',
34
+ # SA - Serie A , Italy 15 seasons | 2019-08-24 - 2020-08-02 / matchday 27
35
+
36
+ 'br.1' => 'BSA',
37
+ # BSA - Série A, Brazil
38
+ # 4 seasons | 2020-05-03 - 2020-12-06 / matchday 10
39
+ #
40
+ # 2020 => 2020
41
+ # 2019 => 2019
42
+ # 2018 => 2018
43
+ # 2017 => xxx 2017 - requires subscription !!!
44
+
45
+ ## todo/check: use champs and NOT cl - why? why not?
46
+ 'cl' => 'CL', ## note: cl is country code for chile!! - use champs - why? why not?
47
+ 'europe.cl' => 'CL', ## note: cl is country code for chile!! - use champs - why? why not?
48
+ # CL - UEFA Champions League , Europe 19 seasons | 2019-06-25 - 2020-05-30 / matchday 6
49
+ }
50
+ end # module Footballdata
51
+
@@ -0,0 +1,7 @@
1
+
2
+ ## our own code
3
+ require_relative 'fbref/config'
4
+ require_relative 'fbref/leagues'
5
+ require_relative 'fbref/download'
6
+ require_relative 'fbref/page'
7
+ require_relative 'fbref/page_schedule'
@@ -0,0 +1,14 @@
1
+
2
+ module Fbref
3
+ class Configuration
4
+ # nothing here for now
5
+ end # class Configuration
6
+
7
+ ## lets you use
8
+ ## Fbref.configure do |config|
9
+ ## config.convert.out_dir = './o'
10
+ ## end
11
+
12
+ def self.configure() yield( config ); end
13
+ def self.config() @config ||= Configuration.new; end
14
+ end # module Fbref
@@ -0,0 +1,41 @@
1
+
2
+ module Fbref
3
+
4
+ #################
5
+ ## porcelain "api"
6
+ def self.schedule( league:, season: )
7
+ url = Metal.schedule_url( league: league, season: season )
8
+ Metal.download_page( url )
9
+ end
10
+
11
+
12
+
13
+
14
+ ##################
15
+ ## plumbing metal "helpers"
16
+ class Metal < ::Metal::Base
17
+
18
+ BASE_URL = 'https://fbref.com/en'
19
+
20
+
21
+ def self.schedule_url( league:, season: )
22
+ season = Season( season )
23
+
24
+ pages = LEAGUES[ league ]
25
+ if pages.nil?
26
+ puts "!! ERROR - no pages (urls) configured for league >#{league}<"
27
+ exit 1
28
+ end
29
+ page = pages[ season.key ]
30
+ if pages.nil?
31
+ puts "!! ERROR - no page (url) configured for season >#{season}< for league >#{league}<; available seasons include:"
32
+ pp pages
33
+ exit 1
34
+ end
35
+
36
+ "#{BASE_URL}/#{page}"
37
+ end
38
+
39
+
40
+ end # module Metal
41
+ end # module Fbref
@@ -0,0 +1,47 @@
1
+
2
+ module Fbref
3
+ LEAGUES = {
4
+ ## todo/check: shorten - (auto-)add to base_url - comps/ - why? why not?
5
+ 'at.1' => {
6
+ '2020/21' => 'comps/56/schedule/Austrian-Bundesliga-Scores-and-Fixtures',
7
+ '2019/20' => 'comps/56/3213/schedule/2019-2020-Austrian-Bundesliga-Scores-and-Fixtures',
8
+ '2018/19' => 'comps/56/2352/schedule/2018-2019-Austrian-Bundesliga-Scores-and-Fixtures',
9
+ },
10
+
11
+ 'de.1' => {
12
+ '2020/21' => 'comps/20/schedule/Bundesliga-Scores-and-Fixtures',
13
+ },
14
+
15
+ 'eng.1' => {
16
+ '2020/21' => 'comps/9/schedule/Premier-League-Scores-and-Fixtures',
17
+ },
18
+
19
+ 'es.1' => {
20
+ '2020/21' => 'comps/12/schedule/La-Liga-Scores-and-Fixtures',
21
+ },
22
+
23
+ 'it.1' => {
24
+ '2020/21' => 'comps/11/schedule/Serie-A-Scores-and-Fixtures',
25
+ },
26
+
27
+ 'fr.1' => {
28
+ '2020/21' => 'comps/13/schedule/Ligue-1-Scores-and-Fixtures',
29
+ },
30
+
31
+ 'mx.1' => {
32
+ '2020/21' => 'comps/31/schedule/Liga-MX-Scores-and-Fixtures',
33
+ '2019/20' => 'comps/31/3267/schedule/2019-2020-Liga-MX-Scores-and-Fixtures',
34
+ '2018/19' => 'comps/31/2252/schedule/2018-2019-Liga-MX-Scores-and-Fixtures',
35
+ },
36
+
37
+ 'br.1' => {
38
+ '2020' => 'comps/24/schedule/Serie-A-Scores-and-Fixtures',
39
+ },
40
+
41
+ 'jp.1' => {
42
+ '2020' => 'comps/25/schedule/J1-League-Scores-and-Fixtures',
43
+ '2019' => 'comps/25/3923/schedule/2019-J1-League-Scores-and-Fixtures',
44
+ '2018' => 'comps/25/1761/schedule/2018-J1-League-Scores-and-Fixtures',
45
+ },
46
+ }
47
+ end # module Fbref
@@ -0,0 +1,32 @@
1
+
2
+ module Fbref
3
+
4
+ class Page
5
+ def self.from_cache( url )
6
+ html = Webcache.read( url )
7
+ new( html )
8
+ end
9
+
10
+ def self.from_file( path )
11
+ html = File.open( path, 'r:utf-8' ) {|f| f.read }
12
+ new( html )
13
+ end
14
+
15
+
16
+ def initialize( html )
17
+ @html = html
18
+ end
19
+
20
+ def doc
21
+ ## note: if we use a fragment and NOT a document - no access to page head (and meta elements and such)
22
+ @doc ||= Nokogiri::HTML( @html )
23
+ end
24
+
25
+ def title
26
+ # <title>Bundesliga 2010/2011 &raquo; Spielplan</title>
27
+ @title ||= doc.css( 'title' ).first
28
+ @title.text ## get element's text content
29
+ end
30
+ end # class Page
31
+ end # module Fbref
32
+
@@ -0,0 +1,322 @@
1
+
2
+ module Fbref
3
+
4
+ class Page
5
+ class Schedule < Page ## note: use nested class for now - why? why not?
6
+
7
+ def self.from_cache( league:, season: )
8
+ url = Metal.schedule_url( league: league, season: season )
9
+
10
+ ## use - super.from_cache( url ) - why? why not?
11
+ html = Webcache.read( url )
12
+ new( html )
13
+ end
14
+
15
+
16
+ SCHED_KS_ID_RE = %r{(sched_ks_[a-z0-9_]+)}
17
+
18
+ def stages
19
+
20
+ stages = []
21
+ buttons = doc.css( 'div#all_sched_ks_all div.section_heading div.sub_section_heading button' )
22
+ puts "#{buttons.size} button(s):"
23
+ ## pp buttons
24
+
25
+ buttons.each do |button|
26
+ name = button.text
27
+ table_id = ''
28
+ if button['onclick'].to_s =~ SCHED_KS_ID_RE
29
+ table_id = $1
30
+ else
31
+ puts "!! ERROR - no table id found"
32
+ exit 1
33
+ end
34
+
35
+ if table_id == 'sched_ks_all' ## skip all-in-one
36
+ else
37
+ stages << { name: name,
38
+ table_id: table_id }
39
+ end
40
+ end
41
+
42
+ =begin
43
+ <div class="section_heading">
44
+ <span class="section_anchor" id="sched_ks_all_link" data-label="Scores & Fixtures" data-no-inpage="1"></span><h2>Scores & Fixtures <span style="color: #777; font-size:smaller">2019-2020 Austrian Bundesliga</span></h2> <div class="section_heading_text">
45
+ <ul><li><span class="shim"></span></li>
46
+ </ul>
47
+ </div>
48
+ <div class="sub_section_heading">
49
+ <button onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_all'); }, 100);" data-hide="[id^=all_sched_ks]" data-show="#all_sched_ks_all">All Rounds</button>
50
+ <button onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_3213_1'); }, 100);" data-hide="[id^=all_sched_ks]" data-show="#all_sched_ks_3213_1">Regular Season</button>
51
+ <button onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_3213_2'); }, 100);" data-hide="[id^=all_sched_ks]" data-show="#all_sched_ks_3213_2">Championship round</button>
52
+ <button onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_3213_3'); }, 100);" data-hide="[id^=all_sched_ks]" data-show="#all_sched_ks_3213_3">Relegation round</button>
53
+ <button onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_3213_4'); }, 100);" data-hide="[id^=all_sched_ks]" data-show="#all_sched_ks_3213_4">Europa League play-offs</button>
54
+ </div>
55
+ =end
56
+ stages
57
+ end
58
+
59
+
60
+
61
+ def matches
62
+ tables = @doc.css( 'table.stats_table' )
63
+
64
+ puts " found #{tables.size} table(s):"
65
+ tables.each do |table|
66
+ puts " table >#{table['id']}<" ## add no of rows too?
67
+ end
68
+
69
+ rows = []
70
+ if tables.size == 2
71
+ ## note: if tables size == 2 assume all table and "regular" season table, thus, is the same (missing table for more stages!!!)
72
+ rows += match_rows( tables[1] )
73
+ ## todo/fix: issue a warning about missing table!!!!
74
+ puts "!! WARN: missing stage table(s):"
75
+ pp stages
76
+ elsif tables.size > 1
77
+ stages.each do |stage|
78
+ name = stage[:name]
79
+ table_id = stage[:table_id]
80
+
81
+ table = tables.find {|table| table['id'] == table_id }
82
+ if table
83
+ puts " adding stage >#{name}<..."
84
+ rows += match_rows( table, stage: name )
85
+ else
86
+ puts "!! ERROR: table with id >< for stage >< not found; mismatch sorry"
87
+ exit 1
88
+ end
89
+ end
90
+ else
91
+ ## assume single-table
92
+ rows += match_rows( tables[0] )
93
+ end
94
+
95
+ puts " found #{tables.size} table(s):"
96
+ tables.each do |table|
97
+ puts " table >#{table['id']}<" ## add no of rows too?
98
+ end
99
+
100
+ rows
101
+ end
102
+
103
+
104
+ =begin
105
+ def matches_all
106
+ rows = []
107
+
108
+ table = @doc.css( 'table#sched_ks_all' ).first
109
+
110
+ ths = table.css( 'thead tr th')
111
+
112
+ puts " #{ths.size} column heading(s):"
113
+ ths.each_with_index do |th,i|
114
+ puts "#{i+1}: >#{th.text}< - #{th.attr('data-stat')}"
115
+ end
116
+
117
+ rows += match_rows( table )
118
+ rows
119
+ end
120
+ =end
121
+
122
+
123
+ #######
124
+ # helpers
125
+
126
+ COLUMN_RENAMES = {
127
+ 'gameweek' => 'matchweek',
128
+ 'squad_a' => 'team1',
129
+ 'squad_b' => 'team2',
130
+ 'notes' => 'comments',
131
+ }
132
+
133
+
134
+ def match_rows( table, **fixed_columns )
135
+ rows = []
136
+
137
+ trs = table.css( 'tbody tr')
138
+ puts " #{trs.size} row(s):"
139
+
140
+ trs.each_with_index do |tr,i|
141
+ print "#{i+1}: "
142
+
143
+ if tr.attr('class').to_s.index( 'spacer')
144
+ print "---"
145
+ else
146
+ row = {}
147
+ row = row.merge( fixed_columns )
148
+
149
+ tds = tr.css( 'th,td' )
150
+ tds.each do |td|
151
+ key = td.attr('data-stat')
152
+ value = td.text.strip
153
+
154
+ print "#{key}: >#{value}< | "
155
+
156
+ ## note: skip expected goal (xg) for now
157
+ next if ['xg_a', 'xg_b'].include?( key )
158
+
159
+ ### note: rename some column keys!!
160
+ key = COLUMN_RENAMES[ key ] if COLUMN_RENAMES[ key ]
161
+
162
+
163
+ if key == 'score'
164
+ value = value.gsub( '–', '-' ) ## translate fancy dash (\u2013)
165
+ end
166
+
167
+ if key == 'attendance'
168
+ ## remove thousand seperator e.g.
169
+ ## 24,200 => 24200 etc.
170
+ ## 1,900 => 1900
171
+ value = value.gsub( ',', '' )
172
+ end
173
+
174
+ if key == 'match_report'
175
+ ## get href from embedded anchor link (<a href="">)
176
+ links = td.css('a')
177
+ value = if links.size > 0
178
+ links[0]['href']
179
+ else
180
+ '' # no (linked) match report found
181
+ end
182
+ end
183
+
184
+ ## note: use ALwAYS symbols for now - why? why not?
185
+ row[ key.to_sym ] = value
186
+ end
187
+ rows << row
188
+ end
189
+ print "\n\n"
190
+ end
191
+
192
+ rows
193
+ end
194
+
195
+ end # class Schedule
196
+ end # class Page
197
+ end # module Fbref
198
+
199
+
200
+
201
+
202
+
203
+ =begin
204
+ # <table class="min_width sortable stats_table min_width" id="sched_ks_all"
205
+
206
+ 13 column heading(s):
207
+ 1: >Round< - round
208
+ 2: >Wk< - gameweek
209
+ 3: >Day< - dayofweek
210
+ 4: >Date< - date
211
+ 5: >Time< - time
212
+ 6: >Home< - squad_a
213
+ 7: >Score< - score
214
+ 8: >Away< - squad_b
215
+ 9: >Attendance< - attendance
216
+ 10: >Venue< - venue
217
+ 11: >Referee< - referee
218
+ 12: >Match Report< - match_report
219
+ 13: >Notes< - notes=end
220
+
221
+ <tbody>
222
+ <tr >
223
+ <th scope="row" class="left " data-stat="round" >
224
+ <a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a>
225
+ </th>
226
+ <td class="right " data-stat="gameweek" >1</td>
227
+ <td class="left " data-stat="dayofweek" csk="6" >Fri</td>
228
+ <td class="left " data-stat="date" csk="20190726" ><a href="/en/matches/2019-07-26">2019-07-26</a></td>
229
+ <td class="right " data-stat="time" csk="20:45:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564166700" data-venue-time="20:45">20:45</span> <span class="localtime" data-label="your time"></span></td>
230
+ <td class="right " data-stat="squad_a" ><a href="/en/squads/912e4c40/2019-2020/Rapid-Wien-Stats">Rapid Wien</a></td>
231
+ <td class="center " data-stat="score" ><a href="/en/matches/341a27e4/Rapid-Wien-Red-Bull-Salzburg-July-26-2019-Austrian-Bundesliga">0&ndash;2</a></td>
232
+ <td class="left " style="font-weight: bold;" data-stat="squad_b" ><a href="/en/squads/50f2a074/2019-2020/Red-Bull-Salzburg-Stats">RB Salzburg</a></td>
233
+ <td class="right " data-stat="attendance" csk="24200" >24,200</td>
234
+ <td class="left " data-stat="venue" >Allianz Stadion</td>
235
+ <td class="left " data-stat="referee" csk="Alexander Harkam2019-07-26" >Alexander Harkam</td>
236
+ <td class="left " data-stat="match_report" ><a href="/en/matches/341a27e4/Rapid-Wien-Red-Bull-Salzburg-July-26-2019-Austrian-Bundesliga">Match Report</a></td>
237
+ <td class="left iz" data-stat="notes" ></td>
238
+ </tr>
239
+ <tr >
240
+ <th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a></th>
241
+ <td class="right sort_show" data-stat="gameweek" >1</td><td class="left " data-stat="dayofweek" csk="7" >Sat</td><td class="left " data-stat="date" csk="20190727" ><a href="/en/matches/2019-07-27">2019-07-27</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564239600" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " data-stat="squad_a" ><a href="/en/squads/d7d06475/2019-2020/Admira-Wacker-Modling-Stats">Admira</a></td><td class="center " data-stat="score" ><a href="/en/matches/c32792aa/Admira-Wacker-Modling-Wolfsberger-AC-July-27-2019-Austrian-Bundesliga">0&ndash;3</a></td><td class="left " style="font-weight: bold;" data-stat="squad_b" ><a href="/en/squads/426658a6/2019-2020/Wolfsberger-AC-Stats">Wolfsberger AC</a></td><td class="right " data-stat="attendance" csk="1900" >1,900</td><td class="left " data-stat="venue" >BSFZ-Arena</td><td class="left " data-stat="referee" csk="Christian-Petru Ciochirca2019-07-27" >Christian-Petru Ciochirca</td><td class="left " data-stat="match_report" ><a href="/en/matches/c32792aa/Admira-Wacker-Modling-Wolfsberger-AC-July-27-2019-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
242
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a></th><td class="right sort_show" data-stat="gameweek" >1</td><td class="left sort_show" data-stat="dayofweek" csk="7" >Sat</td><td class="left sort_show" data-stat="date" csk="20190727" ><a href="/en/matches/2019-07-27">2019-07-27</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564239600" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/c63dd2d5/2019-2020/WSG-Wattens-Stats">WSG Wattens</a></td><td class="center " data-stat="score" ><a href="/en/matches/1cbbfd76/WSG-Wattens-Austria-Wien-July-27-2019-Austrian-Bundesliga">3&ndash;1</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/ee0bccc5/2019-2020/Austria-Wien-Stats">Austria Wien</a></td><td class="right " data-stat="attendance" csk="4600" >4,600</td><td class="left " data-stat="venue" >Tivoli Stadion Tirol</td><td class="left " data-stat="referee" csk="Christopher Jäger2019-07-27" >Christopher Jäger</td><td class="left " data-stat="match_report" ><a href="/en/matches/1cbbfd76/WSG-Wattens-Austria-Wien-July-27-2019-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
243
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a></th><td class="right sort_show" data-stat="gameweek" >1</td><td class="left " data-stat="dayofweek" csk="1" >Sun</td><td class="left " data-stat="date" csk="20190728" ><a href="/en/matches/2019-07-28">2019-07-28</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564326000" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/d20821dd/2019-2020/LASK-Stats">LASK</a></td><td class="center " data-stat="score" ><a href="/en/matches/96a71a15/LASK-Rheindorf-Altach-July-28-2019-Austrian-Bundesliga">2&ndash;0</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/80beba99/2019-2020/Rheindorf-Altach-Stats">SCR Altach</a></td><td class="right " data-stat="attendance" csk="5333" >5,333</td><td class="left " data-stat="venue" >TGW Arena </td><td class="left " data-stat="referee" csk="Harald Lechner2019-07-28" >Harald Lechner</td><td class="left " data-stat="match_report" ><a href="/en/matches/96a71a15/LASK-Rheindorf-Altach-July-28-2019-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
244
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a></th><td class="right sort_show" data-stat="gameweek" >1</td><td class="left sort_show" data-stat="dayofweek" csk="1" >Sun</td><td class="left sort_show" data-stat="date" csk="20190728" ><a href="/en/matches/2019-07-28">2019-07-28</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564326000" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/2ff6d16e/Mattersburg-Stats">Mattersburg</a></td><td class="center " data-stat="score" ><a href="/en/matches/6ae7c604/Mattersburg-Hartberg-July-28-2019-Austrian-Bundesliga">2&ndash;1</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/f6d9c820/2019-2020/Hartberg-Stats">Hartberg</a></td><td class="right " data-stat="attendance" csk="2850" >2,850</td><td class="left " data-stat="venue" >Pappelstadion</td><td class="left " data-stat="referee" csk="Manuel Schüttengruber2019-07-28" >Manuel Schüttengruber</td><td class="left " data-stat="match_report" ><a href="/en/matches/6ae7c604/Mattersburg-Hartberg-July-28-2019-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
245
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a></th><td class="right sort_show" data-stat="gameweek" >1</td><td class="left sort_show" data-stat="dayofweek" csk="1" >Sun</td><td class="left sort_show" data-stat="date" csk="20190728" ><a href="/en/matches/2019-07-28">2019-07-28</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564326000" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/3f4fe568/2019-2020/Sturm-Graz-Stats">Sturm Graz</a></td><td class="center " data-stat="score" ><a href="/en/matches/0427bf0f/Sturm-Graz-St-Polten-July-28-2019-Austrian-Bundesliga">3&ndash;0</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/f722bd04/2019-2020/St-Polten-Stats">St. Pölten</a></td><td class="right " data-stat="attendance" csk="7194" >7,194</td><td class="left " data-stat="venue" >Merkur Arena</td><td class="left " data-stat="referee" csk="Walter Altmann2019-07-28" >Walter Altmann</td><td class="left " data-stat="match_report" ><a href="/en/matches/0427bf0f/Sturm-Graz-St-Polten-July-28-2019-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
246
+ <tr class="spacer partial_table" style="background-color:#ddd" >
247
+ <th scope="row" class="left iz" data-stat="round" ></th>
248
+ <td class="right iz" data-stat="gameweek" ></td>
249
+ <td class="left iz" data-stat="dayofweek" ></td>
250
+ <td class="left iz" data-stat="date" ></td>
251
+ <td class="right iz" data-stat="time" ></td>
252
+ <td class="right iz" data-stat="squad_a" ></td>
253
+ <td class="center iz" data-stat="score" ></td>
254
+ <td class="left iz" data-stat="squad_b" ></td>
255
+ <td class="right iz" data-stat="attendance" ></td>
256
+ <td class="left iz" data-stat="venue" ></td>
257
+ <td class="left iz" data-stat="referee" ></td>
258
+ <td class="left iz" data-stat="match_report" ></td>
259
+ <td class="left iz" data-stat="notes" ></td></tr>
260
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a></th><td class="right " data-stat="gameweek" >2</td><td class="left " data-stat="dayofweek" csk="7" >Sat</td><td class="left " data-stat="date" csk="20190803" ><a href="/en/matches/2019-08-03">2019-08-03</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564844400" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " data-stat="squad_a" ><a href="/en/squads/ee0bccc5/2019-2020/Austria-Wien-Stats">Austria Wien</a></td><td class="center " data-stat="score" ><a href="/en/matches/ec58586a/Austria-Wien-LASK-August-3-2019-Austrian-Bundesliga">0&ndash;3</a></td><td class="left " style="font-weight: bold;" data-stat="squad_b" ><a href="/en/squads/d20821dd/2019-2020/LASK-Stats">LASK</a></td><td class="right " data-stat="attendance" csk="9350" >9,350</td><td class="left " data-stat="venue" >Generali Arena</td><td class="left " data-stat="referee" csk="Sebastian Gishamer2019-08-03" >Sebastian Gishamer</td><td class="left " data-stat="match_report" ><a href="/en/matches/ec58586a/Austria-Wien-LASK-August-3-2019-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
261
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a></th><td class="right sort_show" data-stat="gameweek" >2</td><td class="left sort_show" data-stat="dayofweek" csk="7" >Sat</td><td class="left sort_show" data-stat="date" csk="20190803" ><a href="/en/matches/2019-08-03">2019-08-03</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564844400" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/80beba99/2019-2020/Rheindorf-Altach-Stats">SCR Altach</a></td><td class="center " data-stat="score" ><a href="/en/matches/df2d69d0/Rheindorf-Altach-WSG-Wattens-August-3-2019-Austrian-Bundesliga">3&ndash;2</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/c63dd2d5/2019-2020/WSG-Wattens-Stats">WSG Wattens</a></td><td class="right " data-stat="attendance" csk="4038" >4,038</td><td class="left " data-stat="venue" >CASHPOINT Arena</td><td class="left " data-stat="referee" csk="Gerhard Grobelnik2019-08-03" >Gerhard Grobelnik</td><td class="left " data-stat="match_report" ><a href="/en/matches/df2d69d0/Rheindorf-Altach-WSG-Wattens-August-3-2019-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
262
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Regular Season</a></th><td class="right sort_show" data-stat="gameweek" >2</td><td class="left sort_show" data-stat="dayofweek" csk="7" >Sat</td><td class="left sort_show" data-stat="date" csk="20190803" ><a href="/en/matches/2019-08-03">2019-08-03</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1564844400" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/f6d9c820/2019-2020/Hartberg-Stats">Hartberg</a></td><td class="center " data-stat="score" ><a href="/en/matches/7d8949d5/Hartberg-Admira-Wacker-Modling-August-3-2019-Austrian-Bundesliga">4&ndash;1</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/d7d06475/2019-2020/Admira-Wacker-Modling-Stats">Admira</a></td><td class="right " data-stat="attendance" csk="2624" >2,624</td><td class="left " data-stat="venue" >PROfertil ARENA</td><td class="left " data-stat="referee" csk="Josef Spurny2019-08-03" >Josef Spurny</td><td class="left " data-stat="match_report" ><a href="/en/matches/7d8949d5/Hartberg-Admira-Wacker-Modling-August-3-2019-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
263
+
264
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Championship round</a></th><td class="right sort_show" data-stat="gameweek" >10</td><td class="left sort_show" data-stat="dayofweek" csk="1" >Sun</td><td class="left sort_show" data-stat="date" csk="20200705" ><a href="/en/matches/2020-07-05">2020-07-05</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1593961200" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/426658a6/2019-2020/Wolfsberger-AC-Stats">Wolfsberger AC</a></td><td class="center " data-stat="score" ><a href="/en/matches/ee9840f1/Wolfsberger-AC-Rapid-Wien-July-5-2020-Austrian-Bundesliga">3&ndash;1</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/912e4c40/2019-2020/Rapid-Wien-Stats">Rapid Wien</a></td><td class="right iz" data-stat="attendance" csk="0" ></td><td class="left " data-stat="venue" >Lavanttal-Arena</td><td class="left " data-stat="referee" csk="Alexander Harkam2020-07-05" >Alexander Harkam</td><td class="left " data-stat="match_report" ><a href="/en/matches/ee9840f1/Wolfsberger-AC-Rapid-Wien-July-5-2020-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
265
+ <tr class="spacer partial_table" style="background-color:#ddd" >
266
+ <th scope="row" class="left iz" data-stat="round" ></th>
267
+ <td class="right iz" data-stat="gameweek" ></td>
268
+ <td class="left iz" data-stat="dayofweek" ></td>
269
+ <td class="left iz" data-stat="date" ></td>
270
+ <td class="right iz" data-stat="time" ></td>
271
+ <td class="right iz" data-stat="squad_a" ></td>
272
+ <td class="center iz" data-stat="score" ></td>
273
+ <td class="left iz" data-stat="squad_b" ></td><td class="right iz" data-stat="attendance" ></td><td class="left iz" data-stat="venue" ></td><td class="left iz" data-stat="referee" ></td><td class="left iz" data-stat="match_report" ></td><td class="left iz" data-stat="notes" ></td></tr>
274
+ <tr >
275
+ <th scope="row" class="left " data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Semi-final</a></th>
276
+ <td class="right iz" data-stat="gameweek" ></td>
277
+ <td class="left " data-stat="dayofweek" csk="4" >Wed</td>
278
+ <td class="left " data-stat="date" csk="20200708" ><a href="/en/matches/2020-07-08">2020-07-08</a></td><td class="right " data-stat="time" csk="20:30:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1594233000" data-venue-time="20:30">20:30</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/ee0bccc5/2019-2020/Austria-Wien-Stats">Austria Wien</a></td><td class="center " data-stat="score" ><a href="/en/matches/6a1148ed/Austria-Wien-Rheindorf-Altach-July-8-2020-Austrian-Bundesliga">1&ndash;0</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/80beba99/2019-2020/Rheindorf-Altach-Stats">SCR Altach</a></td><td class="right iz" data-stat="attendance" csk="0" ></td><td class="left " data-stat="venue" >Generali Arena</td><td class="left " data-stat="referee" csk="Sebastian Gishamer2020-07-08" >Sebastian Gishamer</td><td class="left " data-stat="match_report" ><a href="/en/matches/6a1148ed/Austria-Wien-Rheindorf-Altach-July-8-2020-Austrian-Bundesliga">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
279
+ <tr ><th scope="row" class="left " data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Finals</a></th><td class="right iz" data-stat="gameweek" ></td><td class="left " data-stat="dayofweek" csk="7" >Sat</td><td class="left " data-stat="date" csk="20200711" ><a href="/en/matches/2020-07-11">2020-07-11</a></td><td class="right " data-stat="time" csk="17:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1594479600" data-venue-time="17:00">17:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " data-stat="squad_a" ><a href="/en/squads/ee0bccc5/2019-2020/Austria-Wien-Stats">Austria Wien</a></td><td class="center " data-stat="score" ><a href="/en/matches/5be35bf7/Austria-Wien-Hartberg-July-11-2020-Austrian-Bundesliga">2&ndash;3</a></td><td class="left " style="font-weight: bold;" data-stat="squad_b" ><a href="/en/squads/f6d9c820/2019-2020/Hartberg-Stats">Hartberg</a></td><td class="right iz" data-stat="attendance" csk="0" ></td><td class="left " data-stat="venue" >Generali Arena</td><td class="left " data-stat="referee" csk="Christopher Jäger2020-07-11" >Christopher Jäger</td><td class="left " data-stat="match_report" ><a href="/en/matches/5be35bf7/Austria-Wien-Hartberg-July-11-2020-Austrian-Bundesliga">Match Report</a></td><td class="left " data-stat="notes" >Leg 1 of 2</td></tr>
280
+ <tr ><th scope="row" class="left sort_show" data-stat="round" ><a href="/en/comps/56/3213/2019-2020-Austrian-Bundesliga-Stats">Finals</a></th><td class="right iz" data-stat="gameweek" ></td><td class="left " data-stat="dayofweek" csk="4" >Wed</td><td class="left " data-stat="date" csk="20200715" ><a href="/en/matches/2020-07-15">2020-07-15</a></td><td class="right " data-stat="time" csk="20:30:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1594837800" data-venue-time="20:30">20:30</span> <span class="localtime" data-label="your time"></span></td><td class="right " data-stat="squad_a" ><a href="/en/squads/f6d9c820/2019-2020/Hartberg-Stats">Hartberg</a></td><td class="center " data-stat="score" ><a href="/en/matches/c8376d96/Hartberg-Austria-Wien-July-15-2020-Austrian-Bundesliga">0&ndash;0</a></td><td class="left " data-stat="squad_b" ><a href="/en/squads/ee0bccc5/2019-2020/Austria-Wien-Stats">Austria Wien</a></td><td class="right iz" data-stat="attendance" csk="0" ></td><td class="left " data-stat="venue" >PROfertil ARENA</td><td class="left " data-stat="referee" csk="Manuel Schüttengruber2020-07-15" >Manuel Schüttengruber</td><td class="left " data-stat="match_report" ><a href="/en/matches/c8376d96/Hartberg-Austria-Wien-July-15-2020-Austrian-Bundesliga">Match Report</a></td><td class="left " data-stat="notes" >Leg 2 of 2; Hartberg won</td></tr>
281
+
282
+
283
+ <div class="sub_section_heading">
284
+ <button class="sr_preset tooltip visible active" type="button"
285
+ onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_all'); }, 100);"
286
+ data-hide="[id^=all_sched_ks]" data-show="#all_sched_ks_all">All Rounds</button>
287
+ <button class="sr_preset tooltip visible " type="button"
288
+ onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_3213_1'); }, 100);"
289
+ data-hide="[id^=all_sched_ks]" data-show="#all_sched_ks_3213_1">Regular Season</button>
290
+ <button class="sr_preset tooltip visible "
291
+ type="button" onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_3213_2'); }, 100);" data-hide="[id^=all_sched_ks]"
292
+ data-show="#all_sched_ks_3213_2">Championship round</button>
293
+ <button class="sr_preset tooltip visible "
294
+ type="button" onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_3213_3'); }, 100);" data-hide="[id^=all_sched_ks]"
295
+ data-show="#all_sched_ks_3213_3">Relegation round</button>
296
+ <button class="sr_preset tooltip visible "
297
+ type="button" onclick="setTimeout(function(){sr_st_construct_stats_table_features('sched_ks_3213_4'); }, 100);"
298
+ data-hide="[id^=all_sched_ks]" data-show="#all_sched_ks_3213_4">Europa League play-offs</button>
299
+
300
+
301
+ <tr ><th scope="row" class="right " data-stat="gameweek" >1</th><td class="left " data-stat="dayofweek" csk="7" >Sat</td><td class="left " data-stat="date" csk="20200912" ><a href="/en/matches/2020-09-12">2020-09-12</a></td><td class="right iz" data-stat="time" ></td><td class="right " data-stat="squad_a" ><a href="/en/squads/943e8050/Burnley-Stats">Burnley</a></td><td class="right iz" data-stat="xg_a" ></td><td class="center iz" data-stat="score" ></td><td class="right iz" data-stat="xg_b" ></td><td class="left " data-stat="squad_b" ><a href="/en/squads/19538871/Manchester-United-Stats">Manchester Utd</a></td><td class="right iz" data-stat="attendance" ></td><td class="left " data-stat="venue" >Turf Moor</td><td class="left iz" data-stat="referee" csk="2020-09-12" ></td><td class="left iz" data-stat="match_report" ></td><td class="left " data-stat="notes" >Match Postponed</td></tr>
302
+ <tr ><th scope="row" class="right sort_show" data-stat="gameweek" >1</th>
303
+ <td class="left sort_show" data-stat="dayofweek" csk="7" >Sat</td>
304
+ <td class="left sort_show" data-stat="date" csk="20200912" >
305
+ <a href="/en/matches/2020-09-12">2020-09-12</a></td>
306
+ <td class="right iz" data-stat="time" ></td>
307
+ <td class="right " data-stat="squad_a" ><a href="/en/squads/b8fd03ef/Manchester-City-Stats">Manchester City</a></td><td class="right iz" data-stat="xg_a" ></td><td class="center iz" data-stat="score" ></td><td class="right iz" data-stat="xg_b" ></td><td class="left " data-stat="squad_b" ><a href="/en/squads/8602292d/Aston-Villa-Stats">Aston Villa</a></td><td class="right iz" data-stat="attendance" ></td><td class="left " data-stat="venue" >Etihad Stadium</td><td class="left iz" data-stat="referee" csk="2020-09-12" ></td><td class="left iz" data-stat="match_report" ></td><td class="left " data-stat="notes" >Match Postponed</td></tr>
308
+ <tr ><th scope="row" class="right sort_show" data-stat="gameweek" >1</th><td class="left sort_show" data-stat="dayofweek" csk="7" >Sat</td><td class="left sort_show" data-stat="date" csk="20200912" ><a href="/en/matches/2020-09-12">2020-09-12</a></td><td class="right " data-stat="time" csk="12:30:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1599910200" data-venue-time="12:30">12:30</span> <span class="localtime" data-label="your time"></span></td><td class="right " data-stat="squad_a" ><a href="/en/squads/fd962109/Fulham-Stats">Fulham</a></td><td class="right " data-stat="xg_a" >0.2</td><td class="center " data-stat="score" ><a href="/en/matches/bf52349b/Fulham-Arsenal-September-12-2020-Premier-League">0&ndash;3</a></td><td class="right " data-stat="xg_b" >1.8</td><td class="left " style="font-weight: bold;" data-stat="squad_b" ><a href="/en/squads/18bb7c10/Arsenal-Stats">Arsenal</a></td><td class="right iz" data-stat="attendance" csk="0" ></td><td class="left " data-stat="venue" >Craven Cottage</td><td class="left " data-stat="referee" csk="Chris Kavanagh2020-09-12" >Chris Kavanagh</td><td class="left " data-stat="match_report" ><a href="/en/matches/bf52349b/Fulham-Arsenal-September-12-2020-Premier-League">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
309
+ <tr ><th scope="row" class="right sort_show" data-stat="gameweek" >1</th><td class="left sort_show" data-stat="dayofweek" csk="7" >Sat</td><td class="left sort_show" data-stat="date" csk="20200912" ><a href="/en/matches/2020-09-12">2020-09-12</a></td><td class="right " data-stat="time" csk="15:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1599919200" data-venue-time="15:00">15:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/47c64c55/Crystal-Palace-Stats">Crystal Palace</a></td><td class="right " data-stat="xg_a" >0.7</td><td class="center " data-stat="score" ><a href="/en/matches/db261cb0/Crystal-Palace-Southampton-September-12-2020-Premier-League">1&ndash;0</a></td><td class="right " data-stat="xg_b" >0.8</td><td class="left " data-stat="squad_b" ><a href="/en/squads/33c895d4/Southampton-Stats">Southampton</a></td><td class="right iz" data-stat="attendance" csk="0" ></td><td class="left " data-stat="venue" >Selhurst Park</td><td class="left " data-stat="referee" csk="Jonathan Moss2020-09-12" >Jonathan Moss</td><td class="left " data-stat="match_report" ><a href="/en/matches/db261cb0/Crystal-Palace-Southampton-September-12-2020-Premier-League">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
310
+ <tr >
311
+ <th scope="row" class="right sort_show" data-stat="gameweek" >1</th>
312
+ <td class="left sort_show" data-stat="dayofweek" csk="7" >Sat</td>
313
+ <td class="left sort_show" data-stat="date" csk="20200912" ><a href="/en/matches/2020-09-12">2020-09-12</a></td>
314
+ <td class="right " data-stat="time" csk="17:30:00" >
315
+ <span class="venuetime" data-venue-time-only="1" data-venue-epoch="1599928200" data-venue-time="17:30">17:30</span>
316
+ <span class="localtime" data-label="your time"></span>
317
+ </td>
318
+ <td class="right " style="font-weight: bold;" data-stat="squad_a" ><a href="/en/squads/822bd0ba/Liverpool-Stats">Liverpool</a></td><td class="right " data-stat="xg_a" >3.3</td><td class="center " data-stat="score" ><a href="/en/matches/21b58926/Liverpool-Leeds-United-September-12-2020-Premier-League">4&ndash;3</a></td><td class="right " data-stat="xg_b" >0.6</td><td class="left " data-stat="squad_b" ><a href="/en/squads/5bfb9659/Leeds-United-Stats">Leeds United</a></td><td class="right iz" data-stat="attendance" csk="0" ></td><td class="left " data-stat="venue" >Anfield</td><td class="left " data-stat="referee" csk="Michael Oliver2020-09-12" >Michael Oliver</td><td class="left " data-stat="match_report" ><a href="/en/matches/21b58926/Liverpool-Leeds-United-September-12-2020-Premier-League">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
319
+ <tr ><th scope="row" class="right sort_show" data-stat="gameweek" >1</th><td class="left sort_show" data-stat="dayofweek" csk="7" >Sat</td><td class="left sort_show" data-stat="date" csk="20200912" ><a href="/en/matches/2020-09-12">2020-09-12</a></td><td class="right " data-stat="time" csk="20:00:00" ><span class="venuetime" data-venue-time-only="1" data-venue-epoch="1599937200" data-venue-time="20:00">20:00</span> <span class="localtime" data-label="your time"></span></td><td class="right " data-stat="squad_a" ><a href="/en/squads/7c21e445/West-Ham-United-Stats">West Ham</a></td><td class="right " data-stat="xg_a" >1.1</td><td class="center " data-stat="score" ><a href="/en/matches/78495ced/West-Ham-United-Newcastle-United-September-12-2020-Premier-League">0&ndash;2</a></td><td class="right " data-stat="xg_b" >1.5</td><td class="left " style="font-weight: bold;" data-stat="squad_b" ><a href="/en/squads/b2b47a98/Newcastle-United-Stats">Newcastle Utd</a></td><td class="right iz" data-stat="attendance" csk="0" ></td><td class="left " data-stat="venue" >London Stadium</td><td class="left " data-stat="referee" csk="Stuart Attwell2020-09-12" >Stuart Attwell</td><td class="left " data-stat="match_report" ><a href="/en/matches/78495ced/West-Ham-United-Newcastle-United-September-12-2020-Premier-League">Match Report</a></td><td class="left iz" data-stat="notes" ></td></tr>
320
+
321
+ =end
322
+