Проверка погоды через терминалПодписка на Комментарии к "Проверка погоды через терминал"

Аватар xxblx

Небольшой bash-скрипт для проверки погоды с помощью Weather Yahoo. Так уж сложилось, что в моем регионе этот сервис дает куда более точные пронозы, нежели отечественные гисметео и яндекс.

Делал для себя, но мало ли кому-нибудь еще пригодится.
Замените значение WCODE на свое. Узнать код можно на weather.com - найдите страницу своего города и из адресной строки возьмите код, либо подставьте название вашего населенного пункта в эту ссылку, откроется xml-файл с кодами найденных населенных пунктов.
Если вам удобней смотреть температуру в градусах по Фаренгейту, замените значение DGR на "f".

#!/bin/bash

# City code
WCODE="RSXX0170"

# Celsius (c) / Fahrenheit (f)
DGR="c"

# Download xml
curl -s -o /tmp/yahoo-weather.xml \
     "http://xml.weather.yahoo.com/forecastrss/${WCODE}_${DGR}.xml"

# City
CITY=`cat /tmp/yahoo-weather.xml | xmlstarlet sel -t \
     -m "/rss/channel" -v "yweather:location/@city"`

# Country
COUNTRY=`cat /tmp/yahoo-weather.xml | xmlstarlet sel -t \
        -m "/rss/channel" -v "yweather:location/@country"`

# Сurrent condition
CUR_COND=`cat /tmp/yahoo-weather.xml | xmlstarlet sel -t \
         -m "/rss/channel/item" -v "yweather:condition/@text"`

# Current temp
CUR_TEMP=`cat /tmp/yahoo-weather.xml | xmlstarlet sel -t \
         -m "/rss/channel/item" -v "yweather:condition/@temp"`

# Forecast
FORECAST_DAYS=`cat /tmp/yahoo-weather.xml | xmlstarlet sel -t \
              -m "/rss/channel/item" -v "yweather:forecast/@day"`

FORECAST_LOWS=`cat /tmp/yahoo-weather.xml | xmlstarlet sel -t \
              -m "/rss/channel/item" -v "yweather:forecast/@low"`

FORECAST_HIGHS=`cat /tmp/yahoo-weather.xml | xmlstarlet sel -t \
               -m "/rss/channel/item" -v "yweather:forecast/@high"`

FORECAST_CONDS=`cat /tmp/yahoo-weather.xml | xmlstarlet sel -t \
               -m "/rss/channel/item" -v "yweather:forecast/@text"`

echo "Weather for ${CITY}, ${COUNTRY}"
echo -e "\nCurrent Conditions:"
echo "${CUR_TEMP}, ${CUR_COND}"
echo -e "\nForecast:"

for i in 1 2 3 4 5
do
    fday=`echo $FORECAST_DAYS | cut -d " " -f ${i}`
    flow=`echo $FORECAST_LOWS | cut -d " " -f ${i}`
    fhigh=`echo $FORECAST_HIGHS | cut -d " " -f ${i}`
    fcond=`echo $FORECAST_CONDS | cut -d " " -f ${i}`
   
    echo "${fday} - ${fcond}. High: ${fhigh}. Low: ${flow}."
done

Результат

[xxblx@localhost Bash]$ ./yahoo-weather
Weather for Vologda, RS

Current Conditions:
-7, Light Snow

Forecast:
Sat - Cloudy. High: -7. Low: -10.
Sun - Partly. High: -11. Low: -18.
Mon - Cloudy. High: -12. Low: -18.
Tue - Cloudy. High: -16. Low: -19.
Wed - Cloudy. High: -8. Low: -9.

Данный скрипт можно использовать, например, с Conky.
conky.png

Эта же запись в моем личном блоге.

Похожие материалы:

Добавить комментарий