Genanki智能记忆卡制作终极指南:Python自动化学习完整教程

【免费下载链接】genanki A Python 3 library for generating Anki decks 【免费下载链接】genanki 项目地址: https://gitcode.com/gh_mirrors/ge/genanki

Genanki是一款强大的Python 3库,专为生成Anki记忆卡而设计,让你能够通过编程方式轻松创建个性化的学习卡片,实现高效记忆与学习。无论是语言学习、专业知识巩固还是备考复习,Genanki都能帮助你快速构建属于自己的智能记忆系统。

🚀 快速入门:Genanki安装与环境配置

想要开始使用Genanki创建你的第一个记忆卡,只需简单几步即可完成安装:

一键安装步骤

通过pip命令可以快速安装Genanki及其所有依赖:

pip install genanki

如果你需要从源码安装,可以克隆项目仓库后执行 setup.py:

git clone https://gitcode.com/gh_mirrors/ge/genanki
cd genanki
python setup.py install

核心依赖说明

Genanki的安装依赖以下Python库,安装过程中会自动下载:

  • cached-property:提供缓存属性支持
  • frozendict:不可变字典实现
  • chevron:模板渲染引擎
  • pyyaml:YAML格式支持

🧩 Genanki核心概念解析

认识Note:记忆卡的基础单元

Note(笔记)是Anki中的基本信息单元,对应一个或多个记忆卡片。每个Note包含需要记忆的事实数据,通过指定的模型生成相应的卡片。

创建Note的基本方式:

my_note = genanki.Note(
  model=my_model,
  fields=['Capital of Argentina', 'Buenos Aires']
)

掌握Model:定义记忆卡的结构

Model(模型)定义了Note的字段和卡片模板。它决定了记忆卡的展示方式和交互逻辑。一个模型通常包含字段定义和卡片模板两部分。

创建简单模型的示例:

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}}',  # 答案模板
    },
  ]
)

小贴士:模型ID需要唯一,建议使用 import random; random.randrange(1 << 30, 1 << 31) 生成并硬编码。

构建Deck:组织你的记忆卡集合

Deck(牌组)用于组织相关的Note,是导入Anki的基本单位。每个Deck需要一个唯一的ID和名称。

创建Deck并添加Note:

my_deck = genanki.Deck(
  2059400110,  # 唯一牌组ID
  'Country Capitals'  # 牌组名称
)
my_deck.add_note(my_note)  # 添加Note到牌组

生成Package:导出Anki可用的记忆卡包

Package(包)用于将Deck导出为Anki可导入的.apkg文件。生成后可以通过Anki的"文件→导入"功能导入使用。

生成记忆卡包的代码:

genanki.Package(my_deck).write_to_file('output.apkg')

📝 实战教程:创建你的第一个记忆卡

完整示例:国家首都记忆卡

以下是一个完整的示例,展示如何创建一个国家首都记忆卡:

import genanki

# 1. 定义模型
model = genanki.Model(
  1607392319,
  'Simple Model',
  fields=[
    {'name': 'Question'},
    {'name': 'Answer'},
  ],
  templates=[
    {
      'name': 'Card 1',
      'qfmt': '{{Question}}',
      'afmt': '{{FrontSide}}<hr id="answer">{{Answer}}',
    },
  ])

# 2. 创建笔记
note = genanki.Note(
  model=model,
  fields=['Capital of France', 'Paris'])

# 3. 创建牌组并添加笔记
deck = genanki.Deck(
  2059400110,
  'Country Capitals')
deck.add_note(note)

# 4. 生成APKG文件
genanki.Package(deck).write_to_file('capitals.apkg')

运行这段代码后,会生成一个名为"capitals.apkg"的文件,你可以将其导入Anki使用。

📱 添加媒体文件:让记忆卡更生动

Genanki支持添加图片和音频等媒体文件,使记忆卡更加丰富和直观。

添加媒体文件的步骤

  1. 首先在模型中添加媒体字段:
my_model = genanki.Model(
  1091735104,
  'Simple Model with Media',
  fields=[
    {'name': 'Question'},
    {'name': 'Answer'},
    {'name': 'MyMedia'},  # 媒体字段
  ],
  templates=[
    {
      'name': 'Card 1',
      'qfmt': '{{Question}}<br>{{MyMedia}}',  # 显示媒体
      'afmt': '{{FrontSide}}<hr id="answer">{{Answer}}',
    },
  ])
  1. 创建包含媒体的笔记:
my_note = genanki.Note(
  model=my_model,
  fields=['What is this animal?', 'A cat', '<img src="cat.jpg">'])
  1. 指定媒体文件路径:
my_package = genanki.Package(my_deck)
my_package.media_files = ['cat.jpg']  # 媒体文件路径
my_package.write_to_file('animal_cards.apkg')

注意:媒体文件只需提供文件名,不需要路径。所有媒体文件应具有唯一的文件名。

💡 高级技巧:优化你的记忆卡

自定义GUID:实现笔记更新

GUID(全局唯一标识符)用于标识笔记,当导入具有相同GUID的新笔记时,Anki会更新现有笔记。默认情况下,GUID是所有字段值的哈希,你也可以自定义:

class MyNote(genanki.Note):
  @property
  def guid(self):
    # 仅基于第一个字段生成GUID
    return genanki.guid_for(self.fields[0])

设置排序字段:优化浏览体验

Anki使用sort_field对卡片进行排序,默认使用第一个字段。你可以通过以下方式修改:

# 方法1:创建Note时指定
note = genanki.Note(model=my_model, fields=fields, sort_field=fields[2])

# 方法2:在Model中设置
my_model = genanki.Model(
  model_id,
  'My Model',
  fields=fields,
  templates=templates,
  sort_field_index=1  # 使用第二个字段作为排序字段
)

❓ 常见问题解决

字段内容显示异常

如果你的字段中包含 <, >& 等特殊字符,需要进行HTML转义:

import html

fields = [
  html.escape('AT&T was originally called'),
  html.escape('Bell Telephone Company')
]

Cloze模型使用问题

在genanki 0.13.0之前的版本中,CLOZE_MODEL只有一个字段,而Anki内置的Cloze模型有两个字段。如果收到相关警告,添加一个空字段即可:

my_note = genanki.Note(
  model=genanki.CLOZE_MODEL,
  fields=['{{c1::Rome}} is the capital of {{c2::Italy}}', '']  # 第二个字段为空
)

🎯 总结

Genanki为Python开发者提供了一个强大而灵活的工具,用于创建自定义Anki记忆卡。通过编程方式生成记忆卡,你可以实现批量创建、内容动态更新和个性化设计,极大地提高学习效率。无论你是学生、教师还是终身学习者,Genanki都能帮助你构建高效的个人记忆系统。

现在就开始使用Genanki,开启你的智能记忆之旅吧!通过简单的Python代码,你可以将任何知识领域的内容转化为结构化的记忆卡片,让学习变得更加高效和有趣。

【免费下载链接】genanki A Python 3 library for generating Anki decks 【免费下载链接】genanki 项目地址: https://gitcode.com/gh_mirrors/ge/genanki

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐