25

Могу ли я конвертировать мой CSV-файл в колоду Anki? Я не могу найти какие-либо варианты в программе.

2 ответа2

23

Настольная версия Anki позволит вам импортировать « текст, разделенный табуляцией или точкой с запятой ». Используйте эту опцию, чтобы выбрать файл CSV. После открытия файла вам будет предложено диалоговое окно, которое позволит вам настроить импорт ваших данных. Одной из настроек является опция, позволяющая выбрать разделитель. Измените это на запятую, и это должно работать для вас.

Снимок экрана: импорт файла CSV в Anki

6

Еще один способ сгенерировать файл .apkg программно путем повторного использования настольной версии с Python. Расширение:

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

и запустите скрипт (конечно, вы должны адаптировать его к вашим потребностям):

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)

Пока вы сохраняете note.guid и model['id'] одинаковыми, вы можете импортировать БД с обновлением карт без потери прогресса !

Примеры моего производственного кода:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .