Anki导出卡片评分与时间至CSV插件安装失败及功能异常求助
修复Anki评分导出CSV插件的安装与运行问题
我开发了一款可将Anki卡片评分及评分时间导出为CSV文件的插件,在anki-review_results文件夹中存放了空的__init__.py、anki_rating_time_record.py及manifest.json文件,压缩后改为.ankiaddon扩展名,安装时却报错:
"An error occurred during the installation of anki-review-results.ankiaddon: Invalid add-on manifest."
当前使用Anki版本为2.1.58,以下是具体修复方案:
一、修复manifest.json的格式与内容错误
安装报错的核心原因是manifest.json存在语法和内容错误,修正后的完整内容如下:
{ "id": "anki-review-results", "version": "0.1", "name": "Anki Review Results", "description": "Save the results of your Anki reviews in a CSV file", "author": "Shohei", "addonType": "background", "minimumAnkiVersion": "2.1.0", "files": ["anki_rating_time_record.py", "__init__.py"] }
具体修正点:
- 补全
minimumAnkiVersion行末尾的逗号,修复JSON语法错误 - 修正
files数组中的文件名:_init_.py改为__init__.py,Anki_rating_time_record.py改为与实际文件一致的anki_rating_time_record.py - 将
addonType的数组格式改为字符串格式,符合Anki 2.1.58的插件规范
二、修复anki_rating_time_record.py的代码错误
原代码使用了错误的API和逻辑,完全不符合Anki插件开发规范,修正后的完整代码如下:
from aqt import mw from aqt.utils import showInfo import csv import datetime from pathlib import Path # 初始化评分记录存储列表 review_results = [] def on_card_answered(card, ease): # 获取当前时间戳 now = datetime.datetime.now() # 将ease值转换为对应的评分文本(1=Again,2=Hard,3=Good,4=Easy) result = ["Again", "Hard", "Good", "Easy"][ease-1] # 存储记录:时间、评分结果、卡片ID、ease值 review_results.append((now, result, card.id, ease)) # 注册卡片回答完成的回调函数 mw.reviewer.card_did_answer.connect(on_card_answered) def save_review_results(): # 获取插件专属数据目录,确保目录存在 data_dir = Path(mw.pm.addonFolder()) / "anki-review-results" data_dir.mkdir(exist_ok=True) csv_path = data_dir / "review_results.csv" # 写入CSV文件,指定UTF-8编码避免乱码 with open(csv_path, "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerow(["timestamp", "result", "card_id", "ease"]) for entry in review_results: writer.writerow([ entry[0].strftime("%Y-%m-%d %H:%M:%S"), entry[1], entry[2], entry[3] ]) showInfo(f"评分记录已保存到:{csv_path}") # 添加菜单选项,让用户手动触发导出操作 action = mw.form.menuTools.addAction("导出评分记录到CSV") action.triggered.connect(save_review_results)
具体修正点:
- 替换错误的
anki_python_api导入,改用Anki官方的QT开发API - 修复无效的
Anki = anki_python_api.语法行 - 使用Anki原生的
card_did_answer信号注册回调,替代错误的回调方式 - 修正循环中的变量名错误,调整元组存储顺序与CSV表头对应
- 改用插件专属目录存储CSV文件,避免路径混乱
- 添加手动导出的菜单选项,方便用户控制导出时机
内容的提问来源于stack exchange,提问作者Semayuki
相关产品推荐
相关产品推荐

