Files
api-weather/utils/weather.py
2024-03-03 17:11:52 +01:00

56 lines
1.9 KiB
Python

import httpx
OPEN_METEO_URL = "https://api.open-meteo.com/v1/forecast"
HOURLY = "temperature_2m"
def weather_average(latitude: float, longitude: float, forecast: int) -> float:
params = {"latitude": latitude, "longitude": longitude, "hourly": "temperature_2m", "forecast_days": forecast}
# Using httpx to make the GET request
with httpx.Client() as client:
response = client.get(OPEN_METEO_URL, params=params)
# Check if the response status code is 200
if response.status_code == 200:
data = response.json()
else:
# Handle non-200 responses appropriately
response.raise_for_status()
# Extracting the temperature data
weather_data = data["hourly"]["temperature_2m"]
# Calculating the average temperature
average_data = round((sum(weather_data) / len(weather_data)), 2)
return average_data
def need_umbrella(latitude: float, longitude: float, forecast: int) -> list:
params = {"latitude": latitude, "longitude": longitude, "hourly": "precipitation_probability", "forecast_days": forecast}
# Using httpx to make the GET request
with httpx.Client() as client:
response = client.get(OPEN_METEO_URL, params=params)
# Check if the response status code is 200
if response.status_code == 200:
data = response.json()
else:
# Handle non-200 responses appropriately
response.raise_for_status()
# Extracting time and precipitation probability data
times = data["hourly"]["time"]
precipitation_probabilities = data["hourly"]["precipitation_probability"]
# Filtering times where precipitation probability is >= 50
times_with_high_precipitation = [
times[i] for i, probability in enumerate(precipitation_probabilities) if probability >= 50
]
return times_with_high_precipitation