import genanki
import csv
import random


# Variablen
ausgabe_datei = "LZ.apkg"
csv_datei = "LZ.csv"  # Name der CSV-Datei

# Konvertieren der LZ-Kopie zu CSV, CSV-Trenner ist das Semikolon
# Datei einlesen und neue Datei schreiben
with open('LZ.txt', 'r', encoding='utf-8') as input_file, open('LZ.csv', 'w', encoding='utf-8', newline='') as output_file:
    reader = csv.reader(input_file, delimiter='\t')  # Tab als Trennzeichen
    writer = csv.writer(output_file, delimiter=';')  # Semikolon als Trennzeichen
    
    for row in reader:
        if len(row) >= 3:  # Sicherstellen, dass es mindestens 3 Spalten gibt
            writer.writerow([row[1], row[2]])  # Spalte 2 und 3 schreiben


# Erstelle ein Anki-Deck
deck_id = 123456789  # Zufällige Zahl, um das Deck eindeutig zu identifizieren
deck_name = "Langzeit"  # Name des Decks
my_deck = genanki.Deck(deck_id, deck_name)

# Definiere ein einfaches Anki-Kartenmodell
my_model = genanki.Model(
    1607392319,  # Zufällige Zahl, um das Modell eindeutig zu identifizieren
    "Einfaches Modell",
    fields=[
        {"name": "Frage"},
        {"name": "Antwort"},
    ],
    templates=[
        {
            "name": "Normal",
            "qfmt": "{{Frage}}",  # Front der Karte
            "afmt": "{{FrontSide}}<hr id='answer'>{{Antwort}}",  # Rückseite der Karte
        },
    ],
    css="""
    .card {
      display: flex;
      justify-content: center;
      align-items: center;
      text-align: center;
      font-family: Arial, sans-serif;
      font-size: 24px;
      height: 100%;
    }
    """,
)

# Lies die CSV-Datei und füge Karten hinzu
karten = []
with open(csv_datei, "r", encoding="utf-8") as file:
    reader = csv.reader(file,delimiter=";")
    next(reader)  # Überspringe die Kopfzeile
    for i, row in enumerate(reader, start=2):  # Starte bei Zeile 2 wegen der Kopfzeile
        if len(row) != 2:
            print(f"Warnung: Zeile {i} hat nicht genau 2 Spalten und wird übersprungen: {row}")
            continue
        frage, antwort = row
        karten.append((frage, antwort))
        # Als "Normal" drehen
        karten.append((antwort,frage)) 
        #my_note = genanki.Note(
        #    model=my_model,
        #    fields=[frage, antwort],
        #)
        #my_deck.add_note(my_note)

# Mische die Reihenfolge der Karten
random.shuffle(karten)

# Füge die gemischten Karten zum Deck hinzu
for frage, antwort in karten:
    my_note = genanki.Note(
        model=my_model,
        fields=[frage, antwort],
    )
    my_deck.add_note(my_note)

# Erstelle das Anki-Paket
genanki.Package(my_deck).write_to_file(ausgabe_datei)
print(f"Anki-Stapel wurde erfolgreich in '{ausgabe_datei}' gespeichert.")