ITADN
klieret/AnkiPandas
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

使用 pandas 分析和操作你的 Anki 卡组!

Documentation Status Gitter License PR welcome

pre-commit.ci status gh actions Coveralls CodeQL gitmoji Black Pypi status

📝 Description

Note 此包需要一位新的维护者,因为我目前没有足够的时间继续开发 此包。将修改写回 Anki 数据库的功能目前已被禁用, 特别是由于问题 #137。 如果您有兴趣参与,请与我联系!

Anki 是最流行的间隔重复学习 系统之一, pandas 是最流行的用于 数据分析和操作的 python 包。那么还有什么比将 两者结合起来更好的呢?

使用 AnkiPandas,您可以利用 pandas 轻松分析或操作 您的 Anki 闪卡。

Features:

  • Select: 使用 pandas 轻松选择您的卡片、笔记或 复习记录的任意子集(众多 介绍之一官方 文档
  • Visualize: 使用 pandas 强大的 内置 工具 或切换到功能更强大的 seaborn(统计分析)或 matplotlib
  • Manipulate: 对表格应用快速批量操作(例如添加 标签、更改牌组、设置字段内容、暂停卡片、...)或 遍历表格并逐步执行这些操作。 ⚠️ 此功能目前已被禁用,直到 #137 得到解决! ⚠️
  • Import and Export: Pandas 可以导出到(以及从)csv、 MS Excel、HTML、JSON、...(io 文档

Pros:

  • 轻松安装:通过 python 包管理器安装 (独立于你的 Anki 安装)
  • 简单:只需一行代码即可开始
  • 便捷:将有关 卡片笔记模型牌组 等更多信息 汇总在一张表中!
  • 文档齐全:文档位于 readthedocs
  • 测试完善:拥有 100 多个单元测试以确保一切 正常

替代方案:如果你的主要目标是添加新卡片、模型等, 你也可以查看 genanki 项目。

📦 安装

AnkiPandas 可作为 pypi 包 提供,并可通过 python 包 管理器 进行安装或 升级:

pip3 install --user --upgrade ankipandas

开发安装

对于最新的开发版本,您也可以从该仓库的克隆版本中进行操作:

git clone https://github.com/klieret/ankipandas/
cd ankipandas
pip3 install --user --upgrade --editable .

如果您想帮助进一步开发此软件包,请同时安装 pre-commit 钩子并使用 gitmoji

pre-commit install
gitmoji -i

🔥 让我们开始吧!

启动过程如下:

from ankipandas import Collection

col = Collection()

并且 col.notes 将是一个包含所有笔记的 dataframe,并附带许多简化操作的方法。类似地,你可以使用 col.cardscol.revs 来访问卡片或复习记录。

如果在不提供任何参数的情况下调用 Collection(),它会尝试自行查找你的 Anki 数据库。然而,这可能需要一些时间。为了简化操作,只需提供数据库的路径(或部分路径)以及(如果你有多个用户)你的 Anki 用户名,例如在许多 Linux 安装环境中使用 Collection(".local/share/Anki2/", user="User 1")

要获取关于每列解释的信息,请使用 print(col.notes.help_cols())

请查看 文档 以了解有关可用方法的更多信息!

一些基本示例:

📈 分析

更多示例分析 文档使用 AnkiPandas 的项目

显示所有牌组中每张卡片的复习次数(重复次数)直方图:

col.cards.hist(column="creps", by="cdeck")

以饼图形式显示每副牌中的水蛭数量:

cards = col.cards.merge_notes()
selection = cards[cards.has_tag("leech")]
selection["cdeck"].value_counts().plot.pie()

查找模型 MnemoticModelMnemotic 字段为空的所有笔记:

notes = col.notes.fields_as_columns()
notes.query("model=='MnemoticModel' and 'Mnemotic'==''")

🛠️ 操作

警告#137 解决之前, 数据库写入功能目前已被禁用。 非常感谢任何帮助!

警告 请务必小心并充分测试! Ankipandas 会在写入之前创建数据库备份,因此您始终可以恢复之前的状态。请确保一切正常运行后再继续正常使用 Anki!

为所有包含 Japaneseleech 标签的笔记添加 difficult-japanesemarked 标签:

notes = col.notes
selection = notes[notes.has_tags(["Japanese", "leech"])]
selection = selection.add_tag(["difficult-japanese", "marked"])
col.notes.update(selection)
col.write(modify=True)  # Overwrites your database after creating a backup!

将模型 LanguageModel 中所有标记为 English 的笔记的 language 字段设置为 English

notes = col.notes
selection = notes[notes.has_tag(["English"])].query("model=='LanguageModel'").copy()
selection.fields_as_columns(inplace=True)
selection["language"] = "English"
col.notes.update(selection)
col.write(modify=True)

将所有标记为 leech 的卡牌移动到牌组 Leeches Only

cards = col.cards
selection = cards[cards.has_tag("leech")]
selection["cdeck"] = "Leeches Only"
col.cards.update(selection)
col.write(modify=True)

🐞 故障排除

请参阅文档中的故障排除部分

💖 贡献

非常感谢您的帮助!建议、错误报告和功能请求最好以 github issues 的形式提交。您也可以 先在 gitter community 中讨论。如果您想 自己编写代码,非常欢迎您提交 pull request

错误报告和 pull request 将通过 allcontributors bot 的帮助获得署名。

📃 许可证与免责声明

本软件依据 MIT license 授权,并且(尽管已尽力测试)不提供任何保修。 该标志灵感来源于 Anki logolicense)以及 pandas 包的标志 (license2)。 本库及其作者与 主要的 Anki 或 pandas 项目没有任何关联。

✨ 贡献者

感谢这些出色的人(emoji key):

Blocked
Blocked

🐛
CalculusAce
CalculusAce

🐛
Francis Tseng
Francis Tseng

🐛 💻
Keith Hughitt
Keith Hughitt

🐛
Miroslav Šedivý
Miroslav Šedivý

⚠️ 💻
Nicholas Bollweg
Nicholas Bollweg

💻
Thomas Brownback
Thomas Brownback

🐛
eshrh
eshrh

📖
exc4l
exc4l

🐛 💻
p4nix
p4nix

🐛

本项目遵循 all-contributors 规范。欢迎任何形式的贡献!