OpenWeatherWrap
OpenWeatherWrap is an unofficial wrapper for the OpenWeatherMap API.
Endpoints included in the wrapper
One Call API 3.0
Current Weather API
3-hour Forecast 5 days
Air Pollution API
Geocoding API
Weather Maps 1.0
Getting Started
To install this package run
pip install openweatherwrap
To start fetching weather data, make sure you have an API-key from OpenWeatherMap.
Examples
One Call API
from openweatherwrap.api import OneCallAPI
# Create an instance of the API
api = OneCallAPI(API_KEY, "London, England", units="metric")
# Get only the current weather
response = api.get_weather(exclude=["minutely", "hourly", "daily", "alerts"])
#Access the data
print(f"The current temperature in London is {response.get_current_temp()}°C.")
print(f"The temperature feels like {response.get_current_feels_like()}°C")
Current Weather API
from openweatherwrap.api import CurrentWeatherAPI
# Create an instance of the API
api = CurrentWeatherAPI(API_KEY, "London, England", units='imperial')
# Getting the data
response = api.get_weather()
print(f"The current wind speed in London is {response.get_wind_speed()} miles per hour.")
5-Day/3-Hour Forecast
from openweatherwrap.api import FiveDayForecast
# Create an instance of the API
api = FiveDayForecast(API_KEY, "London, England", mode='xml')
# Getting the forecast
response = api.get_forecast()
temperature_sorted = sorted(response.get_temperature())
print(f"During the following five days, London will experience temperatures from {temperature_sorted[0]} Kelvin to {temperature_sorted[-1]} Kelvin")
Air Pollution API
from openweatherwrap.api import AirPollutionAPI
# Create an instance of the API
api = AirPollutionAPI(API_KEY, "London, England")
# Getting the current air pollution
response = api.get_current_air_pollution()
print(f"London currently has an AQI of {response.get_aqi()} and has {response.get_nitrogen_dioxide()}µg/m³ of NO₂.")
Geocoding API
from openweatherwrap.api import GeocodingAPI
# Create an instance of the API
api = GeocodingAPI(API_KEY)
# Getting the data
response = api.get_by_city("London", "England")
print(f"London has a latitude of {response.get_latitude()}° and a longitude of {response.get_longitude()}°")
Async
OpenWeatherWrap also includes asynchronous handling of the OpenWeatherMap API.
The usage is almost the same as the synchronous handler.
from openweatherwrap.asyncapi import OneCallAPI
import asyncio
async def onecall_example():
# Create an instance of the API
api = OneCallAPI(API_KEY, "London, England", units="metric")
# Get only the current weather
response = await api.get_weather(exclude=["minutely", "hourly", "daily", "alerts"])
#Access the data
print(f"The current temperature in London is {response.get_current_temp()}°C.")
print(f"The temperature feels like {response.get_current_feels_like()}°C")
if __name__ == "__main__":
asyncio.run(onecall_example())
Attribution
Weather data provided by OpenWeather