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

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

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