Posso criar um deck Anki a partir de um arquivo .CSV?

31

Posso converter meu arquivo CSV em um deck Anki? Não consigo encontrar nenhuma opção no programa.

Thalecress
fonte

Respostas:

26

A versão Anki da área de trabalho permitirá importar " Texto separado por guias ou ponto e vírgula ". Use esta opção para escolher seu arquivo CSV. Após abrir o arquivo, você verá uma caixa de diálogo que permite personalizar como os dados são importados. Uma das configurações é uma opção que permite escolher o delimitador. Altere isso para uma vírgula e deve funcionar para você.

Captura de tela: Importando um arquivo CSV para o Anki

nispio
fonte
3
Além disso, você tem que configurar uma codificação para UTF-8
1
Pode ser usado para inserir novos cartões no baralho existente?
Septagram
Como você fez isso? Eu tenho um baralho com "Note ID". No entanto, ele não aparece nas opções de mapeamento: apenas Frente, Trás ou Ignorar.
Kaz
8

Outra maneira de gerar .apkgarquivos programaticamente, reutilizando a versão da área de trabalho com o Python. Ampliar:

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

e execute o script (é claro que você deve adaptá-lo às suas necessidades):

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)

Contanto que você mantenha note.guide model['id']mesmo você pode importar DB com atualizar cartões sem perder o progresso !

Meus exemplos de código de produção:

gavenkoa
fonte