From cbe1eb2e7ae06821928191d291128b3e92d90923 Mon Sep 17 00:00:00 2001 From: Sven Riwoldt Date: Sun, 9 Feb 2025 13:49:40 +0100 Subject: [PATCH] Problemfile begonnen --- Problem.apkg | Bin 0 -> 61658 bytes Problem.csv | 28 ++++++++++++++++++++ problem2anki.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 Problem.apkg create mode 100644 Problem.csv create mode 100644 problem2anki.py diff --git a/Problem.apkg b/Problem.apkg new file mode 100644 index 0000000000000000000000000000000000000000..b5964ad4fb534126bd4f1206092b2fb08f546f4f GIT binary patch literal 61658 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%0A6q_wv1V)*>j2BYXMXp=L~!TfRFj1e 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 J97mm{{a-IMUsV7A literal 0 HcmV?d00001 diff --git a/Problem.csv b/Problem.csv new file mode 100644 index 0000000..810ddfc --- /dev/null +++ b/Problem.csv @@ -0,0 +1,28 @@ +någon;jemand +något;etwas +någonting;etwas +någonstans;irgendwo +någon gång;irgendwann +någon gång;jemals +någon annan;jemand anderes +någ;genug +någon gång ibland;gelegentlich +något slags;irgendeine Art von +någonstans ifrån;von irgendwoher +någon gång tidigare;irgendwann früher +jättebra;sehr gut, supergut +jättedålig;wirklich schlimm, sehr schlecht +jättestor;riesig, sehr groß +jätteliten;winzig, sehr klein +jättefin;sehr schön, wundervoll +jättesnabb;superschnell +jättegammal;uralt +jättenöjd;sehr zufrieden +jätteglad;überglücklich +jättekul (Subst.);superlustig, sehr unterhaltsam +jätteproblem (Subst.);riesiges Problem +jättelång (Subst.);sehr lang +jättebebis (Subst.);Riesenbaby +jättebra jobb (Subst.);supergute Arbeit +jätten;der Riese +en jätte;ein Riese \ No newline at end of file diff --git a/problem2anki.py b/problem2anki.py new file mode 100644 index 0000000..0829d73 --- /dev/null +++ b/problem2anki.py @@ -0,0 +1,69 @@ +import genanki +import csv +import random + + +# Variablen +ausgabe_datei = "Problem.apkg" +csv_datei = "Problem.csv" # Name der CSV-Datei + + +# 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( + 1607882319, # 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}}
{{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)) + karten.append((antwort,frage)) + +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.") \ No newline at end of file