Учим 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

Понравилась статья, расскажи о ней друзьям, нажми кнопку!