2 Commits
4 changed files with 33 additions and 11 deletions
+1
View File
@@ -0,0 +1 @@
.venv
+1
View File
@@ -2,3 +2,4 @@ fastapi[standard]==0.114.0
Jinja2==3.1.4
requests==2.32.3
cachetools==5.5.0
beautifulsoup4==4.12.3
+21 -6
View File
@@ -2,27 +2,42 @@ from fastapi import FastAPI
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
import requests
from cachetools import cached, TTLCache
from bs4 import BeautifulSoup
import requests
import re
cache = TTLCache(maxsize=1, ttl=3600)
app = FastAPI()
templates = Jinja2Templates(directory="template")
regex = re.compile(r'Spätzle <sup>([^/]*)<\/sup>')
@cached(cache)
def checkMensa():
print("Checking Mensa")
url = 'https://seezeit.com/essen/speiseplaene/mensa-giessberg/'
r = requests.get(url)
text = r.text
pos = text.find('Spätzle')
if pos != -1:
cut = r.text[r.text.find('Spätzle'):r.text.find('Spätzle')+50]
ingredients = cut.split('(')[1].split(')')[0].split(',')
soup = BeautifulSoup(r.text, 'html.parser')
today = soup.find('a', class_='heute')['rel'][0]
today_menu = soup.find('div', id=f'tab{today}')
meals = today_menu.find_all('div', class_='title')
spaetzle = None
for m in meals:
if "Spätzle" in m.text:
spaetzle = m
break
if spaetzle is not None:
ingredients = re.search(regex, str(spaetzle)).group(1)
if '28' in ingredients:
answer = "Spätzle with egg today"
color = "green"
emoji = "✅"
else:
answer = "WARNING: Spätzle without egg today"
color = "red"
+9 -4
View File
@@ -7,10 +7,10 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<title>{{text}} - {{emoji}}</title>
<title>{{text}} - {{emoji}}</title>
<style>
body {
background-color: {{ color}};
background-color: {{ color }};
color: #f0f0f0;
font-family: Roboto,
sans-serif;
@@ -40,7 +40,9 @@
color: #f0f0f0;
padding: 10px;
text-align: center;
font-size: smaller;
}
span {
background-color: salmon;
padding: 5px;
@@ -48,6 +50,7 @@
border-radius: 5px;
color: white;
}
a {
text-decoration: none;
color: white;
@@ -68,8 +71,10 @@
<a href="https://kubernetes.io/de/"><span>k8s</span></a>
<a href="https://fastapi.tiangolo.com/"><span>fastapi</span></a>
<a href="https://github.com/traberph/mensa-check"><span>github</span></a>
<a href="https://seezeit.com/essen/speiseplaene/mensa-giessberg/"><span>seezeit</span></a></p>
<p>Imprint: <a href="https://github.com/traberph">Philipp Traber</a></p>
<a href="https://seezeit.com/essen/speiseplaene/mensa-giessberg/"><span>seezeit</span></a>
</p>
<p>Imprint: <a href="https://github.com/traberph">Philipp Traber</a>; Legal Notice: Not associated with seezeit
</p>
</footer>
</body>