IT Notes

Conky: Простой вывод погоды

В conky предусмотрена переменная weather. Казалось бы, с ее помощью мы легко сможем отобразить всю интересующую нас информацию о погоде, но мы пойдем другим путем. Вот почему: на данный момент эта переменная все еще является экспериментальной, поэтому привязываться к ней не стоит. К тому же, сейчас в качестве параметров можно передать два источника метеоданных. Первый предоставляет данные только для Америки (если вы живете в Америке, то это может стать вашим выбором), а второй требует регистрации (но нам лень).

Для получения текущей погоды воспользуемся сервисом Yahoo. Например, чтобы узнать сведения о погоде в Москве перейдите по ссылке: http://xml.weather.yahoo.com/forecastrss?w=2346910&u=c. Если у вас установлено приложение или плагин браузера для просмотра rss-фидов, то вы увидите что-то подобное:

rss-moscow-weather-yahoo-thumbnail

За этим содержимым стоит обычный xml-код. Он нам и нужен. Обратите внимание, что на конце url используется два параметра: w и u. Первый из них определяет место, для которого мы хотим узнать погоду, а второй позволяет выбрать единицы измерения температуры (градусы Цельсия c или Фаренгейта f). Параметр w означает WOEID - Where On Earth IDentifier. Найти его для вашего города можно на сайте http://woeid.rosselliot.co.nz/lookup:

woeid-novgorod-thumbnail

Например, на скриншоте выше показано, что я ввел в строку поиска "velikiy novgorod", и получил на запрос два результата. Первый результат относится к району, а второй непосредственно к городу. Поэтому я запоминаю соответствующий WOEID - 2122471.

Следующий шаг - получение непосредственных данных. Для этого создадим простой скрипт ~/.scripts/weather.sh:

#!/bin/sh

WOEID="$1"
curl -s "http://xml.weather.yahoo.com/forecastrss?w=${WOEID}&u=c" | grep "Current Conditions" -A1 | tail -1 | awk '{ for( i=1; i<NF-2; ++i) { printf "%s ", $i } printf "%sC\n", $(NF-2) }'

На вход он принимает единственный параметр - WOEID нужного нам места. Обратите внимание, что для работы скрипта вам понадобится curl. Также в скрипте используется немного awk (см. AWK: Примеры программ).

Попробуем запустить скрипт с найденным ранее WOEID:

weather.sh 2122471

В результате имеем такой выход:

Light Snow, -9C

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

#!/bin/sh

WOEID="$1"
curl -s "http://xml.weather.yahoo.com/forecastrss?w=${WOEID}&u=c" | grep "Current Conditions" -A1 | tail -1 | awk '{ printf "%sC\n", $(NF-2) }'

Вывести все это с помощью conky уже дело техники. Вы можете поместить панель туда, где вам покажется удобней, а я просто переделаю файл конфигурации из прошлой статьи, с помощью которого мы выводили уведомления о новых сообщениях на электронной почте:

background yes
use_xft yes
xftfont Droid Sans Mono:size=17:bold
xftalpha 0.1
update_interval 2.0
total_run_times 0
own_window yes
own_window_class Conky
own_window_type desktop
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_argb_visual yes
own_window_argb_value 255
double_buffer yes
minimum_size 344 0
default_bar_size 100 10
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
default_color white
default_outline_color white
alignment bl
gap_x 0
gap_y 31
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 1
override_utf8_locale yes
use_spacer yes

TEXT
${color #9999FF}${execi 30 ~/.scripts/weather.sh 2122471}$color

И вот что получилось в итоге:

conky-weather-thumbnail

Внешне выглядит довольно примитивно, но вы сами можете подобрать цвета и шрифты, чтобы такая панель лучше вписывалась в ваше оформление.

При желании вы также можете переработать скрипт, и, например, добавить вывод не только текущей температуры, но и прогноз на ближайшие дни.

Похожие публикации

Комментарии

Весьма исчерпывающе. Просто и понятно!

Я подобное находил на других сайтам, но там было еще и дополнительные вещи от автора, типа "я еще добавил анимированную картинку и 100500 полезных плюшек, которые точно нужны всем". В результате, сначала очищаешь скрипт до минимума, адаптируешь для своего города и начинаешь понимать, с чего начинал автор. А тут все просто - находим код города, пишем простейший скрипт, смотрим, как он работает и прописываем в коньки. А дальше уже допиливаем, как хотим.

Блог однозначно в закладки.

Спасибо!

Спасибо за отзыв :)