.CSV 파일에서 Anki 데크를 만들 수 있습니까? 응용 프로그램 스택 Exchange에서 수퍼

CSV 파일을 Anki 데크로 변환 할 수 있습니까? 프로그램에서 옵션을 찾을 수 없습니다.



답변

데스크탑 Anki 버전에서는 ” 탭 또는 세미콜론으로 구분 된 텍스트 “를 가져올 수 있습니다 . 이 옵션을 사용하여 CSV 파일을 선택하십시오. 파일을 연 후에는 데이터 가져 오기 방법을 사용자 정의 할 수있는 대화 상자가 표시됩니다. 설정 중 하나는 구분자를 선택할 수있는 옵션입니다. 이것을 쉼표로 바꾸면 효과가 있습니다.

스크린 샷 : CSV 파일을 Anki로 가져 오기


답변

.apkgPython으로 데스크톱 버전을 재사용하여 프로그래밍 방식으로 파일 을 생성하는 또 다른 방법 입니다. 넓히다:

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']동일하게 당신은 진행을 잃지 않고 카드 를 업데이트 하여 DB를 가져올 수 있습니다 !

내 프로덕션 코드 예제 :


답변