Puis-je convertir mon fichier CSV en un deck Anki? Je ne trouve pas d'options dans le programme.
Réponses
Trop de publicités?La version Anki pour ordinateur 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, vous verrez une boîte de dialogue qui vous permet de personnaliser l'importation de vos données. L'un des paramètres est une option qui vous permet de choisir le délimiteur. Changez-le pour une virgule, et cela devrait fonctionner pour vous.
Une autre façon de générer des fichiers .apkg
est de réutiliser le bureau version avec Python. Prolonger :
PYTHONPATH=/usr/share/anki: python ...
Ensuite, vous pouvez adapter l'exemple suivant à 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'] = '{{en}}'
tmpl['afmt'] = '{{FrontSide}}\n\n\n\n{{ru}}'
collection.models.addTemplate(model, tmpl)
tmpl = collection.models.newTemplate('ru -> en')
tmpl['qfmt'] = '{{ru}}'
tmpl['afmt'] = '{{FrontSide}}\n\n\n\n{{en}}'
collection.models.addTemplate(model, tmpl)
model['id'] = 12345678 # essentiel pour la détection de mise à niveau
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)
Aussi longtemps que vous gardez note.guid
et model['id']
le même, vous pouvez importer la DB et mettre à jour les cartes sans perdre de progression !
- Any way to build apkg from command line without GUI?
- Is it possible to merge improvements and corrections to cards during apkg import without loosing progress?
exemples de mon code de production :
Anki API
Pour compléter la réponse de gavenkoa, l'API Anki dispose d'une fonctionnalité intégrée pour importer depuis un fichier CSV.
Tout d'abord, vous pouvez installer le package anki en Python en utilisant pip, par exemple
pip3 install anki protobuf
Voici un exemple très basique pour importer depuis un fichier CSV et exporter un deck vers un fichier de package Anki (.apkg) :
import anki
from anki.exporting import AnkiPackageExporter
from anki.importing.csvfile import TextImporter
# Créer une nouvelle collection
collection = anki.Collection('/chemin/vers/test.anki2'))
# Créer un nouveau deck dans la collection (sinon le deck "Default" sera utilisé)
deck_id = collection.decks.id('Nom du deck')
model = collection.models.byName('Basic')
model['did'] = deck_id
collection.models.save(model)
# Importer des cartes depuis un CSV dans la nouvelle collection
importateur = TextImporter('/chemin/vers/test.csv'))
importateur.initMapping()
importateur.run()
# Sauvegarder et exporter la collection vers un fichier de package Anki (.apkg)
collection.save()
exportateur = AnkiPackageExporter(collection)
exportateur.exportInto('/chemin/vers/test.apkg'))
Un exemple plus détaillé est disponible ici : https://github.com/bmaupin/flashcard-sets/blob/main/scripts/csv-to-apkg.py
L'API officielle d'Anki en Python est documentée ici : https://addon-docs.ankiweb.net/getting-started.html
La documentation officielle n'est pas exhaustive, mais j'ai également documenté un peu moi-même : https://github.com/bmaupin/flashcard-sets/tree/main/scripts#anki-api
Lors de l'utilisation de l'API, il est également utile d'être familiarisé avec certains des concepts de base : https://docs.ankiweb.net/getting-started.html#key-concepts
Genanki
Une autre option est d'utiliser ce package : https://github.com/kerrickstaley/genanki
Il n'est pas officiellement affilié au projet Anki mais semble avoir une API plus propre et mieux documentée, en plus d'une licence plus libérale.