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

时间:2018-05-06 20:59:23

标签: python 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()

1 个答案:

答案 0 :(得分:1)

我认为您正在尝试制作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
    
    好吧,那是我第一次意识到Anki做到了那个。由于某些原因,您还需要将模型(卡类型)的牌组标识符设置为当前牌组的牌组标识符。我想这是因为TextImporter的工作原理。
  • # import into the collection
    ti = TextImporter(mw.col, file)
    ti.initMapping()
    ti.run()
    
    创建一个TextImporter,初始化其映射并运行它。