После того как 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
4 комментария “Учим Linux разговаривать. Часть 2: Прогноз погоды”
часть скрипта с plural () {} выдаёт ошибки и скрипт не читает данные переменных в оитоге. В чём может быть проблема ? Debian Squeeze
Скопируйте пожалуйста дословно весь вывод работы скрипта.
P.S. Синтаксис справедлив только для bash’а, на других оболочках может не работать
Данная утилита не запоминает никаких данных, погода вводится для указанного METAR (—id). Если вы все время вводите UWWW, то вам все время и показывает погоду Самары.
Как сбросить город установленный первым запуском команды
root@localhost:~$ weather —city=Samara —id=UWWW
теперь только Самара )), подстановка другого значения не изменяет города