import os import requests import pendulum import json from dotenv import load_dotenv import sys from pathlib import Path # load env files load_dotenv() # part of current dir app_path = Path(__file__).parent # Environment variable for API key WEATHER_API_KEY = os.getenv("WEATHER_API_KEY") WEATHER_DOMAIN = "http://dataservice.accuweather.com" # emojis that accuweather uses emojis = { 1: "☀️", 2: "☀️", 3: "🌤", 4: "🌤", 5: "🌤", 6: "🌥", 7: "☁️", 8: "☁️", 11: "🌫", 12: "🌧", 13: "🌦", 14: "🌦", 15: "⛈", 16: "⛈", 17: "🌦", 18: "🌧", 19: "🌨", 20: "🌨", 21: "🌨", 22: "❄️", 23: "❄️", 24: "🌧", 25: "🌧", 26: "🌧", 29: "🌧", 30: "🥵", 31: "🥶", 32: "💨", } dayBubbleWidths = { "Monday": 235, "Tuesday": 235, "Wednesday": 260, "Thursday": 245, "Friday": 220, "Saturday": 245, "Sunday": 230, } # Time since graduating today = pendulum.now() todayDay = today.format("dddd") psTime = pendulum.instance(today).diff_for_humans( pendulum.datetime(2023, 12, 14), absolute=True ) # Today's weather locationKey = "331416" # Bellingham url = f"forecasts/v1/daily/1day/{locationKey}?apikey={WEATHER_API_KEY}" try: response = requests.get(f"{WEATHER_DOMAIN}/{url}") response.raise_for_status() json_data = response.json() degF = round(json_data["DailyForecasts"][0]["Temperature"]["Maximum"]["Value"]) degC = round((degF - 32) * 5 / 9) icon = json_data["DailyForecasts"][0]["Day"]["Icon"] with open(app_path / "template.svg", "r", encoding="utf-8") as file: data = file.read() data = data.replace("{degF}", str(degF)) data = data.replace("{degC}", str(degC)) data = data.replace("{weatherEmoji}", emojis[icon]) data = data.replace("{psTime}", psTime) data = data.replace("{todayDay}", todayDay) data = data.replace("{dayBubbleWidth}", str(dayBubbleWidths[todayDay])) with open(app_path / "chat.svg", "w", encoding="utf-8") as file: file.write(data) except requests.exceptions.RequestException as err: print(err, file=sys.stderr)