Учим Linux разговаривать. Часть 2: Прогноз погоды

После того как научился сообщать о не прочитанных сообщениях электронной почты настало время научить его информировать о погоде за окном.

В этом может помочь пакет weather-util:

 [email protected]:~$ apt-get install weather-util 

После устновки нужно проследовать по адресу weather.noaa.gov и найти METAR (METeorological Aerodrome Report) для своего города. После этого можно узнать погоду из командной строки, например для Самары:

 [email protected]:~$ 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 и передаст его на озвучку . Я использовал для этого простой 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