#!/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()