Kann ich ein Anki-Deck aus einer CSV-Datei erstellen?

Kann ich meine CSV-Datei in ein Anki-Deck konvertieren? Ich kann keine Optionen im Programm finden.

Author: Nicolas Raoul, 2014-01-08

2 answers

Mit der Desktop-Version Anki können Sie " - Text importieren, der durch Tabulatoren oder Semikolons getrennt ist."Verwenden Sie diese Option, um Ihre CSV-Datei auszuwählen. Nach dem Öffnen der Datei wird Ihnen ein Dialogfeld angezeigt, in dem Sie anpassen können, wie Ihre Daten importiert werden. Eine der Einstellungen ist eine Option, mit der Sie das Trennzeichen auswählen können. Ändern Sie dies in ein Komma und es sollte für Sie funktionieren.

Screenshot: Import einer CSV-Datei in Anki

 34
Author: nispio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-04-26 13:49:06

Eine andere Möglichkeit, .apkg - Dateien zu generieren, besteht darin, die Desktop-Version programmgesteuert mit Python wiederzuverwenden. Verlängern:

PYTHONPATH=/usr/share/anki: python ...

Dann können Sie das folgende Beispiel an Ihre Bedürfnisse anpassen:

import anki
from anki.exporting import AnkiPackageExporter

collection = anki.Collection(os.path.join(TMPDIR, 'collection.anki2'))

deck_id = collection.decks.id(FBASENAME + "_deck")
deck = collection.decks.get(deck_id)

model = collection.models.new(FBASENAME + "_model")
model['tags'].append(FBASENAME + "_tag")
model['did'] = deck_id
model['css'] = """
.card {
  font-family: arial;
  font-size: 20px;
  text-align: center;
  color: black;
  background-color: white;
}
.from {
  font-style: italic;
}
"""

collection.models.addField(model, collection.models.newField('en'))
collection.models.addField(model, collection.models.newField('ru'))

tmpl = collection.models.newTemplate('en -> ru')
tmpl['qfmt'] = '<div class="from">{{en}}</div>'
tmpl['afmt'] = '{{FrontSide}}\n\n<hr id=answer>\n\n{{ru}}'
collection.models.addTemplate(model, tmpl)
tmpl = collection.models.newTemplate('ru -> en')
tmpl['qfmt'] = '{{ru}}'
tmpl['afmt'] = '{{FrontSide}}\n\n<hr id=answer>\n\n<div class="from">{{en}}</div>'
collection.models.addTemplate(model, tmpl)

model['id'] = 12345678  # essential for upgrade detection
collection.models.update(model)
collection.models.setCurrent(model)
collection.models.save(model)

note = anki.notes.Note(collection, model)
note['en'] = "hello"
note['ru'] = u"[heləʊ]\nint. привет"
note.guid = "xxx1"
collection.addNote(note)

note = collection.newNote()
note['en'] = "bye"
note['ru'] = u"[baɪ]\nint. пока"
note.guid = "xxx2"
collection.addNote(note)

export = AnkiPackageExporter(collection)
export.exportInto(FONAME)

Solange Sie note.guid und model['id'] gleich behalten, können Sie die DB und Update Karten importieren, ohne den Fortschritt zu verlieren!

Beispiele für meinen Produktionscode:

 15
Author: gavenkoa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-12-30 17:24:13