Get Live Weather Desktop Notifications Using Python

We know weather updates are how much important in our day-to-day life. So, We are introducing the logic and script with some easiest way to understand for everyone. Let’s see a simple Python script to show the live update for Weather information. 

Modules Needed

In this script, we are using some libraries

  • bs4: Beautiful Soup(bs4) is a Python library for pulling data out of HTML and XML files. To install this module type the below command in the terminal.
pip install bs4
  • win10toast: This library helps in creating desktop notifications. To install this module type the below command in the terminal.
pip install win10toast
  • requests: This library allows you to send HTTP/1.1 requests extremely easily. To install this module type the below command in the terminal.
pip install requests

Approach :

  1. Extract data form given URL.
  2. Scrape the data with the help of requests and Beautiful Soup.
  3. Convert that data into html code.
  4. Find the required details and filter them.
  5. Save the result in the String.
  6. Pass the result in Notification object.

Let’s execute the script step-by-step :

Step 1: Import all dependence



Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

import requests
from bs4 import BeautifulSoup
from win10toast import ToastNotifier

chevron_right


Step 2: Create an object of ToastNotifier class.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

n = ToastNotifier()

chevron_right


Step 3: Define a function for getting data from the given url.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

def getdata(url):
    
    r = requests.get(url)
      
    return r.text

chevron_right


Step 4: Now pass the URL into the getdata function and Convert that data into HTML code.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

htmldata = getdata("https://weather.com/en-IN/weather/today/l/25.59,85.14?par=google&temp=c/")
  
soup = BeautifulSoup(htmldata, 'html.parser')
  
print(soup.prettify())

chevron_right


After executing this script you will get raw data like these:



Raw HTML information 

Step 5: Find the required details and filter them 

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

current_temp = soup.find_all("span"
                             class_=" _-_-components-src-organism-CurrentConditions-CurrentConditions--tempValue--MHmYY")
chances_rain = soup.find_all("div"
                             class_= "_-_-components-src-organism-CurrentConditions-CurrentConditions--precipValue--2aJSf")
  
temp = (str(current_temp))   
temp_rain = str(chances_rain)
  
result = "current_temp " + temp[128:-9] + "  in patna bihar" + "\n" +temp_rain[131:-14]

chevron_right


Step 6: Now pass the result into notifications object.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

n.show_toast("Weather update", result, duration = 10)

chevron_right


Output :

notification 

Complete Code:

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# import required libraries
import requests
from bs4 import BeautifulSoup
from win10toast import ToastNotifier
  
# create an object to ToastNotifier class
n = ToastNotifier()
  
# define a function
def getdata(url):
    r = requests.get(url)
    return r.text
    
htmldata = getdata("https://weather.com/en-IN/weather/today/l/25.59,85.14?par=google&temp=c/")
  
soup = BeautifulSoup(htmldata, 'html.parser')
  
current_temp = soup.find_all("span", class_= "_-_-components-src-organism-CurrentConditions-CurrentConditions--tempValue--MHmYY")
  
chances_rain = soup.find_all("div", class_= "_-_-components-src-organism-CurrentConditions-CurrentConditions--precipValue--2aJSf")
  
temp = (str(current_temp))
  
temp_rain = str(chances_rain)
   
result = "current_temp " + temp[128:-9] + "  in patna bihar" + "\n" + temp_rain[131:-14]
n.show_toast("live Weather update"
             result, duration = 10)

chevron_right


Output:

Live Notification




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.