Dotfiles for my tiling window manager + terminal workflow.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/usr/bin/env bash set -e
LANG=C LC_NUMERIC=C
SYMBOLS=("$@")
if ! $(type jq > /dev/null 2>&1); then echo "'jq' is not in the PATH. (See: https://stedolan.github.io/jq/)" exit 1 fi
if [ -z "$SYMBOLS" ]; then echo "Usage: ./ticker.sh AAPL MSFT GOOG BTC-USD" exit fi
FIELDS=(symbol marketState regularMarketPrice regularMarketChange regularMarketChangePercent \ preMarketPrice preMarketChange preMarketChangePercent postMarketPrice postMarketChange postMarketChangePercent) API_ENDPOINT="https://query1.finance.yahoo.com/v7/finance/quote?lang=en-US®ion=US&corsDomain=finance.yahoo.com"
if [ -z "$NO_COLOR" ]; then : "${COLOR_BOLD:=\e[1;37m}" : "${COLOR_GREEN:=\e[32m}" : "${COLOR_RED:=\e[31m}" : "${COLOR_RESET:=\e[00m}" fi
symbols=$(IFS=,; echo "${SYMBOLS[*]}") fields=$(IFS=,; echo "${FIELDS[*]}")
results=$(curl --silent "$API_ENDPOINT&fields=$fields&symbols=$symbols" \ | jq '.quoteResponse .result')
query () { echo $results | jq -r ".[] | select(.symbol == \"$1\") | .$2" }
for symbol in $(IFS=' '; echo "${SYMBOLS[*]}" | tr '[:lower:]' '[:upper:]'); do marketState="$(query $symbol 'marketState')"
if [ -z $marketState ]; then printf 'No results for symbol "%s"\n' $symbol continue fi
preMarketChange="$(query $symbol 'preMarketChange')" postMarketChange="$(query $symbol 'postMarketChange')"
if [ $marketState == "PRE" ] \ && [ $preMarketChange != "0" ] \ && [ $preMarketChange != "null" ]; then nonRegularMarketSign='*' price=$(query $symbol 'preMarketPrice') diff=$preMarketChange percent=$(query $symbol 'preMarketChangePercent') elif [ $marketState != "REGULAR" ] \ && [ $postMarketChange != "0" ] \ && [ $postMarketChange != "null" ]; then nonRegularMarketSign='*' price=$(query $symbol 'postMarketPrice') diff=$postMarketChange percent=$(query $symbol 'postMarketChangePercent') else nonRegularMarketSign='' price=$(query $symbol 'regularMarketPrice') diff=$(query $symbol 'regularMarketChange') percent=$(query $symbol 'regularMarketChangePercent') fi
if [ "$diff" == "0" ]; then color= elif ( echo "$diff" | grep -q ^- ); then color=$COLOR_RED else color=$COLOR_GREEN fi
if [ "$price" != "null" ]; then # printf "%-10s$COLOR_BOLD%8.2f$COLOR_RESET" $symbol $price # printf "$color%10.2f%12s$COLOR_RESET" $diff $(printf "(%.2f%%)" $percent) # printf " %s\n" "$nonRegularMarketSign" # echo \$$price # echo $price hour=$(date +"%H") if [[ "$symbol" == "USDCAD=X" ]]; then printf "%0.4f\n" "$price" elif [[ "$symbol" == "BTC-USD" ]]; then # echo "$price" | cut -c 2-3 echo "$price" | cut -c -3 # echo "$price" | cut -c -4 elif [[ "$symbol" == "SOL-USD" || "$symbol" == "ETH-USD" ]]; then echo "$price" | cut -c -4 # echo "$price" | cut -c -5 elif (( $(echo "$price > 10000" | bc -l) )); then printf "%'0.0f\n" "$price" | cut -c 2-4 # elif (( $(echo "$price < 1" | bc -l) )); then # printf "%0.3f\n" "$price" elif (( $(echo "$price > 100" | bc -l) )); then printf "%'0.0f\n" "$price" | cut -c 1-3 else printf "%0.2f\n" "$price" | cut -c 3- # printf "%0.2f\n" "$price" fi fi done
|