import openmeteo_requests import requests_cache from retry_requests import retry import requests import sys conditions = { 0: "", 1: "", 2: "", 3: "", 45: "", 48: "", 51: "", 53: "", 55: "", 61: "", 63: "", 65: "", 71: "", 73: "", 75: "", 95: "", 96: "", 99: "", } latitude, longitude = eval(requests.get("https://ipinfo.io/loc").text) city = requests.get("https://ipinfo.io/city").text.strip() cache_session = requests_cache.CachedSession('.cache', expire_after=3600) retry_session = retry(cache_session, retries=5, backoff_factor = 0.2) openmeteo = openmeteo_requests.Client(session = retry_session) url = "https://api.open-meteo.com/v1/forecast" params = { "latitude": latitude, "longitude": longitude, "current": ["is_day", "weather_code", "temperature_2m"], "temperature_unit": "fahrenheit", "wind_speed_unit": "mph", "precipitation_unit": "inch" } responses = openmeteo.weather_api(url, params=params) response = responses[0] current = response.Current() current_is_day = bool(current.Variables(0).Value()) current_weather_code = int(current.Variables(1).Value()) current_temperature = int(current.Variables(2).Value()) print(f"{city} {conditions[current_weather_code]} {current_temperature}°F") #try: #location_info = weather_json["properties"]["relativeLocation"]["properties"] #except KeyError: #if weather_json["status"] == 404: #print("NOAA only supports U.S. locations") #city = location_info["city"] #state = location_info["state"] #forecast_url = weather_json["properties"]["forecast"] #forecast_json = requests.get(forecast_url).json() #current_forecast = forecast_json["properties"]["periods"][0] #temperature = current_forecast["temperature"] #temperature_units = current_forecast["temperatureUnit"] #short_forecast = current_forecast["shortForecast"] #try: #print(f"{city}, {state} {conditions[short_forecast]} {temperature}°{temperature_units}") #except KeyError: #print(f"{city}, {state} {short_forecast} {temperature}°{temperature_units}")