footballdata-api 0.4.2 → 0.4.4
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 +4 -4
- data/CHANGELOG.md +1 -1
- data/README.md +3 -4
- data/Rakefile +1 -0
- data/lib/footballdata/convert.rb +61 -10
- data/lib/footballdata/mods.rb +3 -0
- data/lib/footballdata/version.rb +1 -1
- data/lib/footballdata.rb +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5bd4d077f49907b80638105f2152e677540431fee3cee6b9022c48c8a3daadd
|
4
|
+
data.tar.gz: fa80a496acc7e4d3bc2a4095543716c56cf5497b27b994dd173a468ba220b041
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51c7867e5767815a885c9ea7c45df6ae8305bcc74ac8d377ac96de8be9c9577441b5d5fb9c88d40f53af7b0ca1798673cf4c07149291dc6daaa53dd5632be384
|
7
|
+
data.tar.gz: 25a7b9227fe453551d5f76b9a1f0f09c255ffa75e6f3aaa36f7ad5791130ecd42474b0da8c1b5f2f11c915665e601c8749a1ae1ce5efa6920d935d32a403bef7
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# footballdata-api - get football data via Daniel Freitag's football-data.org api v4
|
1
|
+
# footballdata-api - get football data via Daniel Freitag's football-data.org api v4
|
2
2
|
|
3
3
|
|
4
4
|
* home :: [github.com/sportdb/sport.db](https://github.com/sportdb/sport.db)
|
@@ -48,14 +48,13 @@ Footballdata.schedule( league: 'eng.2', season: '2020/21' )
|
|
48
48
|
|
49
49
|
Footballdata.schedule( league: 'de.1', season: '2020/21' )
|
50
50
|
Footballdata.schedule( league: 'es.1', season: '2020/21' )
|
51
|
-
|
52
51
|
Footballdata.schedule( league: 'fr.1', season: '2020/21' )
|
53
52
|
Footballdata.schedule( league: 'it.1', season: '2020/21' )
|
54
53
|
|
55
54
|
Footballdata.schedule( league: 'nl.1', season: '2020/21' )
|
56
55
|
Footballdata.schedule( league: 'pt.1', season: '2020/21' )
|
57
56
|
|
58
|
-
Footballdata.schedule( league: 'cl',
|
57
|
+
Footballdata.schedule( league: 'uefa.cl', season: '2020/21' )
|
59
58
|
|
60
59
|
# note: Brasileirão - season is a calendar year (NOT an academic year)
|
61
60
|
Footballdata.schedule( league: 'br.1', season: '2020' )
|
@@ -83,7 +82,7 @@ require 'footballdata'
|
|
83
82
|
'it.1',
|
84
83
|
'nl.1',
|
85
84
|
'pt.1',
|
86
|
-
'cl',
|
85
|
+
'uefa.cl',
|
87
86
|
].each do |league|
|
88
87
|
Footballdata.convert( league: league, season: '2020/21' )
|
89
88
|
end
|
data/Rakefile
CHANGED
data/lib/footballdata/convert.rb
CHANGED
@@ -3,6 +3,8 @@ module Footballdata
|
|
3
3
|
|
4
4
|
#######
|
5
5
|
## map round-like to higher-level stages
|
6
|
+
## fix - map by league codes
|
7
|
+
## or * (all)
|
6
8
|
STAGES = {
|
7
9
|
'REGULAR_SEASON' => ['Regular'],
|
8
10
|
|
@@ -37,6 +39,30 @@ STAGES = {
|
|
37
39
|
|
38
40
|
|
39
41
|
|
42
|
+
|
43
|
+
def self.find_team_country_code( name, teams: )
|
44
|
+
## add (fifa) country code e.g.
|
45
|
+
## Liverpool FC => Liverpool FC (ENG)
|
46
|
+
## or Liverpool FC => Liverpool FC (URU)
|
47
|
+
rec = teams[ name ]
|
48
|
+
if rec.nil?
|
49
|
+
puts "!! ERROR - no team record found in teams.json for #{name}"
|
50
|
+
pp teams.keys
|
51
|
+
exit 1
|
52
|
+
end
|
53
|
+
|
54
|
+
country_name = rec['area']['name']
|
55
|
+
country = Fifa.world.find_by_name( country_name )
|
56
|
+
if country.nil?
|
57
|
+
puts "!! ERROR - no country record found for #{country_name}"
|
58
|
+
exit 1
|
59
|
+
end
|
60
|
+
|
61
|
+
country.code
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
|
40
66
|
def self.convert( league:, season: )
|
41
67
|
|
42
68
|
season = Season( season ) ## cast (ensure) season class (NOT string, integer, etc.)
|
@@ -50,6 +76,14 @@ def self.convert( league:, season: )
|
|
50
76
|
data_teams = Webcache.read_json( teams_url )
|
51
77
|
|
52
78
|
|
79
|
+
## note - for internation club tournaments
|
80
|
+
## auto-add (fifa) country code e.g.
|
81
|
+
## Liverpool FC => Liverpool FC (ENG)
|
82
|
+
##
|
83
|
+
## todo/fix - move flag to league_info via .csv config - why? why not?
|
84
|
+
clubs_intl = ['uefa.cl',
|
85
|
+
'copa.l'].include?(league.downcase) ? true : false
|
86
|
+
|
53
87
|
|
54
88
|
## check for time zone
|
55
89
|
tz = find_zone!( league: league,
|
@@ -94,10 +128,17 @@ matches.each do |m|
|
|
94
128
|
team1 = m['homeTeam']['name'] || 'N.N.'
|
95
129
|
team2 = m['awayTeam']['name'] || 'N.N.'
|
96
130
|
|
97
|
-
|
131
|
+
## auto-fix copa.l 2024
|
132
|
+
## !! ERROR: unsupported match status >IN_PLAY< - sorry:
|
133
|
+
if m['status'] == 'IN_PLAY' &&
|
134
|
+
team1 == 'Club Aurora' && team2 == 'FBC Melgar'
|
135
|
+
m['status'] = 'FINISHED'
|
136
|
+
end
|
98
137
|
|
99
138
|
|
100
139
|
|
140
|
+
score = m['score']
|
141
|
+
|
101
142
|
group = m['group']
|
102
143
|
## GROUP_A
|
103
144
|
## shorten group to A|B|C etc.
|
@@ -151,8 +192,9 @@ matches.each do |m|
|
|
151
192
|
end
|
152
193
|
|
153
194
|
|
154
|
-
|
155
|
-
|
195
|
+
teams[ team1 ] += 1
|
196
|
+
teams[ team2 ] += 1
|
197
|
+
|
156
198
|
|
157
199
|
### mods - rename club names
|
158
200
|
unless mods.nil? || mods.empty?
|
@@ -160,13 +202,22 @@ matches.each do |m|
|
|
160
202
|
team2 = mods[ team2 ] if mods[ team2 ]
|
161
203
|
end
|
162
204
|
|
205
|
+
####
|
206
|
+
# auto-add (fifa) country code if int'l club tournament
|
207
|
+
if clubs_intl
|
208
|
+
## note - use "original" name (not moded) for lookup
|
209
|
+
team1_org = m['homeTeam']['name']
|
210
|
+
team2_org = m['awayTeam']['name']
|
211
|
+
if team1_org ## note - ignore no team/placeholder (e.g. N.N)
|
212
|
+
country_code = find_team_country_code( team1_org, teams: teams_by_name )
|
213
|
+
team1 = "#{team1} (#{country_code})"
|
214
|
+
end
|
215
|
+
if team2_org ## note - ignore no team/placeholder (e.g. N.N)
|
216
|
+
country_code = find_team_country_code( team2_org, teams: teams_by_name )
|
217
|
+
team2 = "#{team2} (#{country_code})"
|
218
|
+
end
|
219
|
+
end
|
163
220
|
|
164
|
-
## auto-fix copa.l 2024
|
165
|
-
## !! ERROR: unsupported match status >IN_PLAY< - sorry:
|
166
|
-
if m['status'] == 'IN_PLAY' &&
|
167
|
-
team1 == 'Club Aurora' && team2 == 'FBC Melgar'
|
168
|
-
m['status'] = 'FINISHED'
|
169
|
-
end
|
170
221
|
|
171
222
|
|
172
223
|
comments = ''
|
@@ -178,7 +229,7 @@ matches.each do |m|
|
|
178
229
|
stats['status'][m['status']] += 1 ## track status counts
|
179
230
|
|
180
231
|
case m['status']
|
181
|
-
when 'SCHEDULED', 'TIMED' ## , 'IN_PLAY'
|
232
|
+
when 'SCHEDULED', 'TIMED' ## , 'IN_PLAY', 'PAUSED'
|
182
233
|
ft = ''
|
183
234
|
ht = ''
|
184
235
|
when 'FINISHED'
|
data/lib/footballdata/mods.rb
CHANGED
@@ -12,6 +12,9 @@ module Footballdata
|
|
12
12
|
'br.1' => {
|
13
13
|
'América FC' => 'América Mineiro', # in year 2018 ??
|
14
14
|
},
|
15
|
+
'copa.l' => {
|
16
|
+
'América FC' => 'América Mineiro', # in year 2022
|
17
|
+
},
|
15
18
|
'pt.1' => {
|
16
19
|
'Vitória SC' => 'Vitória Guimarães', ## avoid easy confusion with Vitória SC <=> Vitória FC
|
17
20
|
'Vitória FC' => 'Vitória Setúbal',
|
data/lib/footballdata/version.rb
CHANGED
data/lib/footballdata.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: footballdata-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: football-timezones
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: fifa
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: webget
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|