add python for updating chat bubble.
This commit is contained in:
96
build-svg.py
Normal file
96
build-svg.py
Normal file
@@ -0,0 +1,96 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user