Jan-03-2022, 08:18 PM
Hello,
I'm trying to figure out how to call the
of my Weather.py script into another script I have.
I tried making a function for the print statements
and tried calling it like:
but that did not work.
Any idea's on how to get this to work?
Any help is greatly appreciated, thanks.
My Weather.py Code:
My Main Code I want to import my Weather Script into:
I'm trying to figure out how to call the
1 |
#print data part |
I tried making a function for the print statements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
def displayData(): # print data print ( "Weather for:" , data[ "region" ]) print ( "Now:" , data[ "dayhour" ]) print ( f "Temperature now: {data['temp_now']}°C" ) print ( "Description:" , data[ 'weather_now' ]) print ( "Precipitation:" , data[ "precipitation" ]) print ( "Humidity:" , data[ "humidity" ]) print ( "Wind:" , data[ "wind" ]) print ( "Next days:" ) for dayweather in data[ "next_days" ]: print ( "=" * 40 , dayweather[ "name" ], "=" * 40 ) print ( "Description:" , dayweather[ "weather" ]) print ( f "Max temperature: {dayweather['max_temp']}°C" ) print ( f "Min temperature: {dayweather['min_temp']}°C" ) |
1 |
from Weather import displayData |
Any idea's on how to get this to work?
Any help is greatly appreciated, thanks.
My Weather.py Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
from bs4 import BeautifulSoup as bs import requests USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36" # US english LANGUAGE = "en-US,en;q=0.5" def get_weather_data(url): session = requests.Session() session.headers[ 'User-Agent' ] = USER_AGENT session.headers[ 'Accept-Language' ] = LANGUAGE session.headers[ 'Content-Language' ] = LANGUAGE html = session.get(url) # create a new soup soup = bs(html.text, "html.parser" ) # store all results on this dictionary result = {} # extract region result[ 'region' ] = soup.find( "div" , attrs = { "id" : "wob_loc" }).text # extract temperature now result[ 'temp_now' ] = soup.find( "span" , attrs = { "id" : "wob_tm" }).text # get the day and hour now result[ 'dayhour' ] = soup.find( "div" , attrs = { "id" : "wob_dts" }).text # get the actual weather result[ 'weather_now' ] = soup.find( "span" , attrs = { "id" : "wob_dc" }).text # get the precipitation result[ 'precipitation' ] = soup.find( "span" , attrs = { "id" : "wob_pp" }).text # get the % of humidity result[ 'humidity' ] = soup.find( "span" , attrs = { "id" : "wob_hm" }).text # extract the wind result[ 'wind' ] = soup.find( "span" , attrs = { "id" : "wob_ws" }).text # get next few days' weather next_days = [] days = soup.find( "div" , attrs = { "id" : "wob_dp" }) for day in days.findAll( "div" , attrs = { "class" : "wob_df" }): # extract the name of the day day_name = day.findAll( "div" )[ 0 ].attrs[ 'aria-label' ] # get weather status for that day weather = day.find( "img" ).attrs[ "alt" ] temp = day.findAll( "span" , { "class" : "wob_t" }) # maximum temparature in Celsius, use temp[1].text if you want fahrenheit max_temp = temp[ 0 ].text # minimum temparature in Celsius, use temp[3].text if you want fahrenheit min_temp = temp[ 2 ].text next_days.append({ "name" : day_name, "weather" : weather, "max_temp" : max_temp, "min_temp" : min_temp}) # append to result result[ 'next_days' ] = next_days return result if __name__ = = "__main__" : import argparse parser = argparse.ArgumentParser(description = "Quick Script for Extracting Weather data using Google Weather" ) parser.add_argument( "region" , nargs = "?" , help = """Region to get weather for, must be available region. Default is your current location determined by your IP Address""" , default = "") # parse arguments args = parser.parse_args() region = args.region URL + = region # get data data = get_weather_data(URL) # print data print ( "Weather for:" , data[ "region" ]) print ( "Now:" , data[ "dayhour" ]) print ( f "Temperature now: {data['temp_now']}°C" ) print ( "Description:" , data[ 'weather_now' ]) print ( "Precipitation:" , data[ "precipitation" ]) print ( "Humidity:" , data[ "humidity" ]) print ( "Wind:" , data[ "wind" ]) print ( "Next days:" ) for dayweather in data[ "next_days" ]: print ( "=" * 40 , dayweather[ "name" ], "=" * 40 ) print ( "Description:" , dayweather[ "weather" ]) print ( f "Max temperature: {dayweather['max_temp']}°C" ) print ( f "Min temperature: {dayweather['min_temp']}°C" ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
#!/usr/bin/env python3 import json import random import datetime import operator import requests from bs4 import BeautifulSoup from Weather import * import wikipedia import wolframalpha import pyttsx3 import espeakng import speech_recognition as sr Commander = "Commander" print ( "Initializing B.A.X.T.E.R..." ) def speak(text): mySpeaker = espeakng.Speaker() #mySpeaker.say('Initializing Baxter') def wishMe(): hour = int (datetime.datetime.now().hour) if hour> = 0 and hour< 12 : speak( "Good Morning" + Commander) print ( "Good Morning " + Commander) elif hour> = 12 and hour< 18 : speak( "Good Afternoon" + Commander) print ( "Good Afternoon " + Commander) else : speak( "Good Evening" + Commander) print ( "Good Evening " + Commander) speak( "How may I be of service?" ) print ( "How may I be of service?" ) def listenCommand(): command = 0 hear = sr.Recognizer() with sr.Microphone() as source: print ( "Listening..." ) audio = hear.listen(source) #--------------------------- # Uses google API to listen try : print ( "Recognizing..." ) command = hear.recognize_google(audio, language = 'en-in' ) print ( f '{Commander} : {command}\n' ) except : pass return command #-------------------------------- speak( "Initializing Baxter.........." ) wishMe() def main(): command = listenCommand() command = str (command).lower() #------------------------------------------------------------------------------------- #Search Wikipedia (General Info) #------------------------------------------------------------------------------------- if ( 'who is' in command) or ( 'what is the' in command) or ( 'what is a' in command): speak( 'Searching Wikipedia...' ) command = command.replace( "who is" ,"") command = command.replace( "what is the" ,"") command = command.replace( "what is a" ,"") results = wikipedia.summary(command, sentences = 2 ) print ( "Baxter:" ,results) return speak(results) #------------------------------------------------------------------------------------- #Search Wolfram Alpha (Math/Conversions, Definitions) #------------------------------------------------------------------------------------- elif ( 'calculate' in command) or ( 'what is' in command) or ( 'define' in command): speak( 'Searching Wolfram Alpha...' ) command = command.replace( "calculate" ,"") command = command.replace( "what is" ,"") command = command.replace( "define" ,"") # Wolframalpha App Id appId = 'JH9XHR-W9J76L7H5A' # Wolfram Instance client = wolframalpha.Client(appId) res = client.query(''.join(command)) results = next (res.results).text print ( "Baxter:" ,results) return speak(results) #------------------------------------------------------------------------------------- #Search News #------------------------------------------------------------------------------------- elif ( 'news' in command): speak( 'Searching news networks...' ) command = command.replace( "news" ,"") url = 'https://www.google.com/search?q=windsor+news&client=firefox-b-d&source=lnms&tbm=nws&sa=X&ved=2ahUKEwjFr5SwoJb1AhXELs0KHdabBAEQ_AUoAXoECAEQAw&biw=1024&bih=486' results = requests.get(url) soup = BeautifulSoup(results.text, 'html.parser' ) headlines = soup.find( 'body' ).find_all( 'h3' ) for x in headlines: print ( "Baxter:" ,x.text.strip()) return speak(results) #------------------------------------------------------------------------------------- #Search Weather #------------------------------------------------------------------------------------- elif ( 'weather' in command): speak( 'Searching weather networks...' ) command = command.replace( "weather" ,"") #call weather print data here #------------------------------------------------------------------------------------- elif 'stop' in command: speak( "Shutting Down..." ) return exit() else : return 0 while True : main() |