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


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

В этом может помочь пакет 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

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

  • olm3r

    часть скрипта с plural () {} выдаёт ошибки и скрипт не читает данные переменных в оитоге. В чём может быть проблема ? Debian Squeeze

    • Rascal От автора

      Скопируйте пожалуйста дословно весь вывод работы скрипта.
      P.S. Синтаксис справедлив только для bash’а, на других оболочках может не работать

  • Rascal От автора

    Данная утилита не запоминает никаких данных, погода вводится для указанного METAR (—id). Если вы все время вводите UWWW, то вам все время и показывает погоду Самары.

  • Сергей

    Как сбросить город установленный первым запуском команды
    [email protected]:~$ weather —city=Samara —id=UWWW
    теперь только Самара )), подстановка другого значения не изменяет города

Комментарии закрыты