Fix für Angebot an verschiedenen Tagen
This commit is contained in:
@@ -6,7 +6,7 @@ Zeigt den aktuellen Mensaplan der AR Mensa
|
|||||||
|
|
||||||
`$ mensaplan -h` zeigt einene Hilfetext
|
`$ mensaplan -h` zeigt einene Hilfetext
|
||||||
|
|
||||||
`$ mensaplan -m {menu|stamm|eintopf|vegetarisch}` zeigt nur das jeweilige Angebot
|
`$ mensaplan --json` gibt das angebot im JSON Format zurück
|
||||||
|
|
||||||
# Abhänigkeiten
|
# Abhänigkeiten
|
||||||
- python3
|
- python3
|
||||||
|
|||||||
49
mensaplan
49
mensaplan
@@ -1,7 +1,10 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
import datetime
|
||||||
import time
|
import time
|
||||||
import requests
|
import requests
|
||||||
import argparse
|
import argparse
|
||||||
|
import re
|
||||||
|
import json
|
||||||
from lxml import html
|
from lxml import html
|
||||||
|
|
||||||
PAGE = "http://www.studierendenwerk-siegen.de/speiseplan_anzeigen.php"
|
PAGE = "http://www.studierendenwerk-siegen.de/speiseplan_anzeigen.php"
|
||||||
@@ -11,47 +14,49 @@ EINTOPF = 4
|
|||||||
VEG = 5
|
VEG = 5
|
||||||
|
|
||||||
|
|
||||||
def get_menu(row_nr: int, tree) -> str:
|
def get_menu(menu: int, day: int, tree) -> str:
|
||||||
"""
|
"""
|
||||||
Gibt das Angebot für das gewählte Menü zurück
|
Gibt das Angebot für das gewählte Menü zurück
|
||||||
:param row_nr: Das Menü
|
:param menu: Das Menü
|
||||||
|
:param day: Wochentag als Integer
|
||||||
:param tree: Html des Speiseplans
|
:param tree: Html des Speiseplans
|
||||||
:return: String mit dem Menü
|
:return: String mit dem Menü
|
||||||
"""
|
"""
|
||||||
xpath = '//*[@id="respTabs"]/div[3]/div/div[{}]/div[1]'.format(str(row_nr))
|
# Erster Wert nimmt den div für den Wochentag, der zweite bestimmt den div des Angebots
|
||||||
|
xpath = '//*[@id="respTabs"]/div[{}]/div/div[{}]/div[1]'.format(str(day), str(menu))
|
||||||
div = tree.xpath(xpath)[0]
|
div = tree.xpath(xpath)[0]
|
||||||
out = ""
|
out = ""
|
||||||
for elem in div:
|
for elem in div:
|
||||||
if elem.tail:
|
if elem.tail:
|
||||||
out += elem.tail.strip()
|
out += elem.tail.strip() + " "
|
||||||
return out
|
return re.sub(' +',' ',out)
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Uni Siegen Mensaplan')
|
parser = argparse.ArgumentParser(description='Uni Siegen Mensaplan')
|
||||||
parser.add_argument('-m', default="-a", nargs=1, choices=["menu", "stamm", "eintopf", "vegetarisch"],
|
parser.add_argument('--json', action='store_const', const=1)
|
||||||
help="Welches Angebot soll gezeigt werden (Default: Alle)")
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
page = requests.get(PAGE)
|
page = requests.get(PAGE)
|
||||||
tree = html.fromstring(page.content)
|
tree = html.fromstring(page.content)
|
||||||
|
|
||||||
option = args.m[0]
|
# python weekday mit 0 startet, das die mensa Seite aber mit 1
|
||||||
if not option == '-':
|
weekday = datetime.datetime.today().weekday() + 1
|
||||||
if option == "menu":
|
|
||||||
print(get_menu(MENU, tree))
|
if args.json == 1:
|
||||||
if option == "stamm":
|
json_out = {
|
||||||
print(get_menu(STAMM, tree))
|
"menu": get_menu(MENU, weekday, tree),
|
||||||
if option == "eintopf":
|
"stamm": get_menu(STAMM, weekday, tree),
|
||||||
print(get_menu(EINTOPF, tree))
|
"veg": get_menu(VEG, weekday, tree),
|
||||||
if option == "vegetarisch":
|
"eintopf": get_menu(EINTOPF, weekday, tree)
|
||||||
print(get_menu(VEG, tree))
|
}
|
||||||
|
print(json.dumps(json_out, indent=4))
|
||||||
else:
|
else:
|
||||||
print("Mensaplan der Uni Siegen für den {}:\n".format(time.strftime("%d.%m.%Y")))
|
print("Mensaplan der Uni Siegen für den {}:\n".format(time.strftime("%d.%m.%Y")))
|
||||||
print("Menü:")
|
print("Menü:")
|
||||||
print(get_menu(MENU, tree) + "\n")
|
print(get_menu(MENU, weekday, tree) + "\n")
|
||||||
print("Stammstisch:")
|
print("Stammstisch:")
|
||||||
print(get_menu(STAMM, tree) + "\n")
|
print(get_menu(STAMM, weekday, tree) + "\n")
|
||||||
print("Vegetarisches Menü:")
|
print("Vegetarisches Menü:")
|
||||||
print(get_menu(VEG, tree) + "\n")
|
print(get_menu(VEG, weekday, tree) + "\n")
|
||||||
print("Eintopf:")
|
print("Eintopf:")
|
||||||
print(get_menu(EINTOPF, tree) + "\n")
|
print(get_menu(EINTOPF, weekday, tree) + "\n")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user