sportradar 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +563 -25
- data/lib/sportradar.rb +37 -0
- data/lib/sportradar/client/api_request.rb +8 -0
- data/lib/sportradar/client/client.rb +10 -4
- data/lib/sportradar/client/configuration.rb +7 -2
- data/lib/sportradar/feeds/league_hierarchy.rb +12 -0
- data/lib/sportradar/feeds/league_schedule.rb +18 -0
- data/lib/sportradar/mlb/league_hierarchy.rb +1 -7
- data/lib/sportradar/mlb/league_schedule.rb +7 -12
- data/lib/sportradar/mlb/models/scoring_play.rb +2 -2
- data/lib/sportradar/nfl/boxscore.rb +9 -0
- data/lib/sportradar/nfl/extended_boxscore.rb +9 -0
- data/lib/sportradar/nfl/game_depth_chart.rb +9 -0
- data/lib/sportradar/nfl/game_injuries.rb +9 -0
- data/lib/sportradar/nfl/game_request.rb +24 -0
- data/lib/sportradar/nfl/game_roster.rb +9 -0
- data/lib/sportradar/nfl/game_statistics.rb +9 -0
- data/lib/sportradar/nfl/game_summary.rb +9 -0
- data/lib/sportradar/nfl/league_hierarchy.rb +9 -0
- data/lib/sportradar/nfl/league_schedule.rb +33 -0
- data/lib/sportradar/nfl/parsers/boxscore_parser.rb +124 -0
- data/lib/sportradar/nfl/play_by_play.rb +9 -0
- data/lib/sportradar/nfl/play_summary.rb +27 -0
- data/lib/sportradar/nfl/rankings.rb +9 -0
- data/lib/sportradar/nfl/season_statistics.rb +28 -0
- data/lib/sportradar/nfl/standings.rb +9 -0
- data/lib/sportradar/nfl/team_depth_chart.rb +17 -0
- data/lib/sportradar/nfl/team_depth_charts.rb +17 -0
- data/lib/sportradar/nfl/team_roster.rb +17 -0
- data/lib/sportradar/nfl/team_rosters.rb +17 -0
- data/lib/sportradar/nfl/team_statistics.rb +18 -0
- data/lib/sportradar/nfl/teams_request.rb +39 -0
- data/lib/sportradar/nfl/weekly_boxscore.rb +9 -0
- data/lib/sportradar/nfl/weekly_extended_boxscores.rb +20 -0
- data/lib/sportradar/nfl/weekly_game_depth_charts.rb +20 -0
- data/lib/sportradar/nfl/weekly_game_statistics.rb +21 -0
- data/lib/sportradar/nfl/weekly_game_summary.rb +21 -0
- data/lib/sportradar/nfl/weekly_leaders.rb +9 -0
- data/lib/sportradar/nfl/weekly_play_by_play.rb +21 -0
- data/lib/sportradar/nfl/weekly_schedule.rb +26 -0
- data/lib/sportradar/version.rb +1 -1
- data/sample.env +7 -0
- data/sportradar.gemspec +1 -1
- metadata +36 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e591077ce14b3b9fe91f220694d95d3c8cb280d
|
4
|
+
data.tar.gz: 14fdd483819317b7147600f8cb9f8d85821e6f91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be241a229c81a3a6fdfbac96aa95540442ef84e92544a2df733bc17022ecb181555fd4f149c83e9e659ce8dd5b13e008f89f02458459f584efc52f32f19b9111
|
7
|
+
data.tar.gz: c61700ef6f70663299d7663010e78c060ae8f206868e12885f6ff9c5565c1f9c9adef6fc242002886c7827ff7a257373bc5e03a4a3c557236df264cba2cfa3f3
|
data/README.md
CHANGED
@@ -2,14 +2,17 @@
|
|
2
2
|
|
3
3
|
Simple API client for [Sportradar API](http://developer.sportradar.us/).
|
4
4
|
|
5
|
-
Currently supports
|
5
|
+
Currently supports
|
6
|
+
|
7
|
+
* a subset of [Major League Baseball API](http://developer.sportradar.us/docs/MLB_API) endpoints
|
8
|
+
* complete set of [NFL Classic Feed API](http://developer.sportradar.us/docs/read/NFL_Classic) endpoints
|
6
9
|
|
7
10
|
## Installation
|
8
11
|
|
9
12
|
Add this line to your application's Gemfile:
|
10
13
|
|
11
14
|
```ruby
|
12
|
-
gem 'sportradar'
|
15
|
+
gem 'sportradar', '>= 0.0.4'
|
13
16
|
```
|
14
17
|
|
15
18
|
And then execute:
|
@@ -27,15 +30,26 @@ Or install it yourself as:
|
|
27
30
|
In your `.env`:
|
28
31
|
|
29
32
|
```
|
30
|
-
|
33
|
+
SPORTRADAR_ACCESS_LEVEL_MLB=t
|
31
34
|
SPORTRADAR_API_KEY_MLB=YOUR_API_KEY
|
35
|
+
|
36
|
+
SPORTRADAR_ACCESS_LEVEL_NBA=t
|
32
37
|
SPORTRADAR_API_KEY_NBA=YOUR_API_KEY
|
38
|
+
|
39
|
+
SPORTRADAR_ACCESS_LEVEL_NFL=t
|
33
40
|
SPORTRADAR_API_KEY_NFL=YOUR_API_KEY
|
41
|
+
|
42
|
+
SPORTRADAR_ACCESS_LEVEL_NHL=t
|
34
43
|
SPORTRADAR_API_KEY_NHL=YOUR_API_KEY
|
44
|
+
|
35
45
|
SPORTRADAR_FILE_PATH=/path/to/save/responses
|
36
46
|
```
|
37
47
|
|
38
|
-
`SPORTRADAR_ACCESS_LEVEL` is `t` or 'p'
|
48
|
+
`SPORTRADAR_ACCESS_LEVEL` is `t` or 'p' (or 'rt')
|
49
|
+
|
50
|
+
Note: Currently only MLB and NFL support.
|
51
|
+
|
52
|
+
Important: This is a breaking change from version 0.0.3 that had a global access level.
|
39
53
|
|
40
54
|
### Console
|
41
55
|
|
@@ -65,34 +79,74 @@ Defaults to and supports API version 5 only.
|
|
65
79
|
* `Sportradar::Mlb::TeamRosters.new().fetch`
|
66
80
|
* `Sportradar::Mlb::Venues.new().fetch`
|
67
81
|
|
68
|
-
Note: `.save` vs `.fetch` will store in the path specified in `SPORTRADAR_FILE_PATH`.
|
82
|
+
Note: `.save` vs `.fetch` will store in the path specified in `SPORTRADAR_FILE_PATH`.
|
69
83
|
|
70
|
-
|
84
|
+
#### Bulk Saves
|
85
|
+
|
86
|
+
Some helpers will call .save for each response as separate items.
|
87
|
+
|
88
|
+
* `Sportradar::Mlb::DailyGameSummary.new(date: Date.today).perform`
|
89
|
+
* `Sportradar::Mlb::DailyPlayByPlay.new(date: Date.today).perform`
|
90
|
+
|
91
|
+
### Football/NFL
|
92
|
+
|
93
|
+
Defaults to and supports NFL Classic API feed version 1 only (not Official).
|
94
|
+
|
95
|
+
#### API Requests
|
71
96
|
|
72
|
-
* `
|
73
|
-
* `
|
74
|
-
* `
|
75
|
-
* `
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
* `
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
* `
|
86
|
-
|
87
|
-
|
88
|
-
|
97
|
+
* `Sportradar::Nfl::LeagueHierarchy.new().fetch`
|
98
|
+
* `Sportradar::Nfl::WeeklySchedule.new(year: '2016', interval_type: <reg|pre|pst>, week: <0..17>).fetch`
|
99
|
+
* `Sportradar::Nfl::LeagueSchedule.new(year: '2016', interval_type: <reg|pre|pst>).fetch`
|
100
|
+
* `Sportradar::Nfl::GameStatistics.new(week: 1,
|
101
|
+
year: 2015,
|
102
|
+
interval_type: 'reg',
|
103
|
+
away_team_abbreviation: 'PIT',
|
104
|
+
home_team_abbreviation: 'NE').fetch`
|
105
|
+
* `Sportradar::Nfl::GameSummary.new(week: 1,
|
106
|
+
year: 2015,
|
107
|
+
interval_type: 'reg',
|
108
|
+
away_team_abbreviation: 'PIT',
|
109
|
+
home_team_abbreviation: 'NE').fetch`
|
110
|
+
* `Sportradar::Nfl::PlayByPlay.new(week: 1,
|
111
|
+
year: 2015,
|
112
|
+
interval_type: 'reg',
|
113
|
+
away_team_abbreviation: 'PIT',
|
114
|
+
home_team_abbreviation: 'NE').fetch`
|
115
|
+
* `Sportradar::Nfl::PlaySummary.new(week: 1,
|
116
|
+
year: 2015,
|
117
|
+
interval_type: 'reg',
|
118
|
+
away_team_abbreviation: 'PIT',
|
119
|
+
home_team_abbreviation: 'NE',
|
120
|
+
play_id: '4788eac3-c59e-4f82-94ef-d449ac6d6fca').fetch`
|
121
|
+
* `Sportradar::Nfl::Boxscore.new(week: 1,
|
122
|
+
year: 2015,
|
123
|
+
away_team_abbreviation: 'PIT',
|
124
|
+
home_team_abbreviation: 'NE').fetch`
|
125
|
+
* `Sportradar::Nfl::ExtendedBoxscore.new(week: 1,
|
126
|
+
year: 2015,
|
127
|
+
away_team_abbreviation: 'PIT',
|
128
|
+
home_team_abbreviation: 'NE').fetch`
|
129
|
+
* `Sportradar::Nfl::WeeklyBoxscore.new(week: 1, year: 2015).fetch`
|
130
|
+
* `Sportradar::Nfl::TeamRoster.new(team_abbreviation: 'NE').fetch`
|
131
|
+
* `Sportradar::Nfl::GameDepthChart.new(week: 1, year: 2015, away_team_abbreviation: 'PIT', home_team_abbreviation: 'NE').fetch`
|
132
|
+
* `Sportradar::Nfl::TeamDepthChart.new(team_abbreviation: 'NE').fetch`
|
133
|
+
* `Sportradar::Nfl::WeeklyLeaders.new(week: 1, year: 2015).fetch`
|
134
|
+
* `Sportradar::Nfl::Standings.new(year: 2015, interval_type: <reg|pre|pst>).fetch`
|
135
|
+
* `Sportradar::Nfl::Rankings.new(year: 2015).fetch`
|
136
|
+
* `Sportradar::Nfl::TeamStatistics.new(year: 2015, interval_type: 'reg', team_abbreviation: 'NE').fetch`
|
89
137
|
|
90
138
|
#### Bulk Saves
|
91
139
|
|
92
140
|
Some helpers will call `.save` for each response as separate items.
|
93
141
|
|
94
|
-
* `Sportradar::
|
95
|
-
* `Sportradar::
|
142
|
+
* `Sportradar::Nfl::TeamRosters.perform`
|
143
|
+
* `Sportradar::Nfl::TeamDepthCharts.perform`
|
144
|
+
* `Sportradar::Nfl::WeeklyExtendedBoxscores.perform(year: 2015, interval_type: 'reg', week: 1)`
|
145
|
+
* `Sportradar::Nfl::WeeklyGameDepthCharts.perform(year: 2015, interval_type: 'reg', week: 1)`
|
146
|
+
* `Sportradar::Nfl::WeeklyGameStatistics.perform(year: 2015, interval_type: 'reg', week: 2)`
|
147
|
+
* `Sportradar::Nfl::WeeklyGameSummary.perform(year: 2015, interval_type: 'reg', week: 2)`
|
148
|
+
* `Sportradar::Nfl::WeeklyPlayByPlay.perform(year: 2015, interval_type: 'reg', week: 1)`
|
149
|
+
* `Sportradar::Nfl::SeasonStatistics.perform(year: 2015, interval_type: 'reg')`
|
96
150
|
|
97
151
|
### Model Helpers
|
98
152
|
|
@@ -152,6 +206,490 @@ sp.home_team_runner_ids
|
|
152
206
|
"8ec56596-5b8b-41f8-88a7-384f20b8b6a7"]
|
153
207
|
```
|
154
208
|
|
209
|
+
#### Play by Play, At Bats and Pitches
|
210
|
+
|
211
|
+
The `Sportradar::Mlb::Parsers::PlayByPlayParser.new(game_play_by_play: g.game_play_by_play)` takes thes play-by-play json and can return
|
212
|
+
|
213
|
+
* `.at_bats`
|
214
|
+
* `.at_bat_summary`
|
215
|
+
* `.pitches`
|
216
|
+
* `.pitch_summary`
|
217
|
+
|
218
|
+
Both the `at_bats` and `pitch` are models with each attribute, like `pitch_speed` or `hitter_id`.
|
219
|
+
|
220
|
+
The summary convenience methods list each at bat or pitch as text.
|
221
|
+
|
222
|
+
#### At Bat Summary
|
223
|
+
|
224
|
+
Given the play-by-play json, `Sportradar::Mlb::Parsers::PlayByPlayParser.new(game_play_by_play: g.game_play_by_play).at_bat_summary` returns:
|
225
|
+
|
226
|
+
```
|
227
|
+
T of 1: Ruben Tejada strikes out swinging.
|
228
|
+
T of 1: Grant Green singles to shallow center field.
|
229
|
+
T of 1: Brandon Belt walks. Grant Green to second.
|
230
|
+
T of 1: Buster Posey singles to shallow right field. Brandon Belt to second. Grant Green to third.
|
231
|
+
T of 1: Brandon Crawford strikes out swinging.
|
232
|
+
T of 1: Mac Williamson grounds out to third base, Jake Lamb to Paul Goldschmidt.
|
233
|
+
B of 1: Jean Segura flies out to shallow right field to Mac Williamson.
|
234
|
+
B of 1: Michael Bourn singles to shallow infield.
|
235
|
+
B of 1: Paul Goldschmidt reaches on a fielder's choice to second base. Michael Bourn out at second.
|
236
|
+
B of 1: Jake Lamb strikes out swinging.
|
237
|
+
T of 2: Trevor Brown grounds out to third base, Jake Lamb to Paul Goldschmidt.
|
238
|
+
T of 2: Jarrett Parker grounds out to second base, Philip Gosselin to Paul Goldschmidt.
|
239
|
+
T of 2: Albert Suarez strikes out swinging.
|
240
|
+
B of 2: Yasmany Tomas grounds out to shortstop, Brandon Crawford to Buster Posey.
|
241
|
+
B of 2: Philip Gosselin doubles to deep left center field.
|
242
|
+
B of 2: Brandon Drury doubles to deep left center field. Philip Gosselin scores.
|
243
|
+
B of 2: Tuffy Gosewisch singles to shallow left field. Brandon Drury to third.
|
244
|
+
B of 2: Robbie Ray out on a sacrifice bunt to shallow infield, Buster Posey to Grant Green. Tuffy Gosewisch to second.
|
245
|
+
B of 2: Jean Segura flies out to center field to Jarrett Parker.
|
246
|
+
T of 3: Ruben Tejada lines out to left center field to Brandon Drury.
|
247
|
+
T of 3: Grant Green singles to center field.
|
248
|
+
T of 3: Brandon Belt singles to right field. Grant Green to second.
|
249
|
+
T of 3: Buster Posey lines out to center field to Michael Bourn.
|
250
|
+
T of 3: Brandon Crawford hit by pitch. Brandon Belt to second. Grant Green to third.
|
251
|
+
T of 3: Mac Williamson singles to shallow center field. Brandon Crawford to third. Brandon Belt scores. Grant Green scores.
|
252
|
+
T of 3: Trevor Brown called out on strikes.
|
253
|
+
B of 3: Michael Bourn grounds out to shortstop, Ruben Tejada to Buster Posey.
|
254
|
+
B of 3: Paul Goldschmidt grounds out to shortstop, Brandon Crawford to Buster Posey.
|
255
|
+
B of 3: Jake Lamb strikes out swinging.
|
256
|
+
T of 4: Jarrett Parker lines out to left field to Brandon Drury.
|
257
|
+
T of 4: Albert Suarez singles to shallow center field.
|
258
|
+
T of 4: Ruben Tejada doubles to deep center field. Albert Suarez to third.
|
259
|
+
T of 4: Grant Green flies out to left field to Brandon Drury.
|
260
|
+
T of 4: Brandon Belt doubles to left field. Ruben Tejada scores. Albert Suarez scores.
|
261
|
+
T of 4: Buster Posey walks.
|
262
|
+
T of 4: Brandon Crawford strikes out swinging.
|
263
|
+
B of 4: Yasmany Tomas strikes out swinging.
|
264
|
+
B of 4: Philip Gosselin grounds out to first base, Buster Posey to Albert Suarez.
|
265
|
+
B of 4: Brandon Drury grounds out to shortstop, Brandon Crawford to Buster Posey.
|
266
|
+
T of 5: Mac Williamson grounds out to third base, Jake Lamb to Paul Goldschmidt.
|
267
|
+
T of 5: Trevor Brown grounds out to third base, Jake Lamb to Paul Goldschmidt.
|
268
|
+
T of 5: Jarrett Parker called out on strikes.
|
269
|
+
B of 5: Tuffy Gosewisch grounds out to third base, Ruben Tejada to Brandon Crawford to Buster Posey.
|
270
|
+
B of 5: Robbie Ray grounds out to second base, Grant Green to Buster Posey.
|
271
|
+
B of 5: Jean Segura doubles to deep right field.
|
272
|
+
B of 5: Michael Bourn strikes out swinging.
|
273
|
+
T of 6: Albert Suarez strikes out swinging.
|
274
|
+
T of 6: Ruben Tejada grounds out to third base, Jake Lamb to Paul Goldschmidt.
|
275
|
+
T of 6: Grant Green strikes out swinging.
|
276
|
+
B of 6: Paul Goldschmidt homers to center field.
|
277
|
+
B of 6: Jake Lamb lines out to deep center field to Jarrett Parker.
|
278
|
+
B of 6: Yasmany Tomas grounds out to second base, Grant Green to Buster Posey.
|
279
|
+
B of 6: Philip Gosselin called out on strikes.
|
280
|
+
T of 7: Brandon Belt strikes out swinging.
|
281
|
+
T of 7: Buster Posey walks.
|
282
|
+
T of 7: Brandon Crawford strikes out on a foul tip.
|
283
|
+
T of 7: Mac Williamson lines out to deep left field to Brandon Drury.
|
284
|
+
B of 7: Brandon Drury flies out to deep left field to Brandon Belt.
|
285
|
+
B of 7: Tuffy Gosewisch singles to left field.
|
286
|
+
B of 7: Chris Herrmann strikes out swinging.
|
287
|
+
B of 7: Jean Segura grounds out to shallow infield, George Kontos to Buster Posey.
|
288
|
+
T of 8: Trevor Brown flies out to right center field to Yasmany Tomas.
|
289
|
+
T of 8: Jarrett Parker strikes out swinging.
|
290
|
+
T of 8: Conor Gillaspie grounds out to second base, Philip Gosselin to Paul Goldschmidt.
|
291
|
+
B of 8: Michael Bourn grounds out to first base to Buster Posey.
|
292
|
+
B of 8: Paul Goldschmidt reaches on error. Fielding error by Gerald Posey.
|
293
|
+
B of 8: Jake Lamb homers to right field. Paul Goldschmidt scores.
|
294
|
+
B of 8: Yasmany Tomas grounds out to first base, Buster Posey to Cory Gearrin.
|
295
|
+
B of 8: Philip Gosselin walks.
|
296
|
+
B of 8: Brandon Drury flies out to center field to Jarrett Parker.
|
297
|
+
T of 9: Ruben Tejada called out on strikes.
|
298
|
+
T of 9: Grant Green grounds out to shortstop, Jean Segura to Paul Goldschmidt.
|
299
|
+
T of 9: Brandon Belt walks.
|
300
|
+
T of 9: Buster Posey lines out to deep left field to Brandon Drury.
|
301
|
+
B of 9: Tuffy Gosewisch strikes out swinging.
|
302
|
+
B of 9: Rickie Weeks walks.
|
303
|
+
B of 9: Jean Segura lines out to shallow infield to Hunter Strickland. Rickie Weeks doubled off first.
|
304
|
+
T of 10: Brandon Crawford flies out to deep right center field to Yasmany Tomas.
|
305
|
+
T of 10: Mac Williamson strikes out on a foul tip.
|
306
|
+
T of 10: Trevor Brown called out on strikes.
|
307
|
+
B of 10: Michael Bourn grounds out to second base, Grant Green to Buster Posey.
|
308
|
+
B of 10: Paul Goldschmidt grounds out to shortstop, Brandon Crawford to Buster Posey.
|
309
|
+
B of 10: Jake Lamb strikes out swinging.
|
310
|
+
T of 11: Jarrett Parker walks.
|
311
|
+
T of 11: Ramiro Pena doubles to deep right field. Jarrett Parker scores.
|
312
|
+
T of 11: Ruben Tejada out on a sacrifice bunt to shallow infield, Enrique Burgos to Paul Goldschmidt. Ramiro Pena to third.
|
313
|
+
T of 11: Angel Pagan strikes out swinging.
|
314
|
+
T of 11: Brandon Belt pops out to shallow left field to Jake Lamb.
|
315
|
+
B of 11: Yasmany Tomas singles to shallow left field.
|
316
|
+
B of 11: Philip Gosselin out on a sacrifice bunt to shallow infield, Ruben Tejada to Ramiro Pena. Yasmany Tomas to second.
|
317
|
+
B of 11: Brandon Drury grounds out to third base, Ruben Tejada to Buster Posey.
|
318
|
+
B of 11: Welington Castillo walks.
|
319
|
+
B of 11: Peter O'Brien strikes out swinging.
|
320
|
+
```
|
321
|
+
|
322
|
+
#### Pitch Summary
|
323
|
+
|
324
|
+
Given the play-by-play json, `Sportradar::Mlb::Parsers::PlayByPlayParser.new(game_play_by_play: g.game_play_by_play).pitch_summary` returns the type and result of each pitch:
|
325
|
+
|
326
|
+
```
|
327
|
+
Fastball = Strike Looking
|
328
|
+
Fastball = Foul Ball
|
329
|
+
Fastball = Ball
|
330
|
+
Fastball = Foul Ball
|
331
|
+
Slider = Strike Swinging
|
332
|
+
Fastball = Strike Looking
|
333
|
+
Fastball = Foul Ball
|
334
|
+
Fastball = Single
|
335
|
+
Slider = Ball
|
336
|
+
Slider = Ball
|
337
|
+
Fastball = Ball
|
338
|
+
Fastball = Ball
|
339
|
+
Fastball = Foul Tip
|
340
|
+
Fastball = Single
|
341
|
+
Slider = Strike Swinging
|
342
|
+
Slider = Dirt Ball
|
343
|
+
Fastball = Strike Looking
|
344
|
+
Fastball = Ball
|
345
|
+
Fastball = Ball
|
346
|
+
Slider = Foul Ball
|
347
|
+
Fastball = Strike Swinging
|
348
|
+
Fastball = Strike Looking
|
349
|
+
Fastball = Ball
|
350
|
+
Fastball = Foul Ball
|
351
|
+
Slider = Ball
|
352
|
+
Fastball = Ground Out
|
353
|
+
Sinker = Ball
|
354
|
+
Fastball = Strike Looking
|
355
|
+
Sinker = Ball
|
356
|
+
Slider = Fly Out
|
357
|
+
Sinker = Ball
|
358
|
+
Fastball = Single
|
359
|
+
Slider = Strike Looking
|
360
|
+
Sinker = Dirt Ball
|
361
|
+
Sinker = Strike Swinging
|
362
|
+
Sinker = Foul Ball
|
363
|
+
Fastball = Ball
|
364
|
+
Slider = Fielders Choice
|
365
|
+
Fastball = Ball
|
366
|
+
Changeup = Foul Ball
|
367
|
+
Sinker = Ball
|
368
|
+
Fastball = Foul Ball
|
369
|
+
Curveball = Foul Ball
|
370
|
+
Curveball = Strike Swinging
|
371
|
+
Changeup = Ball
|
372
|
+
Fastball = Ground Out
|
373
|
+
Fastball = Strike Looking
|
374
|
+
Fastball = Foul Ball
|
375
|
+
Fastball = Ground Out
|
376
|
+
Fastball = Strike Looking
|
377
|
+
Fastball = Ball
|
378
|
+
Fastball = Ball
|
379
|
+
Fastball = Strike Swinging
|
380
|
+
Fastball = Strike Swinging
|
381
|
+
Sinker = Strike Looking
|
382
|
+
Slider = Foul Ball
|
383
|
+
Slider = Ground Out
|
384
|
+
Fastball = Strike Looking
|
385
|
+
Fastball = Ball
|
386
|
+
Changeup = Foul Ball
|
387
|
+
Sinker = Ball
|
388
|
+
Sinker = Ball
|
389
|
+
Slider = Double
|
390
|
+
Sinker = Double
|
391
|
+
Slider = Ball
|
392
|
+
Fastball = Strike Looking
|
393
|
+
Sinker = Strike Swinging
|
394
|
+
Curveball = Dirt Ball
|
395
|
+
Slider = Ball
|
396
|
+
Sinker = Single
|
397
|
+
Sinker = Foul Ball
|
398
|
+
Slider = Ball
|
399
|
+
Sinker = Sacrifice Bunt
|
400
|
+
Curveball = Ball
|
401
|
+
Fastball = Ball
|
402
|
+
Slider = Strike Looking
|
403
|
+
Slider = Fly Out
|
404
|
+
Fastball = Strike Looking
|
405
|
+
Curveball = Ball
|
406
|
+
Fastball = Line Out
|
407
|
+
Slider = Ball
|
408
|
+
Fastball = Single
|
409
|
+
Fastball = Strike Looking
|
410
|
+
Fastball = Foul Ball
|
411
|
+
Slider = Foul Ball
|
412
|
+
Fastball = Ball
|
413
|
+
Fastball = Foul Ball
|
414
|
+
Slider = Single
|
415
|
+
Fastball = Foul Ball
|
416
|
+
Slider = Line Out
|
417
|
+
Fastball = Strike Looking
|
418
|
+
Fastball = Hit By Pitch
|
419
|
+
Fastball = Single
|
420
|
+
Fastball = Strike Looking
|
421
|
+
Fastball = Strike Swinging
|
422
|
+
Fastball = Strike Looking
|
423
|
+
Sinker = Strike Looking
|
424
|
+
Curveball = Foul Ball
|
425
|
+
Sinker = Foul Ball
|
426
|
+
Fastball = Ground Out
|
427
|
+
Sinker = Ball
|
428
|
+
Slider = Ball
|
429
|
+
Fastball = Strike Looking
|
430
|
+
Slider = Strike Looking
|
431
|
+
Slider = Ball
|
432
|
+
Fastball = Foul Ball
|
433
|
+
Slider = Ground Out
|
434
|
+
Curveball = Ball
|
435
|
+
Changeup = Strike Looking
|
436
|
+
Curveball = Ball
|
437
|
+
Sinker = Foul Ball
|
438
|
+
Sinker = Foul Ball
|
439
|
+
Sinker = Foul Ball
|
440
|
+
Sinker = Ball
|
441
|
+
Curveball = Strike Swinging
|
442
|
+
Fastball = Line Out
|
443
|
+
Fastball = Strike Looking
|
444
|
+
Fastball = Ball
|
445
|
+
Fastball = Single
|
446
|
+
Fastball = Ball
|
447
|
+
Fastball = Foul Ball
|
448
|
+
Slider = Ball
|
449
|
+
Slider = Ball
|
450
|
+
Fastball = Double
|
451
|
+
Fastball = Ball
|
452
|
+
Fastball = Fly Out
|
453
|
+
Slider = Strike Swinging
|
454
|
+
Fastball = Strike Swinging
|
455
|
+
Fastball = Foul Ball
|
456
|
+
Fastball = Double
|
457
|
+
Intentional Ball = iBall
|
458
|
+
Intentional Ball = iBall
|
459
|
+
Intentional Ball = iBall
|
460
|
+
Intentional Ball = iBall
|
461
|
+
Slider = Strike Swinging
|
462
|
+
Fastball = Ball
|
463
|
+
Slider = Strike Swinging
|
464
|
+
Slider = Foul Ball
|
465
|
+
Fastball = Ball
|
466
|
+
Slider = Strike Swinging
|
467
|
+
Slider = Strike Swinging
|
468
|
+
Fastball = Ball
|
469
|
+
Slider = Foul Ball
|
470
|
+
Slider = Foul Ball
|
471
|
+
Fastball = Ball
|
472
|
+
Slider = Ball
|
473
|
+
Sinker = Strike Swinging
|
474
|
+
Slider = Ball
|
475
|
+
Fastball = Strike Looking
|
476
|
+
Sinker = Ground Out
|
477
|
+
Slider = Ball
|
478
|
+
Slider = Ball
|
479
|
+
Slider = Strike Looking
|
480
|
+
Fastball = Ground Out
|
481
|
+
Fastball = Strike Looking
|
482
|
+
Slider = Strike Looking
|
483
|
+
Slider = Foul Ball
|
484
|
+
Fastball = Foul Ball
|
485
|
+
Slider = Ball
|
486
|
+
Fastball = Ground Out
|
487
|
+
Slider = Ground Out
|
488
|
+
Slider = Ball
|
489
|
+
Slider = Strike Swinging
|
490
|
+
Slider = Strike Swinging
|
491
|
+
Fastball = Ball
|
492
|
+
Slider = Strike Looking
|
493
|
+
Sinker = Ground Out
|
494
|
+
Sinker = Strike Looking
|
495
|
+
Sinker = Foul Ball
|
496
|
+
Curveball = Ball
|
497
|
+
Curveball = Foul Ball
|
498
|
+
Fastball = Ground Out
|
499
|
+
Sinker = Foul Ball
|
500
|
+
Fastball = Double
|
501
|
+
Curveball = Strike Looking
|
502
|
+
Slider = Dirt Ball
|
503
|
+
Fastball = Foul Ball
|
504
|
+
Sinker = Strike Swinging
|
505
|
+
Fastball = Foul Ball
|
506
|
+
Slider = Foul Ball
|
507
|
+
Fastball = Foul Ball
|
508
|
+
Slider = Strike Swinging
|
509
|
+
Slider = Strike Looking
|
510
|
+
Slider = Ground Out
|
511
|
+
Slider = Strike Swinging
|
512
|
+
Fastball = Foul Ball
|
513
|
+
Slider = Strike Swinging
|
514
|
+
Slider = Ball
|
515
|
+
Slider = Foul Ball
|
516
|
+
Slider = Strike Swinging
|
517
|
+
Fastball = Ball
|
518
|
+
Curveball = Homerun
|
519
|
+
Changeup = Ball
|
520
|
+
Sinker = Line Out
|
521
|
+
Fastball = Ball
|
522
|
+
Fastball = Ball
|
523
|
+
Sinker = Ball
|
524
|
+
Sinker = Strike Looking
|
525
|
+
Sinker = Ground Out
|
526
|
+
Fastball = Foul Ball
|
527
|
+
Sinker = Ball
|
528
|
+
Sinker = Foul Ball
|
529
|
+
Sinker = Foul Ball
|
530
|
+
Sinker = Strike Looking
|
531
|
+
Slider = Ball
|
532
|
+
Sinker = Foul Ball
|
533
|
+
Sinker = Foul Ball
|
534
|
+
Sinker = Ball
|
535
|
+
Slider = Strike Swinging
|
536
|
+
Fastball = Ball
|
537
|
+
Slider = Ball
|
538
|
+
Changeup = Ball
|
539
|
+
Sinker = Foul Ball
|
540
|
+
Sinker = Ball
|
541
|
+
Sinker = Strike Swinging
|
542
|
+
Fastball = Ball
|
543
|
+
Slider = Foul Ball
|
544
|
+
Sinker = Ball
|
545
|
+
Fastball = Foul Tip
|
546
|
+
Fastball = Ball
|
547
|
+
Slider = Strike Looking
|
548
|
+
Fastball = Line Out
|
549
|
+
Slider = Fly Out
|
550
|
+
Cutter = Strike Looking
|
551
|
+
Cutter = Single
|
552
|
+
Fastball = Strike Swinging
|
553
|
+
Fastball = Foul Ball
|
554
|
+
Fastball = Ball
|
555
|
+
Fastball = Ball
|
556
|
+
Fastball = Ball
|
557
|
+
Fastball = Strike Swinging
|
558
|
+
Fastball = Ground Out
|
559
|
+
Slider = Ball
|
560
|
+
Fastball = Foul Ball
|
561
|
+
Slider = Fly Out
|
562
|
+
Fastball = Ball
|
563
|
+
Changeup = Foul Ball
|
564
|
+
Fastball = Ball
|
565
|
+
Fastball = Foul Ball
|
566
|
+
Fastball = Ball
|
567
|
+
Fastball = Strike Swinging
|
568
|
+
Fastball = Strike Looking
|
569
|
+
Fastball = Ground Out
|
570
|
+
Sinker = Ground Out
|
571
|
+
Sinker = Ball
|
572
|
+
Sinker = Foul Ball
|
573
|
+
Slider = Reached On Error
|
574
|
+
Sinker = Ball
|
575
|
+
Slider = Strike Swinging
|
576
|
+
Sinker = Foul Ball
|
577
|
+
Changeup = Ball
|
578
|
+
Changeup = Ball
|
579
|
+
Slider = Homerun
|
580
|
+
Sinker = Ball
|
581
|
+
Sinker = Ball
|
582
|
+
Sinker = Ground Out
|
583
|
+
Sinker = Ball
|
584
|
+
Slider = Ball
|
585
|
+
Sinker = Ball
|
586
|
+
Sinker = Ball
|
587
|
+
Fastball = Foul Ball
|
588
|
+
Slider = Ball
|
589
|
+
Sinker = Ball
|
590
|
+
Slider = Strike Looking
|
591
|
+
Slider = Fly Out
|
592
|
+
Sinker = Ball
|
593
|
+
Sinker = Strike Looking
|
594
|
+
Sinker = Ball
|
595
|
+
Sinker = Foul Ball
|
596
|
+
Sinker = Ball
|
597
|
+
Sinker = Foul Ball
|
598
|
+
Sinker = Strike Looking
|
599
|
+
Sinker = Foul Ball
|
600
|
+
Changeup = Strike Swinging
|
601
|
+
Curveball = Ball
|
602
|
+
Curveball = Ball
|
603
|
+
Sinker = Foul Ball
|
604
|
+
Sinker = Foul Ball
|
605
|
+
Changeup = Foul Ball
|
606
|
+
Changeup = Ground Out
|
607
|
+
Changeup = Ball
|
608
|
+
Sinker = Ball
|
609
|
+
Sinker = Ball
|
610
|
+
Sinker = Strike Looking
|
611
|
+
Sinker = Ball
|
612
|
+
Sinker = Line Out
|
613
|
+
Curveball = Ball
|
614
|
+
Fastball = Strike Swinging
|
615
|
+
Fastball = Strike Looking
|
616
|
+
Fastball = Foul Ball
|
617
|
+
Fastball = Strike Swinging
|
618
|
+
Fastball = Strike Swinging
|
619
|
+
Fastball = Ball
|
620
|
+
Curveball = Ball
|
621
|
+
Fastball = Foul Ball
|
622
|
+
Curveball = Ball
|
623
|
+
Fastball = Foul Ball
|
624
|
+
Fastball = Ball
|
625
|
+
Curveball = Foul Ball
|
626
|
+
Curveball = Line Out
|
627
|
+
Changeup = Fly Out
|
628
|
+
Fastball = Strike Looking
|
629
|
+
Curveball = Ball
|
630
|
+
Changeup = Strike Looking
|
631
|
+
Splitter = Foul Tip
|
632
|
+
Fastball = Ball
|
633
|
+
Fastball = Ball
|
634
|
+
Changeup = Ball
|
635
|
+
Fastball = Strike Looking
|
636
|
+
Changeup = Strike Swinging
|
637
|
+
Changeup = Foul Ball
|
638
|
+
Changeup = Foul Ball
|
639
|
+
Fastball = Foul Ball
|
640
|
+
Fastball = Strike Looking
|
641
|
+
Fastball = Strike Looking
|
642
|
+
Cutter = Strike Looking
|
643
|
+
Fastball = Ball
|
644
|
+
Fastball = Ground Out
|
645
|
+
Fastball = Foul Ball
|
646
|
+
Changeup = Ball
|
647
|
+
Changeup = Ball
|
648
|
+
Fastball = Ground Out
|
649
|
+
Changeup = Ball
|
650
|
+
Fastball = Strike Swinging
|
651
|
+
Fastball = Strike Looking
|
652
|
+
Fastball = Strike Swinging
|
653
|
+
Slider = Ball
|
654
|
+
Fastball = Strike Swinging
|
655
|
+
Fastball = Ball
|
656
|
+
Slider = Ball
|
657
|
+
Slider = Foul Ball
|
658
|
+
Fastball = Foul Ball
|
659
|
+
Fastball = Ball
|
660
|
+
Fastball = Ball
|
661
|
+
Slider = Double
|
662
|
+
Slider = Foul Ball
|
663
|
+
Fastball = Sacrifice Bunt
|
664
|
+
Slider = Strike Looking
|
665
|
+
Fastball = Strike Looking
|
666
|
+
Fastball = Strike Swinging
|
667
|
+
Slider = Ball
|
668
|
+
Slider = Strike Looking
|
669
|
+
Fastball = Ball
|
670
|
+
Fastball = Strike Swinging
|
671
|
+
Fastball = Ball
|
672
|
+
Slider = Pop Out
|
673
|
+
Fastball = Foul Ball
|
674
|
+
Fastball = Single
|
675
|
+
Fastball = Ball
|
676
|
+
Fastball = Sacrifice Bunt
|
677
|
+
Fastball = Ball
|
678
|
+
Curveball = Strike Looking
|
679
|
+
Slider = Ball
|
680
|
+
Curveball = Ball
|
681
|
+
Curveball = Ground Out
|
682
|
+
Fastball = Ball
|
683
|
+
Fastball = Ball
|
684
|
+
Fastball = Ball
|
685
|
+
Fastball = Ball
|
686
|
+
Fastball = Strike Swinging
|
687
|
+
Curveball = Ball
|
688
|
+
Fastball = Foul Ball
|
689
|
+
Fastball = Ball
|
690
|
+
Curveball = Strike Swinging
|
691
|
+
```
|
692
|
+
|
155
693
|
## Development
|
156
694
|
|
157
695
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|