Яндекс:Погода и Conky - dim13/lor GitHub Wiki
Написано по посту пользователя osabio. Оригинальный пост. Встроенных средств conky (без неочевидного употребления внешних wget/grep/sed/awk) не хватает на вывод погоды с какого-либо сайта. Пользователь osabio предложил скрипт для вывода текущей температуры/ветра (в текстовом режиме) с Яндекс.Погоды.
Нужно:
- Conky
- Python 2.7
Открываем текстовый редактор, пишем туда код ниже, и сохраняем в "~/weather/weather.py".
#!/usr/bin/python
import re
import sys
import urllib
from urllib.request import urlopen
home='/home/osabio'
html = urlopen("https://pogoda.yandex.ru/nizhny-novgorod")
htmls = html.read().decode('utf-8')
tempera=re.compile(r'<div\ class="current\-weather__thermometer\ current\-weather__thermometer_type_now">(.*?)</div>')
temp=tempera.findall(htmls)[0].replace(" ","").replace("°C","")
windera=re.compile(r'<div\ class="current\-weather__info\-row\ current\-weather__info\-row_type_wind"><span\ class="current\-weather__info\-label">Ветер:\ </span>\ (.*?)<abbr')
wind=windera.findall(htmls)[0]
kompasera=re.compile(r'<abbr title=".*?">(.*?)</abbr>')
kompas=kompasera.findall(htmls)[0]
ftemp = open(home+r'/weather/temp', "w+")
ftemp.write(temp)
ftemp.close()
ftemp = open(home+r'/weather/wind', "w+")
ftemp.write(wind)
ftemp.close()
ftemp = open(home+r'/weather/kompas', "w+")
ftemp.write(kompas)
ftemp.close()
Также нужно будет :
-
Исправить строчку, содержащую в себе ссылку (html=urlopen(...)), на ссылку для своего города
-
Сменить значение переменной home на домашнюю папку своего пользователя
-
Создать файлы для работы скрипта (выполнить нижеприведенный скрипт bash):
mkdir ~/weather; touch ~/weather/temp ~/weather/kompas ~/weather/wind
Настройки conkyrc в минимальном виде:
${execi 600 python ~/weather/weather.py}\
${execi 600 cat ~/weather/temp} \ #Вывод температуры (число без знака градуса)
${execi 600 cat ~/weather/wind} \ #Вывод скорости ветра (число без едениц измерения)
${execi 600 cat ~/weather/kompas} \ #Вывод направления ветра (текстом: Ю, СЗ и т.п)
С условиями conky отображения направления ветра стрелочками:
${execi 600 python ~/weather/weather.py}\
\
${execi 600 cat ~/weather/temp} °C\
${execi 600 cat ~/weather/wind} М/С\
${if_match "${execi 600 cat ~/weather/kompas}" == "ЮВ"}↖${endif}\
${if_match "${execi 600 cat ~/weather/kompas}" == "СЗ"}↘${endif}\
${if_match "${execi 600 cat ~/weather/kompas}" == "ЮЗ"}↗${endif}\
${if_match "${execi 600 cat ~/weather/kompas}" == "СВ"}↙${endif}\
${if_match "${execi 600 cat ~/weather/kompas}" == "С"}↓${endif}\
${if_match "${execi 600 cat ~/weather/kompas}" == "В"}←${endif}\
${if_match "${execi 600 cat ~/weather/kompas}" == "Ю"}↑${endif}\
${if_match "${execi 600 cat ~/weather/kompas}" == "З"}→${endif}\
${execi 600 cat ~/weather/wind}\
Получаем обновление виджета погоды каждые 10 минут. Радуемся.
Заменить время можно по всему документу автозаменой, т.к. везде стоит 600 с. Не рекомендуется ставить время обновления меньше 61 с - Яндекс будет банить.
P.S. Время работы скрипта - ~0,55 сек.