104 lines
2.2 KiB
Python
104 lines
2.2 KiB
Python
|
|
#!/bin/env python3
|
||
|
|
|
||
|
|
import requests
|
||
|
|
import html
|
||
|
|
from datetime import datetime
|
||
|
|
from TTS.api import TTS
|
||
|
|
|
||
|
|
MENSA_API = "https://www.mensa-kl.de/api.php?format=json&date=0"
|
||
|
|
|
||
|
|
LOCATION_NAMES = {
|
||
|
|
"1": "Ausgabe Eins",
|
||
|
|
"1veg": "Ausgabe Eins vegetarisch",
|
||
|
|
"2": "Ausgabe Zwei",
|
||
|
|
"2veg": "Ausgabe Zwei vegetarisch",
|
||
|
|
"2vegan": "Ausgabe Zwei vegan",
|
||
|
|
"Grill": "Grill",
|
||
|
|
}
|
||
|
|
|
||
|
|
MONTHS = {
|
||
|
|
1: "Januar",
|
||
|
|
2: "Februar",
|
||
|
|
3: "März",
|
||
|
|
4: "April",
|
||
|
|
5: "Mai",
|
||
|
|
6: "Juni",
|
||
|
|
7: "Juli",
|
||
|
|
8: "August",
|
||
|
|
9: "September",
|
||
|
|
10: "Oktober",
|
||
|
|
11: "November",
|
||
|
|
12: "Dezember",
|
||
|
|
}
|
||
|
|
|
||
|
|
DAYS = {
|
||
|
|
1: "ersten",
|
||
|
|
2: "zweiten",
|
||
|
|
3: "dritten",
|
||
|
|
4: "vierten",
|
||
|
|
5: "fünften",
|
||
|
|
6: "sechsten",
|
||
|
|
7: "siebten",
|
||
|
|
8: "achten",
|
||
|
|
9: "neunten",
|
||
|
|
10: "zehnten",
|
||
|
|
11: "elften",
|
||
|
|
12: "zwölften",
|
||
|
|
13: "dreizehnten",
|
||
|
|
14: "vierzehnten",
|
||
|
|
15: "fünfzehnten",
|
||
|
|
16: "sechzehnten",
|
||
|
|
17: "siebzehnten",
|
||
|
|
18: "achtzehnten",
|
||
|
|
19: "neunzehnten",
|
||
|
|
20: "zwanzigsten",
|
||
|
|
21: "einundzwanzigsten",
|
||
|
|
22: "zweiundzwanzigsten",
|
||
|
|
23: "dreiundzwanzigsten",
|
||
|
|
24: "vierundzwanzigsten",
|
||
|
|
25: "fünfundzwanzigsten",
|
||
|
|
26: "sechsundzwanzigsten",
|
||
|
|
27: "siebenundzwanzigsten",
|
||
|
|
28: "achtundzwanzigsten",
|
||
|
|
29: "neunundzwanzigsten",
|
||
|
|
30: "dreißigsten",
|
||
|
|
31: "einunddreißigsten",
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
START = (
|
||
|
|
"Achtung! Achtung! Meine Damen und Herren, D B 0 K L bittet um ihre Aufmerksamkeit!\n"
|
||
|
|
+ "Es folgt der Mensaplan für heute, den "
|
||
|
|
)
|
||
|
|
|
||
|
|
END = (
|
||
|
|
"Dieser Rundspruch ist maschinell erstellt, ohne Unterschrift gültig und muss nicht bestätigt werden.\n"
|
||
|
|
+ "Guten Appetitt. Das war D B 0 K L."
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
plan = requests.get(MENSA_API).json()
|
||
|
|
|
||
|
|
menu = ""
|
||
|
|
|
||
|
|
for entry in plan:
|
||
|
|
if entry["loc"] not in LOCATION_NAMES.keys():
|
||
|
|
continue
|
||
|
|
menu += "%s: %s.\n" % (LOCATION_NAMES[entry["loc"]], entry["title"])
|
||
|
|
|
||
|
|
menu = html.unescape(menu)
|
||
|
|
menu = menu.replace('"', "")
|
||
|
|
|
||
|
|
today = datetime.now()
|
||
|
|
date_text = DAYS[today.day] + " " + MONTHS[today.month]
|
||
|
|
|
||
|
|
text = START + date_text + ".\n" + menu + END
|
||
|
|
|
||
|
|
tts = TTS("tts_models/de/thorsten/tacotron2-DDC").to("cpu")
|
||
|
|
tts.tts_to_file(text=text, file_path="mensa.wav")
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|