Как программно импортировать текстовый файл в Anki? - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь создать аддон, который преобразует текст с веб-сайта в колоду Anki, поэтому теперь у меня есть текстовый файл, который правильно отформатирован, и я не могу понять, как импортировать его в существующую колоду. проверил официальное руководство, но оно дает очень мало объяснений, это может показаться очень новичком, но я впервые работаю над аддоном, так что если кто-то с большим опытом может дать мне более подробное объяснение, заранее спасибо!

Это фрагмент кода с сайта, который я пытаюсь понять:

from anki.importing import TextImporter
file = u"/path/to/text.txt"
# select deck
did = mw.col.decks.id("ImportDeck")
mw.col.decks.select(did)
# anki defaults to the last note type used in the selected deck
m = mw.col.models.byName("Basic")
deck = mw.col.decks.get(did)
deck['mid'] = m['id']
mw.col.decks.save(deck)
# and puts cards in the last deck used by the note type
m['did'] = did
# import into the collection
ti = TextImporter(mw.col, file)
ti.initMapping()
ti.run()

1 Ответ

0 голосов
/ 20 июня 2018

Я так понимаю, вы пытаетесь создать дополнение к Anki 2.0. Я настоятельно рекомендую вместо этого сделать надстройку Anki 2.1, поскольку она более чистая, имеет больше возможностей для разработки и использует Python 3.

Кроме этого, вот объяснение кода:

  • from anki.importing import TextImporter
    
    Это импортирует класс TextImporter в пространство имен модуля дополнения.
  • file = u"/path/to/text.txt"
    
    Это довольно очевидно. Он присваивает путь к файлу Unicode переменной file. В Anki 2.1 это может быть просто file = "/path/to/text.txt", поскольку строки представляют текст, а не байтовый массив в Python 3.
  • # select deck
    did = mw.col.decks.id("ImportDeck")
    mw.col.decks.select(did)
    
    Выбирает колоду с идентификатором "ImportDeck". Вам понадобится mw, который вы можете получить с помощью from aqt import mw.
  • # anki defaults to the last note type used in the selected deck
    m = mw.col.models.byName("Basic")
    deck = mw.col.decks.get(did)
    deck['mid'] = m['id']
    mw.col.decks.save(deck)
    
    Это изменяет тип заметки (выбранная колода) на тип "Basic". Типы заметок называются «моделями» внутри кода. 'mid' - идентификатор модели.
  • # and puts cards in the last deck used by the note type
    m['did'] = did
    
    Ну, это первый раз, когда я понял, что Анки сделал , что . По какой-то причине вам также необходимо установить идентификатор колоды модели (типа карты) для текущей колоды. Я полагаю, это из-за того, как TextImporter работает.
  • # import into the collection
    ti = TextImporter(mw.col, file)
    ti.initMapping()
    ti.run()
    
    Создайте TextImporter, инициализируйте его отображение и запустите.
...