import requests import math import sys import iconSelector as iconSelect weatherIcon = "" try: stationName = sys.argv[1] except IndexError: # if no argument given, default to Hartsfield Jackson International Airport (KATL) stationName = "KATL" # Rounds decimals up or down def rounding(num): test = num % 1 result = 0 if (test >= 0.5): result = math.ceil(num) else: result = math.floor(num) return result def convertToF(num): return (((num * 9) / 5) + 32) def convertToMPH(num): return num * 0.621371 def convertCompass(num): if num in range(338, 360, 1) or num in range(0, 23, 1): return "N" elif num in range(23, 68, 1): return "NE" elif num in range(68, 113, 1): return "E" elif num in range(113, 158, 1): return "SE" elif num in range(158, 203, 1): return "S" elif num in range(203, 248, 1): return "SW" elif num in range(248, 293, 1): return "W" elif num in range(293, 338, 1): return "NW" else: return "error" def tooltipPrinter(r_dict): info = r_dict['properties'] # Print station name, temp, humidity, wind speed, wind direction stationName = f"Station Name: {info['stationName']}" condition = f"Current Condition: {info['textDescription']}" temp = f"Temp: {rounding(convertToF(info['temperature']['value']))}\u00b0F" humidity = f"Humidity: {rounding(info['relativeHumidity']['value'])}%" # If no windSpeed, NWS returns "None". if (not info['windSpeed']['value']): windSpeed = 0 windDirection = 0 else: windSpeed = rounding(convertToMPH(info['windSpeed']['value'])) windDirection = info['windDirection']['value'] windData = f"Wind: {windSpeed} MPH, {convertCompass(windDirection)}, {windDirection}\u00b0" precipitation = f"Precipitation (3 Hrs.): {info['precipitationLast3Hours']['value']}" result = f"{stationName}\n{condition}\n{temp}\ \n{windData}\n{humidity}\n{precipitation}" return result request_addr = f"https://api.weather.gov/stations/{stationName}/observations/latest" try: r = requests.get(request_addr) except Exception as err: print("No Connection") print(f"Error Detected: /n {err}") else: if r.status_code != 200: print("No Connection to NWS") else: request_json = r.json() temp = convertToF(request_json["properties"]["temperature"]["value"]) roundedTemp = rounding(temp) condition = request_json["properties"]["textDescription"] parsedCondition = iconSelect.parseDescription(condition) if not (request_json['properties']['icon']): timeOfDay = "day" else: timeOfDay = request_json['properties']['icon'].split("/")[5] weatherIcon = iconSelect.imageSelector(parsedCondition, timeOfDay) # print(f" \u2601 {condition}, {roundedTemp} F") print( f"{weatherIcon}{roundedTemp}\u00b0F") print(tooltipPrinter(request_json))