Metadata-Version: 2.5
Name: dfb-weather
Version: 0.1.1
Summary: Библиотека для получения данных о погоде через API Open-Meteo и определения геолокации по IP
Project-URL: Homepage, https://github.com/DFB000
Author-email: Fribus Danila <dbfribus4@gmail.com>
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.8
Requires-Dist: requests>=2.25.0
Description-Content-Type: text/markdown

# dfb-weather

Библиотека для быстрого и удобного получения текущих данных о погоде через бесплатное API **Open-Meteo** с автоматическим определением местоположения по IP-адресу.

## 🚀 Особенности

* 🌍 **Автоматическая геолокация**: Если координаты не переданы, библиотека сама определит ваше местоположение (город) по IP-адресу через сервис `ip-api.com`.
* ⚡ **Чистые данные**: Никакого мусора в ответах — только нужная информация (температура, влажность, давление, ветер, облачность).
* 🌡️ **Адаптация под СНГ**: Давление автоматически переводится из гектопаскалей (hPa) в привычные **мм рт. ст.**, а скорость ветра отдается в **м/с**.
* 🛠️ **Безопасность**: Защита от изменений структуры сторонних API — данные парсятся строго по ключам, а не через слепую распаковку.

## 📦 Установка

Установка библиотеки:

```bash
pip install dfb-weather
```

## 🛠️ Быстрый старт

### 1. Автоматическое определение погоды по IP

Вам не нужно искать свои координаты — библиотека сделает это за вас:

```python
from dfb_weather import Weather

# Создаем объект погоды
weather = Weather()

# Обновляем данные (координаты определятся по вашему IP)
if weather.update():
    # Получаем данные в виде словаря
    data = weather.to_dict()
    
    print(f"Погода на время: {data['time']}")
    print(f"Температура: {data['temperature']} °C (ощущается как {data['apparent_temperature']} °C)")
    print(f"Влажность: {data['relative_humidity']}%")
    print(f"Давление: {data['surface_pressure']} мм рт. ст.")
    print(f"Ветер: {data['wind_speed']} м/с")
else:
    print("Не удалось получить данные о погоде.")
```

Так же можно получить данные не только в виде словаря, но и как параметр:

```python
temperature = weather.temperature # Здесь weather - экземпляр класса
```

### 2. Запрос погоды по конкретным координатам

Если вы знаете точную широту и долготу (например, для Москвы — `55.7558, 37.6173`):

```python
from dfb_weather import Weather

weather = Weather()

# Передаем координаты кортежем (latitude, longitude)
if weather.update(lat_lon=(55.7558, 37.6173)):
    print(f"Температура в Москве: {weather.temperature} °C")
```

## 📋 Описание возвращаемых данных

Метод `weather.to_dict()` возвращает словарь со следующими полями:

| Ключ | Описание | Единицы измерения |
| :--- | :--- | :--- |
| `time` | Время замера данных на сервере | Текстовый формат (`YYYY-MM-DDTHH:MM`) |
| `temperature` | Фактическая температура воздуха на высоте 2 метров | Градусы Цельсия (`°C`) |
| `apparent_temperature` | Ощущаемая температура с учетом ветра и влажности | Градусы Цельсия (`°C`) |
| `relative_humidity` | Относительная влажность воздуха | Проценты (`%`) |
| `precipitation` | Общий объем осадков (дождь/снег) за последний час | Миллиметры (`мм`) |
| `wind_speed` | Скорость движения воздушных масс (ветер) | Метры в секунду (`м/с`) |
| `cloud_cover` | Степень покрытия неба облаками | Проценты (от `0%` до `100%`) |
| `surface_pressure` | Атмосферное давление на уровне земли | Миллиметры ртутного столба (`мм рт. ст.`) |

## 🔒 Требования и зависимости

* **Python**: `>= 3.8`
* **Библиотеки**: `requests>=2.25.0`

## 📄 Лицензия

Проект распространяется под лицензией MIT. Подробнее см. в файле `LICENSE`.

---
👨‍💻 **Автор**: [Fribus Danila](https://github.com/DFB000) (dbfribus4@gmail.com)
