Учим Linux разговаривать. Часть 2: Прогноз погоды
После того как Linux научился сообщать о не прочитанных сообщениях электронной почты настало время научить его информировать о погоде за окном.
В этом может помочь пакет weather-util:
root@localhost:~$ apt-get install weather-util |
После устновки нужно проследовать по адресу weather.noaa.gov и найти METAR (METeorological Aerodrome Report) для своего города. После этого можно узнать погоду из командной строки, например для Самары:
root@localhost:~$ weather --city=Samara --id=UWWW Current conditions at Samara, Russia (UWWW) 53-12N 050-09E (UWWW) Last updated Oct 26, 2010 - 12:00 PM EDT / 2010.10.26 1600 UTC Temperature: 39 F (4 C) Relative Humidity: 86% Wind: from the SE (130 degrees) at 4 MPH (4 KT) Weather: mist |
Осталось написать обработчик который пропарсит вывод команды weather и передаст его на озвучку festival. Я использовал для этого простой shell-скрипт:
#!/bin/bash
plural () {
if (( $1 > 10 ))
then
N=$(($1 % 10))
else
N=$1
fi
if (( $N > 10 && $N < 20 ))
then
FORM=$2
else if (( $N > 1 && $N < 5 ))
then
FORM=$3
else if (( $N == 1 ))
then
FORM=$4
else
FORM=$2
fi
fi
fi
echo $FORM
}
TMP="/tmp/weather_`/bin/date +%s`"
/usr/bin/weather --city=Samara --id=UWWW > $TMP
temperature=`cat $TMP |grep Temperature |awk '{print $4}' |sed -e 's/(//g'`
humidity=`cat $TMP |grep Humidity |awk '{print $3}' |sed -e 's/%//g'`
echo "Температура воздуха $temperature `plural $temperature градусов градуса градус`
Цельсия. Относительная влажность воздуха $humidity
`plural $humidity процентов процента процент`" | /usr/bin/festival --language russian --tts
rm -f $TMP
exit 0
|

