working baseline with force, daily and random quotes
parent
cf3cd69ed8
commit
38f66f5bb5
@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
usage $0 [-d|r][-f][-h]
|
||||
-d, --daily get the QOTD
|
||||
-r, --random get a random quote
|
||||
-f, --force force update the quote pool
|
||||
-h, --help display this message
|
||||
EOF
|
||||
}
|
||||
|
||||
API="https://zenquotes.io/api"
|
||||
WORKING_DIR="$HOME/.local/share/quotes"
|
||||
|
||||
# create directory on fresh installs
|
||||
if [ ! -d "$WORKING_DIR" ] ; then
|
||||
mkdir -p "$WORKING_DIR"
|
||||
fi
|
||||
|
||||
cd "$WORKING_DIR"
|
||||
|
||||
daily() {
|
||||
TODAY=$(date +%m-%d)
|
||||
|
||||
if [ ! -f "daily_$TODAY.json" ] ; then
|
||||
# prevent multiple requests per day
|
||||
rm daily_*.json
|
||||
curl -fs "$API/today" | gojq '.[0]' > "daily_$TODAY.json"
|
||||
fi
|
||||
|
||||
cat "daily_$TODAY.json"
|
||||
}
|
||||
|
||||
random() {
|
||||
# have to be careful not to exceed 10 requests per minute
|
||||
curl -fs "$API/random" | gojq '.[0]'
|
||||
}
|
||||
|
||||
get_quote() {
|
||||
if [ "$1" == "today" ] ; then
|
||||
daily
|
||||
elif [ "$1" == "random" ] ; then
|
||||
random
|
||||
else
|
||||
if [[ ! -f "quotes.json" || "$UPDATE" == true ]] ; then
|
||||
# update quotes file
|
||||
curl -fs "$API/quotes" > quotes.json
|
||||
fi
|
||||
|
||||
num=$(($RANDOM % 49))
|
||||
cat quotes.json | gojq ".[$num]"
|
||||
fi
|
||||
}
|
||||
|
||||
# parse long form
|
||||
for arg in "$@"; do
|
||||
shift
|
||||
case "$arg" in
|
||||
'--help') set -- "$@" '-h' ;;
|
||||
'--random') set -- "$@" '-r' ;;
|
||||
'--daily') set -- "$@" '-d' ;;
|
||||
'--force') set -- "$@" '-f' ;;
|
||||
*) set -- "$@" "$arg" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# parse args
|
||||
while getopts "hrdf" opt ; do
|
||||
case "$opt" in
|
||||
'h')
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
'r')
|
||||
[ -n "$TYPE" ] && usage 1 || TYPE="random"
|
||||
;;
|
||||
'd')
|
||||
[ -n "$TYPE" ] && usage 1 || TYPE="today"
|
||||
;;
|
||||
'f')
|
||||
UPDATE=true
|
||||
;;
|
||||
'?')
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
QUOTE=$(get_quote "$TYPE")
|
||||
|
||||
Q=$(echo "$QUOTE" | gojq '.q' | tr -d '"')
|
||||
A=$(echo "$QUOTE" | gojq '.a' | tr -d '"')
|
||||
|
||||
printf '"%s" - %s\n' "$Q" "$A"
|
Loading…
Reference in New Issue