import logging from enum import Enum import requests import json logger = logging.getLogger(__name__) class WEATHER_OPTIONS(Enum): CURRENT_WEATHER = "weather" class FORECAST_INTERVAL(Enum): THREE_HOURS = "3h" FIVE_DAYS = "5d" class OpenWeatherMap: def __init__(self, api_key:str, city_id:int, units:str) -> None: self.api_key = api_key self.city_id = city_id assert (units in ["metric", "imperial"] ) self.units = units self._api_version = "2.5" self._base_url = f"https://api.openweathermap.org/data/{self._api_version}" def get_current_weather(self) -> dict: current_weather_url = f"{self._base_url}/weather?id={self.city_id}&appid={self.api_key}&units={self.units}" response = requests.get(current_weather_url) if not response.ok: raise AssertionError(f"Failure getting the current weather: code {response.status_code}. Reason: {response.text}") data = json.loads(response.text) return data def get_weather_forecast(self) -> dict: forecast_url = f"{self._base_url}/forecast?id={self.city_id}&appid={self.api_key}&units={self.units}" response = requests.get(forecast_url) if not response.ok: raise AssertionError(f"Failure getting the current weather: code {response.status_code}. Reason: {response.text}") data = json.loads(response.text)["list"] return data