Puis-je créer un deck Anki à partir d'un fichier .CSV?

31

Puis-je convertir mon fichier CSV en un deck Anki? Je ne trouve aucune option dans le programme.

Thalecress
la source

Réponses:

26

La version Anki de bureau 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 sera présentée qui vous permettra de personnaliser la façon dont vos données sont importées. L'un des paramètres est une option qui vous permet de choisir le délimiteur. Remplacez-le par une virgule, et cela devrait fonctionner pour vous.

Capture d'écran: Importation d'un fichier CSV dans Anki

nispio
la source
3
Vous devez également configurer un encodage pour UTF-8
1
Peut-il être utilisé pour insérer de nouvelles cartes dans le jeu existant?
Septagram
Comment as-tu fais ça? J'ai un deck avec "Note ID". Pourtant, il n'apparaît pas dans les choix de mappage: juste avant, arrière ou ignorer.
Kaz
8

Une autre façon de générer un .apkgfichier par programme en réutilisant la version de bureau avec Python. Étendre:

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

et exécutez 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.guidet model['id']même vous pouvez importer des bases de données avec des cartes de mise à jour sans perdre de progression !

Mes exemples de code de production:

gavenkoa
la source