44 lines
1.1 KiB
Bash
Executable File
44 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
set -e
|
||
|
||
while getopts 'd:t:' opt
|
||
do
|
||
case $opt in
|
||
d)
|
||
db=$OPTARG
|
||
;;
|
||
t)
|
||
team=$OPTARG
|
||
;;
|
||
?)
|
||
exit 1
|
||
;;
|
||
esac
|
||
done
|
||
|
||
if [[ -z $db ]]
|
||
then
|
||
echo "$0:" '-d is required' >&2
|
||
exit 1
|
||
fi
|
||
|
||
if [[ -z $team ]]
|
||
then
|
||
echo "$0:" '-t is required' >&2
|
||
exit 1
|
||
fi
|
||
|
||
# grab most recently started live pk, if multiple
|
||
gamePk=$(mlblive schedule -t $team | jq '.dates[].games | map(select(.status.abstractGameState == "Live"))[-1].gamePk')
|
||
if [[ "$gamePk" = 'null' ]]
|
||
then
|
||
echo "$0:" 'no live games found' >&2
|
||
exit 1
|
||
fi
|
||
|
||
# grab select data from each response with jq, add 0 to the end of each line
|
||
# (to go in the 'posted' db column), then write each line as they come in to db
|
||
jqFilter='{gamePk} + (.gameData.teams | {awayTeam: .away.teamName, homeTeam: .home.teamName}) + (.liveData.plays.allPlays[] | (.result + (.about | {atBatIndex, halfInning, inning, isComplete, isScoringPlay, hasReview})))'
|
||
mlblive subscribe -g $gamePk | jq -Sc --unbuffered "$jqFilter" | sed -u 's/$/0/' | split -l 1 --filter="sqlite3 $db '.mode ascii' '.separator ' '.import /dev/stdin mlbdata'"
|