#!/bin/bash
# naytasaa - pikkunen sään näyttäjä by Katja (fly5.kapsi.fi)
##
# näyttää sään käyttäen libnotifya, ja höpöttää käyttäen festivalia.
# tarvii toimiakseen ainakin:
# festival, libnotify (libnotify-bin), bc, weather (weather-util)
# http://fungi.yuggoth.org/weather
##
# mulla crontabi päivittää sää-tiedoston säännöllisesti weatherilla
# 42 * * * * weather koti > /home/katja/Projektit/saa.txt 2>/dev/null
# kannattaa tehä ~/.weatherrc tiedosto ku oot bongannu lähimmän sääasemas
# esim mun asetukset löytyy http://fly5.kapsi.fi/misc/configs/weatherrc
##

saatiedosto="/home/katja/Projektit/saa.txt"
sisalto="`cat $saatiedosto`"

# lämpötila
celsius=${sisalto#*Temperature: *\(}
celsius=${celsius%% C\)*} 
#cels2="${celssius//[\(\)]/}"

# tuulen suunta (mistä)
suunta=${sisalto#*Wind: from the }
suunta=${suunta%% *}

case $suunta in
	N) suunnasta="pohjoisesta" ;;
	E) suunnasta="idästä" ;;
	S) suunnasta="etelästä" ;;
	W) suunnasta="lännestä" ;;
	NE|NNE|ENE) suunnasta="koillisesta" ;;
	SE|ESE|SSE) suunnasta="kaakosta" ;;
	SW|SSW|WSW) suunnasta="lounaasta" ;;
	NW|WNW|NNW) suunnasta="luoteesta" ;;
	*) suunnasta="jostain oudosta suunnasta" ;;
esac

# tuulen kovuus maileina
tuulenkovuus=${sisalto#*degrees) at *}
tuulenkovuus=${tuulenkovuus%% MPH*}

# ..metreiks sekunnissa muunnettuna
tuulim="`echo \"$tuulenkovuus / 2.2369\" | bc -l`"

# ..jos alkaa pisteellä (bc:n tulostus), lisätään nolla + pyöristetään
if [ "${tuulim:0:1}" = "." ]; then
	tuulim="${tuulim/./0.}"
	tuulim="${tuulim:0:3}"
else
	tuulim="${tuulim:0:3}"
fi

# suhteellinen ilmankosteus
kosteus=${sisalto#*Relative Humidity: *}
kosteus=${kosteus%%\%*}
#kosteus=${kosteus%% *}

# mita tulostetaan
otsikko="Sää ulkona:"
info="$(cat <<INFOJUTTU
Lämpötila: $celsius C
Tuulee $suunnasta $tuulim m/s
Suhteellinen ilmankosteus on $kosteus %
INFOJUTTU)"

# tulostetaan
notify-send -i gtk-dialog-info -t 7000 -u critical	-- "$otsikko" "$info"

# puhutaankin.
sano () {
echo $* > /tmp/ttv && iconv -f UTF-8 -t ISO8859-1 /tmp/ttv > /tmp/ttv2 &&festival --tts /tmp/ttv2 >/dev/null >/dev/null 2>&1
}

sano "Ulkona on $celsius astetta."

# lämpötilan mukaan
case $celsius in
	-[0-9][0-9]) sano "Jääkarhutkin palelee." ;;
	-[0-9]) sano "Älä laita kieltä rautatankoon." ;;
	[0-9]) sano "Takki päälle kun lähdet ulos." ;;
	1[0-9]) sano "Mukavan lämmin ilma." ;;
	2[0-9]) sano "Tänään ei pitkähihaisia pueta." ;;
	3[0-9]) sano "Läähätän ja läkähdyn.." ;;
	4[0-9]) sano "Pään tunkeminen pakastimeen alkaa tuntua hyvältä idealta." ;;
	*) sano "Tuntuupa kummalle." ;;
esac

# ja ilmankosteus taas..
sano "Suhteellinen ilmankosteus on $kosteus prosenttia"
case $kosteus  in
	3[0-9]) sano "Juomista! Täällähän kuivuu kasaan! Hengitys on vaikeaa ja silmät vuotaa. Yhyy!" ;;
	4[0-9]) sano "Aika kuiva ilma." ;;
	5[0-9]) sano "Hyvä niin." ;;
	6[0-9]) sano "Vähän kosteeta on, mutta olkoon." ;;
	7[0-9]) sano "Nihkeetä. Kannattaa pukea vaatteet jotka hengittää.." ;;
	8[0-9]) sano "Ihankuin asuisi sademetsässä." ;;
	9[0-9]) sano "Voit uida omassa hiessäsi." ;;
	*) sano "Ihan sairasta!" ;;
esac

# ja kerrotaan tuulestakin
sano "Tuulee $suunnasta $tuulim metriä sekunnissa"

case ${tuulim%%\.*} in
	1|2) sano "Kutsutaanko tätä muka tuuleksi?" ;;
	2|3) sano "Mukavaa kun ilma edes vähän liikkuu." ;;
	4|5) sano "Pientä tuulta vaan, no broblemo." ;;
	7|8|9) sano "No Huh Huh." ;;
	1[0-9]) sano "Pidä hiuksistas kiinni, ettei tuuli vie niitä." ;;
	2[0-9]) sano "Apua!! Nyt kuollaan!" ;;
	3[0-9]) sano "Tuuleee.. kaaduillaa tuuleee. Nyt ei ole kukaan enää turvassa." ;;
	*) sano "Ei paljoa liput liehu." ;;
esac
echo

##
# 21.08.2007 - tuntus toimivan
##
# TODO:
# - lisää vaihtelua sanomisiin
# - vois parsii tulosteesta loputki (mostly clouydyt sun muut)
# - jos jaksais testata toimiiko muillakin sääasemilla..
##