Skip to content

Commit d37698d

Browse files
committed
Use async and add support for second counter
1 parent b6bacfe commit d37698d

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed

maubot.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ maubot: 0.1.0
55
id: com.valentinriess.mensa
66

77
# A PEP 440 compliant version string.
8-
version: 0.0.4
8+
version: 0.0.5
99

1010
# The SPDX license identifier for the plugin. https://spdx.org/licenses/
1111
# Optional, assumes all rights reserved if omitted.

mensabot.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from mautrix.types import TextMessageEventContent, MessageType, Format, RelatesTo, RelationType
44
from maubot import Plugin, MessageEvent
55
from maubot.handlers import command
6-
import requests
76

87
URL = 'https://www.studentenwerk-magdeburg.de/mensen-cafeterien/mensa-unicampus/'
98

@@ -13,7 +12,8 @@ class MensaBot(Plugin):
1312
@command.new("hunger", help="Show the meals")
1413
@command.argument("message", pass_raw=True, required=False)
1514
async def hunger_handler(self, evt: MessageEvent, message: str = "") -> None:
16-
menu: Menu = Menu(URL)
15+
menu: Menu = Menu()
16+
await menu.init(self, URL)
1717
content = TextMessageEventContent(
1818
msgtype=MessageType.NOTICE, format=Format.HTML,
1919
body=f"{menu}",
@@ -35,12 +35,15 @@ def __init__(self, name: str, price: str):
3535
self.name = name
3636
self.price = price
3737

38+
3839
def __str__(self) -> str:
3940
return self.name + "\n" + self.price
4041

42+
4143
def to_list(self) -> List:
4244
return [self.name, self.price]
4345

46+
4447
def to_dict(self) -> Dict:
4548
return {
4649
"name": self.name,
@@ -53,35 +56,42 @@ class Menu:
5356
day: str = ""
5457
meals: List[Meal] = []
5558

56-
def __init__(self, url: str):
59+
async def init(self, mensabot: Plugin, url: str) -> None:
5760
self.meals = []
58-
page = requests.get(url)
59-
soup = BeautifulSoup(page.content, 'html.parser')
60-
div_mensa = soup.find("div", class_="mensa")
61-
self.day = div_mensa.find("table").find("thead").find("tr").find("td").string
62-
for element in div_mensa.find("table").find("tbody").find_all("tr"):
63-
meal = Meal(element.find_all("td").pop(0).find("strong").contents.pop(0).string,
64-
element.find_all("td").pop(0).contents.pop(2).string)
65-
self.meals.append(meal)
61+
async with mensabot.http.get(url) as resp:
62+
page = await resp.text()
63+
mensabot.log.info(page)
64+
soup = BeautifulSoup(page, 'html.parser')
65+
div_mensa = soup.find_all("div", class_="mensa")
66+
self.day = div_mensa[0].find("table").find("thead").find("tr").find("td").string
67+
for mensa_table in div_mensa:
68+
for element in mensa_table.find("table").find("tbody").find_all("tr"):
69+
meal = Meal(element.find_all("td").pop(0).find("strong").contents.pop(0).string,
70+
element.find_all("td").pop(0).contents.pop(2).string)
71+
self.meals.append(meal)
72+
6673

6774
def __str__(self) -> str:
6875
plain_text = ""
6976
for meal in self.meals:
7077
plain_text += "\n----------\n" + str(meal)
7178
return f'Speiseplan für {self.day}:{plain_text}'
7279

80+
7381
def to_html(self) -> str:
7482
plain_text = ""
7583
for meal in self.meals:
7684
plain_text += "<hr><br><strong>" + meal.name + "</strong><br>" + meal.price
7785
return f'<h3>Speiseplan für {self.day}:</h3>{plain_text}'
7886

87+
7988
def to_list(self) -> List[List]:
8089
result = []
8190
for meal in self.meals:
8291
result.append(meal.to_list())
8392
return result
8493

94+
8595
def to_dict(self) -> Dict:
8696
result = {}
8797
for i in range(len(self.meals)):

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
requests~=2.25.1
21
beautifulsoup4~=4.9.3
32
mautrix~=0.9.5
43
maubot~=0.1.2

0 commit comments

Comments
 (0)