mirror of
https://github.com/traberph/mensa-check.git
synced 2026-10-06 10:14:46 +00:00
error handling
This commit is contained in:
+35
-27
@@ -7,7 +7,9 @@ from cachetools import cached, TTLCache
|
|||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
import requests
|
import requests
|
||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger("uvicorn.error")
|
||||||
|
|
||||||
cache = TTLCache(maxsize=1, ttl=3600)
|
cache = TTLCache(maxsize=1, ttl=3600)
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
@@ -16,39 +18,45 @@ regex = re.compile(r'spätzle <sup>([^/]*)</sup>', re.IGNORECASE)
|
|||||||
|
|
||||||
@cached(cache)
|
@cached(cache)
|
||||||
def checkMensa():
|
def checkMensa():
|
||||||
print("Checking Mensa")
|
logger.info("Checking Mensa")
|
||||||
|
|
||||||
url = 'https://seezeit.com/essen/speiseplaene/mensa-giessberg/'
|
try:
|
||||||
r = requests.get(url)
|
url = 'https://seezeit.com/essen/speiseplaene/mensa-giessberg/'
|
||||||
soup = BeautifulSoup(r.text, 'html.parser')
|
r = requests.get(url)
|
||||||
|
soup = BeautifulSoup(r.text, 'html.parser')
|
||||||
|
|
||||||
today = soup.find('a', class_='heute')['rel'][0]
|
today = soup.find('a', class_='heute')['rel'][0]
|
||||||
today_menu = soup.find('div', id=f'tab{today}')
|
today_menu = soup.find('div', id=f'tab{today}')
|
||||||
meals = today_menu.find_all('div', class_='title')
|
meals = today_menu.find_all('div', class_='title')
|
||||||
|
|
||||||
spaetzle = None
|
spaetzle = None
|
||||||
for m in meals:
|
for m in meals:
|
||||||
if "spätzle" in m.text.lower():
|
if "spätzle" in m.text.lower():
|
||||||
spaetzle = m
|
spaetzle = m
|
||||||
break
|
break
|
||||||
|
|
||||||
if spaetzle is not None:
|
if spaetzle is not None:
|
||||||
ingredients = re.search(regex, str(spaetzle)).group(1)
|
ingredients = re.search(regex, str(spaetzle)).group(1)
|
||||||
if '28' in ingredients:
|
if '28' in ingredients:
|
||||||
answer = "Spätzle with egg today"
|
answer = "Spätzle with egg today"
|
||||||
color = "green"
|
color = "green"
|
||||||
emoji = "✅"
|
emoji = "✅"
|
||||||
|
|
||||||
|
else:
|
||||||
|
answer = "WARNING: Spätzle without egg today"
|
||||||
|
color = "red"
|
||||||
|
emoji = "❌"
|
||||||
else:
|
else:
|
||||||
answer = "WARNING: Spätzle without egg today"
|
answer = "No Spätzle today "
|
||||||
color = "red"
|
color = "grey"
|
||||||
emoji = "❌"
|
emoji = "🤷"
|
||||||
else:
|
except Exception as e:
|
||||||
answer = "No Spätzle today "
|
answer = "No menu today"
|
||||||
color = "grey"
|
color = "grey"
|
||||||
emoji = "🤷"
|
emoji = "⛱️"
|
||||||
|
finally:
|
||||||
return answer, color, emoji
|
logger.info(f"Answer: {answer}, Color: {color}, Emoji: {emoji}")
|
||||||
|
return answer, color, emoji
|
||||||
|
|
||||||
@app.get("/", response_class=HTMLResponse)
|
@app.get("/", response_class=HTMLResponse)
|
||||||
async def root(request: Request):
|
async def root(request: Request):
|
||||||
|
|||||||
Reference in New Issue
Block a user