Get Live Weather Desktop Notifications Using Python (original) (raw)

Last Updated : 8 Jun, 2026

Desktop notifications provide a quick way to receive real-time information without opening an application. In this project, we'll build a Python script that fetches live weather data for a city using the Open-Meteo API and displays it as a desktop notification. This program:

How the Weather Notification System Works

Modules Needed

In this script, we are going to use these libraries libraries

pip install requests

pip install plyer

Step-by-Step Implementation

Step 1****:** Import the Required Modules

Python `

import requests from plyer import notification

`

Step 2: Get the Coordinates of the City

We’ll use the Open-Meteo Geocoding API to convert a city name into its latitude and longitude. We can change the city name to our liking.

Python `

city = "Delhi" geo_url = "https://geocoding-api.open-meteo.com/v1/search" geo_params = {"name": city, "count": 1} geo_res = requests.get(geo_url, params=geo_params).json()

`

**Explanation:

Step 3: Fetch Current Weather Data

If the city exists, we’ll use its coordinates to get temperature and wind speed from the Open-Meteo Weather API.

Python `

if "results" in geo_res: lat = geo_res["results"][0]["latitude"] lon = geo_res["results"][0]["longitude"]

weather_url = "https://api.open-meteo.com/v1/forecast"
weather_params = {
    "latitude": lat,
    "longitude": lon,
    "current_weather": True
}
weather_res = requests.get(weather_url, params=weather_params).json()

# Printing the fetched weather info, we can remove this step later
print(weather_res)

`

**Output: We can see the raw data that we fetched in the terminal.

weather_info

Weather info

**Explanation:

Step 4: Display the Notification

Once we have the weather data, we’ll show it on the desktop.

Python `

if "current_weather" in weather_res:
    temp = weather_res["current_weather"]["temperature"]
    wind = weather_res["current_weather"]["windspeed"]
    weather_info = f"{city}: {temp}°C, Wind {wind} km/h"

    print("Weather:", weather_info)

    notification.notify(
        title="Weather Update",
        message=weather_info,
        timeout=5
    )
else:
    print("Weather data not found")

else: print("City not found")

`

**Explanation:

Complete Code

Python `

import requests from plyer import notification

1. Get coordinates from city name

city = "Delhi" geo_url = "https://geocoding-api.open-meteo.com/v1/search" geo_params = {"name": city, "count": 1} geo_res = requests.get(geo_url, params=geo_params).json()

if "results" in geo_res: lat = geo_res["results"][0]["latitude"] lon = geo_res["results"][0]["longitude"]

# 2. Get weather data
weather_url = "https://api.open-meteo.com/v1/forecast"
weather_params = {
    "latitude": lat,
    "longitude": lon,
    "current_weather": True
}
weather_res = requests.get(weather_url, params=weather_params).json()

if "current_weather" in weather_res:
    temp = weather_res["current_weather"]["temperature"]
    wind = weather_res["current_weather"]["windspeed"]
    weather_info = f"{city}: {temp}°C, Wind {wind} km/h"

    print("Weather:", weather_info)

    # 3. Cross-platform notification
    notification.notify(
        title="Weather Update",
        message=weather_info,
        timeout=5
    )
else:
    print("Weather data not found")

else: print("City not found")

`

Let's run the script to get the current weather information for "New York" city:

**Output:

weather_info_new_york

Live Weather Info for "New York"

Let's try to fetch info for "Delhi" city.

**Output:

weather_info_delhi

Live Weather Info for "Delhi"