import genanki import csv import os # Variablen csv_datei = "LZMP3.csv" # CSV-Datei mit Fragen, Antworten und Audio-Dateien ausgabe_datei = "LZMP3.apkg" # Name der Ausgabedatei media_files = [] # Liste der Medien (MP3-Dateien) # Eindeutige IDs deck_id = 123456789 model_id = 987654321 # Deck erstellen deck_name = "LZ mit MP3" my_deck = genanki.Deck(deck_id, deck_name) # Anki-Modell mit Audio-Unterstützung my_model = genanki.Model( model_id, "Audio-Karten-Modell", fields=[ {"name": "Frage"}, {"name": "Antwort"}, {"name": "Audio"}, ], templates=[ { "name": "Standard-Karte mit Audio", "qfmt": "{{Frage}}", "afmt": '{{FrontSide}}
{{Antwort}}
{{Audio}}', }, ], css=""" .card { font-family: Arial, sans-serif; font-size: 20px; text-align: center; color: black; background-color: white; } """, ) # CSV-Datei einlesen und Notizen erstellen karten_anzahl = 0 with open(csv_datei, "r", encoding="utf-8") as file: reader = csv.reader(file, delimiter=";") #next(reader) # Kopfzeile überspringen for i, row in enumerate(reader, start=2): if len(row) < 2: # Mindestens zwei Spalten notwendig print(f"Warnung: Zeile {i} hat zu wenige Spalten und wird übersprungen: {row}") continue frage, antwort = row[:2] audio_datei = row[2].strip() if len(row) > 2 else "" # MP3-Datei zur Medienliste hinzufügen, falls vorhanden if audio_datei and os.path.exists(audio_datei): media_files.append(audio_datei) audio_html = f'[sound:{audio_datei}]' # MP3-Datei in Anki-Format else: audio_html = "" # Kein Audio print (f"Warnung: Keine Audio-Datei gefunden für Frage: {frage}") # Notiz erstellen note = genanki.Note( model=my_model, fields=[frage.strip(), antwort.strip(), audio_html], tags=["Audio"], ) print(f"Frage: {frage}, Antwort: {antwort}, Audio: {audio_html}") my_deck.add_note(note) karten_anzahl += 1 if karten_anzahl == 0: print("Fehler: Es wurden keine Karten erstellt. Überprüfe die CSV-Datei.") else: print(f"{karten_anzahl} Karten erfolgreich erstellt.") # Stapel exportieren mit Medien package = genanki.Package(my_deck) package.media_files = media_files # Medien hinzufügen package.write_to_file(ausgabe_datei) print(f"Stapel wurde erfolgreich unter '{ausgabe_datei}' gespeichert!")