如何以编程方式将文本文件导入anki?

how to programmatically import text file into anki?

我正在尝试制作一个插件,将网站上的文本转换为 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()

我认为您正在尝试制作 Anki 2.0 附加组件。我强烈建议您改用 Anki 2.1 附加组件,因为它更干净,具有更多开发功能并使用 Python 3.

除此之外,这里是对代码的解释:

  • from anki.importing import TextImporter
    
    这会将 TextImporter class 导入到附加​​模块的命名空间中。
  • 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" 类型。注释类型在代码中称为 "models"。 'mid' 是模型标识符。
  • # and puts cards in the last deck used by the note type
    m['did'] = did
    
    好吧,那是我第一次意识到 Anki 做到了那个。出于某种原因,您还需要将模型(卡片类型)的牌组标识符设置为当前牌组的。我想这是因为 TextImporter 的工作原理。
  • # import into the collection
    ti = TextImporter(mw.col, file)
    ti.initMapping()
    ti.run()
    
    创建一个 TextImporter,初始化它的映射并 运行 它。