#!/usr/bin/env bash set -e italic="\033[3m" underline="\033[4m" ita_under="\033[3;4m" bgd="\033[1;4;31m" red="\033[1;31m" green="\033[1;32m" bold="\033[1m" box="\033[1;41m" reset="\033[0m" LANG=C LC_NUMERIC=C SYMBOLS=("$@") echo "${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 API_ENDPOINT="https://query1.finance.yahoo.com/v7/finance/quote?lang=fr-FR®ion=FR&corsDomain=finance.yahoo.com" symbols=$(IFS=,; echo "${SYMBOLS[*]}") #echo "$symbols" results=$(curl --silent "$API_ENDPOINT&fields=$fields&symbols=$symbols" | jq '.quoteResponse .result') #echo "$results" query () { echo $results | jq -r ".[] | select(.symbol == \"$1\") | .$2" } t=0 while IFS= read -r obj; do marketState=$(echo "$obj" | jq -j '.marketState') symbol=$(echo "$obj" | jq -j '.symbol') preMarketChange=$(echo "$obj" | jq -j '.preMarketChange') postMarketChange=$(echo "$obj" | jq -j '.postMarketChange') longName=$(echo "$obj" | jq -j '.longName') if [ "$longName" == "null" ] && [ $symbol == "^FCHI" ]; then longName="CAC 40" fi if [ $t == "0" ]; then printf "${bold}%-10s | %-25s | %-7s | " "Symbole" "Entreprise" "Cours" printf "%-6s | %-6s | %-7s | " "Diff" "%" "Veille" printf "%-7s | %-7s | %-8s | " "+ Haut" "+ Bas" "Volume" printf "%-9s | %-25s${reset}\n" "Ouverture" "Heure" fi t=1 if [ $marketState == "PRE" ] && [ $preMarketChange != "0" ] && [ $preMarketChange != "null" ]; then nonRegularMarketSign='*' price=$(echo "$obj" | jq -j '.preMarketPrice') diff=$preMarketChange percent=$(echo "$obj" | jq -j '.preMarketChangePercent') elif [ $marketState != "REGULAR" ] && [ $postMarketChange != "0" ] && [ $postMarketChange != "null" ]; then nonRegularMarketSign='*' price=$(echo "$obj" | jq -j '.postMarketPrice') diff=$postMarketChange percent=$(echo "$obj" | jq -j '.postMarketChangePercent') else nonRegularMarketSign='' price=$(echo "$obj" | jq -j '.regularMarketPrice') diff=$(echo "$obj" | jq -j '.regularMarketChange') percent=$(echo "$obj" | jq -j '.regularMarketChangePercent') previous=$(echo "$obj" | jq -j '.regularMarketPreviousClose') volume=$(echo "$obj" | jq -j '.regularMarketVolume') haut=$(echo "$obj" | jq -j '.regularMarketDayHigh') bas=$(echo "$obj" | jq -j '.regularMarketDayLow') ouverture=$(echo "$obj" | jq -j '.regularMarketOpen') ts=$(echo "$obj" | jq -j '.regularMarketTime') heure=$(LC_ALL=fr_FR.UTF-8 date -d @$ts +"%c" 2>/dev/null || LC_ALL=fr_FR.UTF-8 date -r $ts +"%c") fi if [ "$diff" == "0" ] || [ "$diff" == "0.0" ]; then color= elif ( echo "$diff" | grep -q ^- ); then color=$red else color=$green fi if [ "$price" != "null" ]; then printf "${color}%-10s | %-25s | %7.2f | " $symbol "$longName" $price printf "% 6.2f | % 3.2f%% | %7.2f | " $diff $percent $previous printf "%7.2f | %7.2f | %8d | " $haut $bas $volume printf "%9.2f | %25s${reset}\n" $ouverture "$heure" fi done < <(echo "$results" | jq -c '.[]')