import genanki import csv, os, random # 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; } """, ) notes = [] # Liste für Notizen 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:{os.path.basename(audio_datei)}]' # MP3-Datei in Anki-Format else: audio_html = "" # Kein Audio # Notiz erstellen und in Liste speichern note = genanki.Note( model=my_model, fields=[frage.strip(), antwort.strip(), audio_html], tags=["Audio"], ) notes.append(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.") # Notizen zufällig mischen random.shuffle(notes) # Gemischte Notizen zum Deck hinzufügen for note in notes: my_deck.add_note(note) # 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!")