Puis-je convertir mon fichier CSV en un deck Anki? Je ne trouve aucune option dans le programme.
La version de bureau Anki vous permettra d'importer " du texte séparé par des tabulations ou des points-virgules ." Utilisez cette option pour choisir votre fichier CSV. Après avoir ouvert le fichier, une boîte de dialogue vous permettant de personnaliser la manière dont vos données sont importées apparaît. L'un des paramètres est une option qui vous permet de choisir le délimiteur. Changez-le en une virgule et cela devrait fonctionner pour vous.
Une autre façon de générer un fichier .apkg
par programme en réutilisant la version de bureau avec Python. Étendre:
PYTHONPATH=/usr/share/anki: python ...
et lancez le script (bien sûr, vous devez l’adapter à vos besoins):
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)
Tant que vous gardez note.guid
et model['id']
identiques, vous pouvez importer une base de données avec en mettant à jour des cartes sans perdre la progression !
Mes exemples de code de production: