¿Puedo crear un mazo Anki a partir de un archivo .CSV?

31

¿Puedo convertir mi archivo CSV en un mazo Anki? No puedo encontrar ninguna opción en el programa.

Thalecress
fuente

Respuestas:

26

La versión de escritorio de Anki le permitirá importar " Texto separado por pestañas o punto y coma ". Use esta opción para elegir su archivo CSV. Después de abrir el archivo, se le presentará un cuadro de diálogo que le permite personalizar cómo se importan sus datos. Una de las configuraciones es una opción que le permite elegir el delimitador. Cambie esto a una coma, y ​​debería funcionar para usted.

Captura de pantalla: Importar un archivo CSV a Anki

nispio
fuente
3
También debe configurar una codificación para UTF-8
1
¿Se puede usar para insertar nuevas cartas en el mazo existente?
Septagram
¿Cómo hiciste eso? Tengo un mazo con "ID de nota". Sin embargo, no aparece en las opciones de mapeo: solo Frente, Atrás o Ignorar.
Kaz
8

Otra forma de generar .apkgarchivos mediante programación reutilizando la versión de escritorio con Python. Ampliar:

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

y ejecute el script (por supuesto, debe adaptarlo a sus necesidades):

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)

En tanto se mantiene note.guidy la model['id']misma puede importar DB con la actualización de las tarjetas sin perder el progreso !

Mis ejemplos de código de producción:

gavenkoa
fuente