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