football-sources 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +6 -15
- data/README.md +142 -1
- data/Rakefile +1 -1
- data/lib/football-sources.rb +26 -15
- data/lib/football-sources/apis.rb +1 -77
- data/lib/football-sources/apis/mods.rb +20 -0
- data/lib/football-sources/fbref.rb +4 -0
- data/lib/football-sources/fbref/build.rb +96 -0
- data/lib/football-sources/fbref/config.rb +16 -0
- data/lib/football-sources/fbref/convert.rb +95 -0
- data/lib/football-sources/version.rb +2 -2
- data/lib/football-sources/worldfootball.rb +1 -6
- data/lib/football-sources/worldfootball/jobs.rb +76 -0
- metadata +10 -19
- data/lib/football-sources/apis/download.rb +0 -11
- data/lib/football-sources/worldfootball/download.rb +0 -61
- data/lib/football-sources/worldfootball/leagues.rb +0 -200
- data/lib/football-sources/worldfootball/leagues/asia.rb +0 -53
- data/lib/football-sources/worldfootball/leagues/europe--british_isles.rb +0 -59
- data/lib/football-sources/worldfootball/leagues/europe--central.rb +0 -127
- data/lib/football-sources/worldfootball/leagues/europe--eastern.rb +0 -82
- data/lib/football-sources/worldfootball/leagues/europe--northern.rb +0 -57
- data/lib/football-sources/worldfootball/leagues/europe--southern.rb +0 -86
- data/lib/football-sources/worldfootball/leagues/europe--western.rb +0 -38
- data/lib/football-sources/worldfootball/leagues/europe.rb +0 -13
- data/lib/football-sources/worldfootball/leagues/north_america.rb +0 -44
- data/lib/football-sources/worldfootball/leagues/pacific.rb +0 -21
- data/lib/football-sources/worldfootball/leagues/south_america.rb +0 -11
- data/lib/football-sources/worldfootball/tool.rb +0 -100
@@ -1,38 +0,0 @@
|
|
1
|
-
|
2
|
-
module Worldfootball
|
3
|
-
|
4
|
-
LEAGUES_EUROPE.merge!({
|
5
|
-
'fr.1' => { pages: 'fra-ligue-1' },
|
6
|
-
'fr.2' => { pages: 'fra-ligue-2' },
|
7
|
-
|
8
|
-
# e.g. /lux-nationaldivision-2020-2021/
|
9
|
-
'lu.1' => { pages: 'lux-nationaldivision' },
|
10
|
-
|
11
|
-
# e.g. /ned-eredivisie-2020-2021/
|
12
|
-
'nl.1' => { pages: 'ned-eredivisie' },
|
13
|
-
# Championship play-offs
|
14
|
-
# Europa League play-offs (Group A + Group B / Finals )
|
15
|
-
|
16
|
-
# e.g. /bel-eerste-klasse-a-2020-2021/
|
17
|
-
# /bel-europa-league-playoffs-2018-2019-playoff/
|
18
|
-
# - Halbfinale
|
19
|
-
# - Finale
|
20
|
-
'be.1' => {
|
21
|
-
pages: {
|
22
|
-
'bel-eerste-klasse-a-{season}' => 'Regular Season',
|
23
|
-
'bel-eerste-klasse-a-{season}-playoff-i' => 'Playoffs - Championship',
|
24
|
-
'bel-europa-league-playoffs-{season}' => 'Playoffs - Europa League', ## note: missing groups (A & B)
|
25
|
-
'bel-europa-league-playoffs-{season}-playoff' => 'Playoffs - Europa League - Finals',
|
26
|
-
},
|
27
|
-
season: ->( season ) {
|
28
|
-
case season
|
29
|
-
when Season('2020/21') then [1] # just getting started
|
30
|
-
when Season('2019/20') then [1] # covid-19 - no championship & europa
|
31
|
-
when Season('2018/19') then [1,2,3,4]
|
32
|
-
end
|
33
|
-
}
|
34
|
-
},
|
35
|
-
|
36
|
-
})
|
37
|
-
|
38
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
|
2
|
-
module Worldfootball
|
3
|
-
LEAGUES_EUROPE = {}
|
4
|
-
end
|
5
|
-
|
6
|
-
|
7
|
-
require_relative 'europe--western'
|
8
|
-
require_relative 'europe--british_isles'
|
9
|
-
require_relative 'europe--northern'
|
10
|
-
require_relative 'europe--central'
|
11
|
-
require_relative 'europe--eastern'
|
12
|
-
require_relative 'europe--southern'
|
13
|
-
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Worldfootball
|
2
|
-
|
3
|
-
LEAGUES_NORTH_AMERICA = {
|
4
|
-
|
5
|
-
# todo/fix: adjust date/time by -6 or 7 hours!!!
|
6
|
-
# /can-canadian-championship-2020/
|
7
|
-
# - Qual. 1. Runde
|
8
|
-
# - Qual. 2. Runde
|
9
|
-
# - Qual. 3. Runde
|
10
|
-
# todo/fix: check for leagues - premier league? championship? soccer league?
|
11
|
-
# 'ca.1' => { slug: 'can-canadian-championship' },
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
# todo/fix: adjust date/time by -7 hours!!!
|
16
|
-
## e.g. 25.07.2020 02:30 => 24.07.2020 19.30
|
17
|
-
# 11.01.2020 04:00 => 10.01.2020 21.00
|
18
|
-
#
|
19
|
-
# e.g. /mex-primera-division-2020-2021-apertura/
|
20
|
-
# /mex-primera-division-2019-2020-clausura/
|
21
|
-
# /mex-primera-division-2019-2020-apertura-playoffs/
|
22
|
-
# - Viertelfinale
|
23
|
-
# - Halbfinale
|
24
|
-
# - Finale
|
25
|
-
# /mex-primera-division-2018-2019-clausura-playoffs/
|
26
|
-
'mx.1' => {
|
27
|
-
pages: {
|
28
|
-
'mex-primera-division-{season}-apertura' => 'Apertura', # 1
|
29
|
-
'mex-primera-division-{season}-apertura-playoffs' => 'Apertura - Liguilla', # 2
|
30
|
-
'mex-primera-division-{season}-clausura' => 'Clausura', # 3
|
31
|
-
'mex-primera-division-{season}-clausura-playoffs' => 'Clausura - Liguilla', # 4
|
32
|
-
},
|
33
|
-
season: ->( season ) {
|
34
|
-
case season
|
35
|
-
when Season('2020/21') then [1] # just getting started
|
36
|
-
when Season('2019/20') then [1,2,3] # covid-19 - no liguilla
|
37
|
-
when Season('2010/11')..Season('2018/19') then [1,2,3,4]
|
38
|
-
end
|
39
|
-
}
|
40
|
-
},
|
41
|
-
}
|
42
|
-
|
43
|
-
end # module Worldfootball
|
44
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Worldfootball
|
2
|
-
|
3
|
-
LEAGUES_PACIFIC = {
|
4
|
-
|
5
|
-
# /nzl-nz-football-championship-2019-2020/
|
6
|
-
# /nzl-nz-football-championship-2018-2019-playoffs/
|
7
|
-
'nz.1' => {
|
8
|
-
pages: {
|
9
|
-
'nzl-nz-football-championship-{season}' => 'Regular Season', # 1
|
10
|
-
'nzl-nz-football-championship-{season}-playoffs' => 'Playoff Finals', # 2
|
11
|
-
},
|
12
|
-
season: ->( season ) {
|
13
|
-
case season
|
14
|
-
when Season('2019/20') then [1] ## covid-19 - no playoffs/finals
|
15
|
-
when Season('2018/19') then [1,2]
|
16
|
-
end
|
17
|
-
}
|
18
|
-
},
|
19
|
-
}
|
20
|
-
|
21
|
-
end # module Worldfootball
|
@@ -1,100 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module Worldfootball
|
4
|
-
################################
|
5
|
-
# add more helpers
|
6
|
-
# move upstream for (re)use - why? why not?
|
7
|
-
|
8
|
-
## todo/check: what to do: if league is both included and excluded?
|
9
|
-
## include forces include? or exclude has the last word? - why? why not?
|
10
|
-
## Excludes match before includes,
|
11
|
-
## meaning that something that has been excluded cannot be included again
|
12
|
-
|
13
|
-
## todo - find "proper/classic" timezone ("winter time")
|
14
|
-
|
15
|
-
## Brasilia - Distrito Federal, Brasil (GMT-3) -- summer time?
|
16
|
-
## Ciudad de México, CDMX, México (GMT-5) -- summer time?
|
17
|
-
## Londres, Reino Unido (GMT+1)
|
18
|
-
## Madrid -- ?
|
19
|
-
## Lisboa -- ?
|
20
|
-
## Moskow -- ?
|
21
|
-
##
|
22
|
-
## todo/check - quick fix timezone offsets for leagues for now
|
23
|
-
## - find something better - why? why not?
|
24
|
-
## note: assume time is in GMT+1
|
25
|
-
OFFSETS = {
|
26
|
-
'eng.1' => -1,
|
27
|
-
'eng.2' => -1,
|
28
|
-
'eng.3' => -1,
|
29
|
-
'eng.4' => -1,
|
30
|
-
'eng.5' => -1,
|
31
|
-
|
32
|
-
'es.1' => -1,
|
33
|
-
'es.2' => -1,
|
34
|
-
|
35
|
-
'pt.1' => -1,
|
36
|
-
'pt.2' => -1,
|
37
|
-
|
38
|
-
'br.1' => -5,
|
39
|
-
'mx.1' => -7,
|
40
|
-
}
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
class Tool
|
46
|
-
def initialize( includes: nil,
|
47
|
-
excludes: nil )
|
48
|
-
## quick fix: move/handle empty array upstream!!!!
|
49
|
-
includes = nil if includes.is_a?(Array) && includes.empty?
|
50
|
-
|
51
|
-
@includes = includes
|
52
|
-
@excludes = excludes
|
53
|
-
end
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
def download( datasets )
|
58
|
-
datasets.each do |dataset|
|
59
|
-
league = dataset[0]
|
60
|
-
seasons = dataset[1]
|
61
|
-
|
62
|
-
with_filter( league ) do
|
63
|
-
seasons.each do |season|
|
64
|
-
puts "downloading #{league} #{season}..."
|
65
|
-
|
66
|
-
Worldfootball.schedule( league: league,
|
67
|
-
season: season )
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def convert( datasets )
|
74
|
-
datasets.each do |dataset|
|
75
|
-
league = dataset[0]
|
76
|
-
seasons = dataset[1]
|
77
|
-
|
78
|
-
with_filter( league ) do
|
79
|
-
seasons.each do |season|
|
80
|
-
Worldfootball.convert( league: league,
|
81
|
-
season: season,
|
82
|
-
offset: OFFSETS[ league ] )
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
#########################################
|
90
|
-
# more helpers
|
91
|
-
def with_filter( league, &blk )
|
92
|
-
return if @excludes && @excludes.find { |q| league.start_with?( q.downcase ) }
|
93
|
-
return if @includes && @includes.find { |q| league.start_with?( q.downcase ) }.nil?
|
94
|
-
blk.call()
|
95
|
-
end
|
96
|
-
|
97
|
-
end # class Tool
|
98
|
-
end # module Worldfootball
|
99
|
-
|
100
|
-
|