Python中如何批量创建数据到anki卡片?

无意中看到一个大佬写的这个插件 https://github.com/ninja33/anki-dict-helper

不知道他是如何用代码创建数据到 anki 的卡片上, 是调用 anki 客户端的接口还是怎么处理的?

会 pyhon 的大佬可以帮看看如何实现的吗? 我也想批量将一些 古诗宋词一类的内容批量创建到 anki 卡片给小朋友 使用,但是 python 忘光了...  现在还是 php 和 go 用得比较多。


Python中如何批量创建数据到anki卡片?

2 回复

要批量创建数据到Anki卡片,最直接的方式是使用genanki库。下面是一个完整的示例:

import genanki
import pandas as pd

# 1. 定义卡片模型
my_model = genanki.Model(
    1607392319,  # 随机但唯一的ID
    'Simple Model',
    fields=[
        {'name': 'Question'},
        {'name': 'Answer'},
    ],
    templates=[
        {
            'name': 'Card 1',
            'qfmt': '{{Question}}',
            'afmt': '{{FrontSide}}<hr id="answer">{{Answer}}',
        },
    ])

# 2. 创建牌组
my_deck = genanki.Deck(
    2059400110,  # 随机但唯一的ID
    '我的牌组')

# 3. 批量添加数据(这里用列表,你也可以从CSV/Excel读取)
data = [
    ("Python中如何定义函数?", "使用def关键字"),
    ("列表推导式是什么?", "[x for x in iterable]"),
    ("如何打开文件?", "使用open()函数"),
]

# 4. 批量创建笔记并添加到牌组
for question, answer in data:
    note = genanki.Note(
        model=my_model,
        fields=[question, answer])
    my_deck.add_note(note)

# 5. 生成.apkg文件
genanki.Package(my_deck).write_to_file('my_deck.apkg')

从CSV文件批量导入:

# 如果数据在CSV文件中
df = pd.read_csv('data.csv')
for _, row in df.iterrows():
    note = genanki.Note(
        model=my_model,
        fields=[row['问题'], row['答案']])
    my_deck.add_note(note)

关键点:

  • 每个模型和牌组都需要唯一的ID(可以用随机数生成器)
  • 字段名和模板要对应好
  • 生成的.apkg文件可以直接导入Anki

一句话总结:用genanki库构建模型和牌组,循环数据批量创建笔记即可。


翻了一个晚上 终于找到了

https://github.com/FooSoft/anki-connect

这个软件用的人这么少吗? 不科学

回到顶部