#!/bin/bash
#                      /usr/local/bin/silverd
# http://crystalfaeries.net/posix/bin/silverd
# celeste:crystalfaery SILVERD 2020-09-06 01:56:00+00:00
# silverd is a daemon to keep us up-to-date on the price of silver in U$FRNs:
# /usr/local/share/ag/kitco.txt
# and the price of U$FRNs in Silver:
# /usr/local/share/ag/ag.txt
# /etc/cron.d/silver:
# @reboot root    /usr/local/bin/silverd >> /var/log/silver.log 2>&1

# User selected parameters:
cron_log=/var/log/silver.log			# where do we store the cronjob's silver log?
silver_log=/usr/local/share/ag/silverlog.txt	# where do we store   the aggregate silver log?
silver_file=/usr/local/share/ag/kitco.txt	# Where do we store   the latest price data?
FRN_file=/usr/local/share/ag/ag.txt		# Where do we invert  the latest price data?
FRN_image=/usr/local/share/ag/ag		# Where do we convert the latest price image?
let max_sleep=3600				# Maximum time between polls is 60 minutes
let min_sleep=900				# Minimum time between polls is 15 minutes
let sleep=$min_sleep				# Poll soon after computer boot-up
while [ -e $silver_file ]
do
    old_price="`cat $silver_file`"
	price="`wget -q -O - http://www.kitco.com/texten/texten.html | lynx -dump -stdin | grep Silver | head -n 1 | sed 's/         / / ; s/       / /'  | sed 's/     / / ; s/   / / ; s/  / / ; s/ Silver // ; s/ .*$//'`"
    if [ "$price" != "" ]
    then
	silver.rrd.update&	# update the Round Robin DataBase in Background
	echo "$price" > "${silver_file}"
	if [ "$price" == "$old_price" ]
	then
		let sleep=$sleep+$sleep
		if [[ $sleep -gt $max_sleep ]]
		  then let sleep=$max_sleep
		fi
		touch $silver_file	# update the time reported by our cgi
	else
		let sleep=$sleep/2
		if [[ $sleep -lt  $min_sleep ]]
		   then let sleep=$min_sleep
		fi
		echo "`/usr/local/bin/now` KitCoAg: $price" >> $silver_log
		echo "scale=4; 1/$(cat /usr/local/share/ag/kitco.txt)" | bc -l |		\
		sed 's/$/ Oz. BULK Ag.\r\nper FedRe\$erveNote/'	>	"${FRN_file}"
		text2image	--text					"${FRN_file}"		\
				--outputbase				"${FRN_image}"		\
				--fonts_dir	/usr/share/fonts/truetype/liberation/		\
				--font		Liberation\ Mono				\
				--xsize		1400						\
				--ysize		400						2> /dev/null
		rm	"${FRN_image}.png"	# remove old version 
		convert	"${FRN_image}.tif" -geometry "566x162"					\
			"${FRN_image}.png"							2>> "${cron_log}"
		rsync	-auvH	  ~/crystalfaeries.net/posix/share/ag/{ag.{png,txt},kitco.txt}	\
			`my_twin`:~/crystalfaeries.net/posix/share/ag/ < /dev/null > /dev/null	2>> "${cron_log}"
	fi
    else
	let sleep=$sleep+$sleep
	if [[ $sleep -gt $max_sleep ]]
	  then let sleep=$max_sleep
	fi
    fi
    sleep $sleep		#while we stay on schedule
done				# hope you launched from a terminal in order to authorize our first run:
sudo touch			$cron_log $silver_log $silver_file #create		missing file
sudo chmod 664			$cron_log $silver_log $silver_file #set permissions:  missing file
sudo chown www-data:www-data	$cron_log $silver_log $silver_file #set ownership of	missing file
