Metadata-Version: 2.1
Name: weatheril
Version: 0.6.0
Summary: Israel Meteorological Service unofficial python api wrapper
Home-page: https://github.com/t0mer/py-weatheril
Download-URL: https://pypi.org/project/weatheril/
Author: Tomer Klein
Author-email: tomer.klein@gmail.com
License: MIT
Project-URL: Documentation, https://github.com/t0mer/py-weatheril
Project-URL: Source, https://github.com/t0mer/py-weatheril
Keywords: ims,weatheril,Israel Meteorological Service,Meteorological Service,weather
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE

# weatheril
weatheril is an unofficial [IMS](https://ims.gov.il) (Israel Meteorological Service) python API wrapper.

## Features supported
* Get current weather status.
* Get Daily and Hourly forcast (5 days ahead).
* Get Radar and Satellite images.


## Components and Frameworks used in weatheril
* [Loguru](https://pypi.org/project/loguru/)
* [Requests ](https://pypi.org/project/requests/)
* [Pillow](https://pypi.org/project/Pillow/)
* [pandas](https://pypi.org/project/pandas/)
* [urllib3](https://pypi.org/project/urllib3/)


## Getting started

Use git to clone or you can also manually download the project repository just as shown below;

```bash
$ git clone https://github.com/t0mer/py-weatheril/
$ cd py-weatheril
py-weatheril $ python3 setup.py install 
```

### Installing from PyPi

```bash
# For Windows 

pip install  --upgrade weatheril

#For Linux | MAC 

pip3 install --upgrade weatheril
```

## Working with the API

weatheril can be configured to retrive forcast information for specific location. when initiating the library you must set the location id and language (Currently only he and en are supported)

```python
from weatheril import *
weather = WeatherIL(21,"he")
```

In the above example i set **Raanana** as the location and **Hebrew** as language. Full locations list in the table below.



| Id | Location |
| ------------ | ----------- |
| 1| Jerusalem| 
| 2| Tel Aviv - Yafo| 
| 3| Haifa| 
| 4| Rishon le Zion| 
| 5| Petah Tiqva| 
| 6| Ashdod| 
| 7| Netania| 
| 8| Beer Sheva| 
| 9| Bnei Brak| 
| 10| Holon| 
| 11| Ramat Gan| 
| 12| Asheqelon| 
| 13| Rehovot| 
| 14| Bat Yam| 
| 15| Bet Shemesh| 
| 16| Kfar Sava| 
| 17| Herzliya| 
| 18| Hadera| 
| 19| Modiin| 
| 20| Ramla| 
| 21| Raanana| 
| 22| Modiin Illit| 
| 23| Rahat| 
| 24| Hod Hasharon| 
| 25| Givatayim| 
| 26| Kiryat Ata| 
| 27| Nahariya| 
| 28| Beitar Illit| 
| 29| Um al-Fahm| 
| 30| Kiryat Gat| 
| 31| Eilat| 
| 32| Rosh Haayin| 
| 33| Afula| 
| 34| Nes-Ziona| 
| 35| Akko| 
| 36| Elad| 
| 37| Ramat Hasharon| 
| 38| Karmiel| 
| 39| Yavneh| 
| 40| Tiberias| 
| 41| Tayibe| 
| 42| Kiryat Motzkin| 
| 43| Shfaram| 
| 44| Nof Hagalil| 
| 45| Kiryat Yam| 
| 46| Kiryat Bialik| 
| 47| Kiryat Ono| 
| 48| Maale Adumim| 
| 49| Or Yehuda| 
| 50| Zefat| 
| 51| Netivot| 
| 52| Dimona| 
| 53| Tamra| ,
| 54| Sakhnin| 
| 55| Yehud| 
| 56| Baka al-Gharbiya| 
| 57| Ofakim| 
| 58| Givat Shmuel| 
| 59| Tira| 
| 60| Arad| 
| 61| Migdal Haemek| 
| 62| Sderot| 
| 63| Araba| 
| 64| Nesher| 
| 65| Kiryat Shmona| 
| 66| Yokneam Illit| 
| 67| Kafr Qassem| 
| 68| Kfar Yona| 
| 69| Qalansawa| 
| 70| Kiryat Malachi| 
| 71| Maalot-Tarshiha| 
| 72| Tirat Carmel| 
| 73| Ariel| 
| 74| Or Akiva| 
| 75| Bet Shean| 
| 76| Mizpe Ramon| 
| 77| Lod| 
| 78| Nazareth| 
| 79| Qazrin| 
| 80| En Gedi| 


### Get Satellite and Radar Images

```python
from weatheril import *
weather = WeatherIL(21,"he")
images = weather.get_radar_images()
```
The get_radar_images will retun an object with four lists:
* imsradar_images - Rain radar images (IMS).
* radar_images - Radar images.
* middle_east_satellite_images - Middel East weather sattelite images.
* europe_satellite_images - Eourope weather sattelite images.

You can also create animateg gif from this images lists by using the create_animation method as follows:

```python
from weatheril import *
weather = WeatherIL(21,"he")
images = weather.get_radar_images()
animated = create_animation(images = i.middle_east_satellite_images)
```
The function will return the path for the created image.

[![Sattelite](https://github.com/t0mer/py-weatheril/blob/main/screenshots/animated.gif?raw=true "Sattelite")](https://github.com/t0mer/py-weatheril/blob/main/screenshots/animated.gif?raw=true "Sattelite")



### Get current weather status for given location

```python
from weatheril import *
weather = WeatherIL(21,"he")
current = weather.get_current_analysis()
```

The result will be a weather object containing the data requested:
* Location.
* Humidity.
* Rain.
* Temperature.
* Wind speed.
* Feels like.
* Json result

```json
       "33": {
            "id": "1601809",
            "lid": "33",
            "forecast_time": "2023-01-25 16:00:00",
            "type": "analysis",
            "main_hour": "0",
            "heat_stress": "17",
            "relative_humidity": "58",
            "due_point_Temp": "11",
            "rain": null,
            "temperature": "20",
            "wind_direction_id": "15",
            "wind_speed": "2",
            "wind_chill": "20",
            "weather_code": null,
            "heat_stress_level": "0",
            "feels_like": "20",
            "min_temp": null,
            "max_temp": null,
            "modified": "2023-01-25 15:55:00",
            "created": "2023-01-22 11:50:05",
            "u_v_index": "0",
            "u_v_level": "L",
            "u_v_i_max": null,
            "u_v_i_factor": null
        }
```

### Get weather forcast


```python
from weatheril import *
weather = WeatherIL(21,"he")
forcats = weather.get_forcast()
```

This method wil return forcast object that includes weather forcast for the new 5 days. The object contains data on Coutry level and also on give location Forcast >> Daily >> Hourly.

```python

class Forcast:
    days: list

class Daily:
    date: datetime
    location: str
    day: str
    weather: str
    minimum_temperature: int
    maximum_temperature: int
    maximum_uvi: int
    hours: list
    description: str

class Hourly:
    hour: str
    weather: str
    temperature: int


```
