84 lines
4.2 KiB
Markdown
84 lines
4.2 KiB
Markdown
# Клиент Яндекс.Погоды
|
||
|
||
Небольшой Python-клиент для получения текущей погоды и прогноза через REST API
|
||
Яндекс.Погоды для бесплатного тарифа «Погода для умного дома». Встроенный
|
||
погодный источник OpenClaw не используется.
|
||
|
||
## Настройка
|
||
|
||
1. Отзовите ранее опубликованный ключ и создайте новый в кабинете Яндекс.Погоды.
|
||
2. Скопируйте `.env.example` в `.env`.
|
||
3. Запишите новый ключ в `.env`:
|
||
|
||
```env
|
||
YANDEX_WEATHER_KEY=новый_ключ
|
||
```
|
||
|
||
Не отправляйте ключ в чат и не добавляйте `.env` в Git.
|
||
4. При желании создайте виртуальное окружение:
|
||
|
||
```bash
|
||
python3 -m venv .venv
|
||
```
|
||
|
||
Внешние библиотеки не требуются — клиент использует стандартную библиотеку
|
||
Python.
|
||
|
||
## Запуск
|
||
|
||
Доступные сохранённые локации:
|
||
|
||
```bash
|
||
python3 weather_client.py --list-locations
|
||
```
|
||
|
||
Прогноз по адресу можно запросить по ключу или по одному из сохранённых
|
||
названий:
|
||
|
||
```bash
|
||
python3 weather_client.py --location SOME_LOCATION
|
||
python3 weather_client.py --location
|
||
```
|
||
|
||
Координаты по-прежнему можно указывать явно:
|
||
|
||
```bash
|
||
python3 weather_client.py --lat 10.321 --lon 25.6173 --days 2
|
||
```
|
||
|
||
Для исходного JSON:
|
||
|
||
```bash
|
||
python3 weather_client.py --lat 10.7558 --lon 25.6173 --json
|
||
```
|
||
|
||
Клиент делает ровно один запрос API за один запуск, выводит текущую погоду,
|
||
прогноз на сегодня и завтра и ссылку на карту осадков Яндекс.Погоды для
|
||
найденного населённого пункта. Ссылка на карту открывает веб-страницу Яндекса
|
||
и не делает дополнительного запроса к API этим клиентом.
|
||
|
||
Сохранённые координаты адресов находятся в [locations.json](locations.json).
|
||
Они должны быть запрошены у пользователя и найдены на яндекс картах перед началом работы.
|
||
|
||
## Ограничения бесплатного тарифа
|
||
|
||
Бесплатный тариф «Умный дом» предназначен для некоммерческого использования,
|
||
передаёт данные только на сегодня и завтра и предоставляет температуру,
|
||
скорость ветра, погодные условия, «ощущается как» и иконку. Поэтому числовые
|
||
данные об осадках и тайлы карты нельзя гарантировать через этот API-клиент;
|
||
карта добавляется как ссылка на веб-сервис Яндекса. Автоматических повторов
|
||
запроса в клиенте нет, чтобы не расходовать лимит 1000 запросов в месяц / 30
|
||
запросов в день.
|
||
|
||
## Что нужно для следующего шага
|
||
|
||
- координаты или название нужной локации;
|
||
- время и периодичность отправки в Matrix;
|
||
- желаемый формат сообщения: короткий прогноз или подробный почасовой.
|
||
|
||
API использует заголовок `X-Yandex-Weather-Key` и параметры `lat`, `lon`, `limit`
|
||
и `hours`. Подробности — в [официальной документации REST API]
|
||
(https://yandex.ru/dev/weather/doc/ru/concepts/forecast-rest). Условия и
|
||
ограничения бесплатного тарифа — в [условиях API для физических лиц]
|
||
(https://yandex.ru/legal/apib2c_weather_agreement/ru/).
|