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