Saltar al contenido

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

Solución:

La versión de escritorio de Anki le permitirá importar “Texto separado por tabulaciones o punto y coma. “Utilice 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. Cambiar esto a una coma, y ​​debería funcionar para usted.

Captura de pantalla: Importación de un archivo CSV a Anki

Otra forma de generar .apkg archivos es reutilizando programáticamente la versión de escritorio con Python. Ampliar:

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

Entonces puede adaptar el siguiente ejemplo 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}}nn<hr id=answer>nn{{ru}}'
collection.models.addTemplate(model, tmpl)
tmpl = collection.models.newTemplate('ru -> en')
tmpl['qfmt'] = '{{ru}}'
tmpl['afmt'] = '{{FrontSide}}nn<hr id=answer>nn<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)

Mientras te quedes note.guid y model['id'] lo mismo, puede importar la base de datos y actualizar tarjetas sin perder el progreso!

  • ¿Alguna forma de construir apkg desde la línea de comandos sin GUI?
  • ¿Es posible fusionar mejoras y correcciones a las tarjetas durante la importación de apkg sin perder el progreso?

ejemplos de mi código de producción:

  • http://hg.defun.work/gadict/file/tip/py/gadict_srs_anki.py o copiar
  • http://hg.defun.work/gadict/file/tip/obsolete/exp_anki.py o copiar
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *