Fix für Angebot an verschiedenen Tagen

This commit is contained in:
luxick
2017-08-24 13:24:01 +02:00
parent 653564ab46
commit fffd9038a7
2 changed files with 28 additions and 23 deletions

View File

@@ -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

View File

@@ -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")