def get_sunset(address, from_grid=True): """Get sunset quality and parse into message""" # Load Sunburst API credentials EMAIL = os.getenv("SUNBURST_EMAIL") PASSWORD = os.getenv("SUNBURST_PW") url = "https://sunburst.sunsetwx.com/v1/login" # Get Sunburst API token via POST res = requests.post(url, auth=(EMAIL, PASSWORD)) # res = requests.post(url, data=payload) result = re.findall(r'token\":\"[0-9a-xA-Z-]*', res.text) token = "Bearer " + result[0][8:] # Get sunset quality via Sunburst GET headers = {"Authorization": token} url = "https://sunburst.sunsetwx.com/v1/quality" # Return if invalid coords coords = address_to_coord(address) if coords == -1: return "Invalid location. Please enter valid address." total = 0 # Get coordinates and quality at each coord coords_list = [] # If calculate quality from grid, false if calculate from single coord if from_grid: coords_list = generate_grid(coords) if len(coords_list) == 0: coords_list = [str(coords[0]) + "," + str(coords[1])] else: coords_list = [str(coords[0]) + "," + str(coords[1])] for coord in coords_list: data = {"geo": coord} res = requests.get(url, headers=headers, params=data) try: quality_percent = re.findall(r'quality_percent\":\d*\.\d*', res.text)[0][17:] except: return "Too many Sunburst requests. Try again later." total += float(quality_percent) quality_percent = total / float(len(coords_list)) quality = "" if quality_percent < 25: quality = "Poor" elif quality_percent < 50: quality = "Fair" elif quality_percent < 75: quality = "Good" else: quality = "Great" # Get today's sunset in local time sun = Sun(coords[0], coords[1]) today_ss = sun.get_sunset_time() # Convert time zone GEO_USERNAME = os.getenv("GEONAMES_USERNAME") geolocator = GeoNames(username=GEO_USERNAME) timezone = geolocator.reverse_timezone(coords) from_zone = tz.gettz("UTC") to_zone = tz.gettz(str(timezone)) today_ss = today_ss.replace(tzinfo=from_zone) sunset_time = today_ss.astimezone(to_zone) # Get day of week day_list = [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] day = day_list[datetime.datetime.today().weekday()] # Create message message = "Quality: " + quality + " " + str(round( quality_percent, 2)) + "%\nSunset at {}pm".format( sunset_time.strftime("%H:%M")) + "\n\n" + day + " at " + address return message