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.

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


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:

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.