#!/bin/bash
# Stock Data Grabber - Version 2
# Robert Wolterman - 2010
# Pulls data from a list of stocks for easier use in geektool
# Original web page parsing found on macrumers.com forum
# OUTPTYPE OF -c IS FOR COLORED OUTPUT
# OUTPTYPE OF -n IS FOR NONCOLORED OUTPUT
OUTPTYPE=$1
# SETS UP THE VARIABLE FOR THE TICKER FILE
TICKFILE=$2
# Check for ethernet connection
ping -c 1 www.google.com >/dev/null 2>&1
ret="$?"
# if i have an inet connection
if [ "$ret" = "0" ]; then
# clear out old stockfile when script updates
rm /tmp/geektool/stocklist
# GET DATA FROM THE FILE
cat $TICKFILE | while read line
do
tmp="${line:0:1}"
if [ $tmp != "#" ]; then
MARKET=`echo "${line}" | cut -d " " -f1`
SYMBOL=`echo "${line}" | cut -d " " -f2`
# FOR THE ACTUAL NASDAQ, DOW JONES, OR S&P 500 INDEX
if [ "$MARKET" = "INDEXNASDAQ:.IXIC" ] || [ "$MARKET" = "INDEXDJX:.DJI" ] || [ "$MARKET" = "INDEXSP:.INX" ]; then
URL=http://www.google.com/finance?q=$MARKET
# GENERAL STOCKS
elif [ "$MARKET" = "NYSE" ] || [ "$MARKET" = "NASDAQ" ] || [ "$MARKET" = "AMEX" ] || [ "$MARKET" = "EPA" ] || [ "$MARKET" = "AMEX" ] || [ "$MARKET" = "TSE" ] || [ "$MARKET" = "LON" ] || [ "$MARKET" = "ETR" ] || [ "$MARKET" = "OTC" ]; then
URL=http://www.google.com/finance?q=$MARKET:$SYMBOL
else
echo "No input given"
fi
# DOWNLOAD FILE TO /TMP
curl --silent $URL > /tmp/geektool/$SYMBOL.stock
# COMPANY ID
COMPID=`grep 'var _companyId =' /tmp/geektool/$SYMBOL.stock | cut -d '=' -f2 | cut -d ';' -f1 | cut -d " " -f2`
# VALUE
STKVAL=`grep "ref_$COMPID\_l" /tmp/geektool/$SYMBOL.stock | cut -d ">" -f2 | cut -d "<" -f1`
# VALUE OF CHANGE IN DOLLARS
CHANGEVAL=`grep "id=\"ref_$COMPID\_c" /tmp/geektool/$SYMBOL.stock | cut -d ">" -f3 | cut -d "<" -f1`
# GET THE PLUS/MINUS OF THE CHANGE
PNE=${CHANGEVAL:0:1}
# VALUE OF CHANGE IN PERCENT
CHANGEPER=`grep "id=\"ref_$COMPID\_cp" /tmp/geektool/$SYMBOL.stock | cut -d ">" -f2 | cut -d "<" -f1`
# FIGURE OUT COLOR FOR POS/NEG CHANGE AND ECHO TO THE TMP FILE
if [ $PNE == "-" ]; then
# NEGATIVE CHANGE
BCOL="-"
elif [ $PNE == "+" ]; then
# POSITIVE CHANGE
BCOL="+"
else
# NO CHANGE
BCOL="="
fi
# DEPENDING ON OUTPTYPE, PERFORM THE PROPER ACTION
if [ $OUTPTYPE == "-n" ]; then
# DUMP DATA INTO THE TEMP FILE TO ENABLE TABLE CREATION
echo $SYMBOL: $STKVAL $CHANGEVAL $CHANGEPER >> /tmp/geektool/stocklist
elif [ $OUTPTYPE == "-c" ]; then
# DUMP DATA INTO THE TEMP FILE FOR COLOR TABLE CREATION
echo $BCOL";"$SYMBOL";"$STKVAL";"$CHANGEVAL";"$CHANGEPER >> /tmp/geektool/stocklist
fi
fi
done
if [ $OUTPTYPE == "-n" ]; then
# OUTPUT TO A TABLE
(printf "%s\t%s\t%s\t%s\n"; cat /tmp/geektool/stocklist) | column -t
elif [ $OUTPTYPE == "-c" ]; then
# OUTPUT COLORS
awk 'BEGIN{
FS=";";
}{
if ($1 == "+")
printf "\033[42;1;37m%-10s%-12s%-8s%-8s\n",$2,$3,$4,$5;
else if ($1 == "-")
printf "\033[41;1;37m%-10s%-12s%-8s%-8s\n",$2,$3,$4,$5;
else
printf "%-10s%-12s%-8s%-8s\n",$2,$3,$4,$5;
}' /tmp/geektool/stocklist
fi
else
echo "No internet connection"
fi