#!/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 = (
"Biep. 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()