华谊题库助手

支持在普通 HTTP / HTTPS 网页中通过快捷键打开的本地题库油猴脚本:文字搜索、划词检索、自动选择已确认答案,并保留华谊练习平台的按库采集、CSV 导出与多题库导入。当前版本 1.2.2。

1.2.2 修复了练习接口选择题选项正文使用 itemContent 时,单选和多选整题未被采集的问题;同时兼容原有 content 字段,标准答案继续按选项 ID 对应。更新脚本并刷新、重新进入练习后生效。

安装文件:dist/huayi-question-bank.user.js。这是构建后的完整脚本,无须安装 Node.js 或运行服务器。

安装与开始使用

  1. 在浏览器中安装并启用 Tampermonkey(油猴)。
  2. 打开油猴管理面板,选择“新建脚本”,将安装文件的全部内容粘贴进去并保存。
  3. 打开或刷新普通网页,按 Shift + Alt + Q 显示题库助手,再按一次隐藏。每次加载页面都默认完全隐藏,无悬浮按钮;旧版保存的打开状态也会重置。
  4. 在华谊练习页面,正常加载的题目和标准答案仍会自动保存;安装后应重新进入练习,以便观察首次题目响应。普通网页只使用本地题库检索,不观察其网络请求或自动采集表单。
  5. 在“文字搜索”中输入或粘贴至少两个字符,按回车或点“搜索”。也可以在页面划选题干后松开鼠标自动查询。
  6. 在“题库 / 导出”中检查实际题库名、范围内题数及文件名预览,再导出 CSV 或备份 JSON。已识别的练习页默认当前题库;普通网页默认全部已存题库。

浏览器需允许油猴在相应网站运行用户脚本。更新到全网页版本后,浏览器可能需要重新授予网站访问权限。若快捷键没有显示面板,先确认扩展已启用且该站点有运行权限。浏览器内置页面、扩展商店及受限制页面不能运行普通用户脚本;本地文件取决于浏览器的文件访问设置,本版匹配普通 HTTP / HTTPS 页面。

紧凑白色面板与重复记录修复

面板宽度为 300px、最大高度为 440px;采用纯白背景、浅灰边框和灰色文字,缩减标题、按钮和卡片留白,内容在面板内滚动。快捷键及每页默认隐藏的行为保留,自动答题仍默认关闭。

平台每次进入同一练习可能生成新的一组题目 ID。旧版只按 ID 区分,会把三个 232 题加载批次存成 696 条。新版记录完整加载批次及批次内题目位置,并保留来源 ID 别名,使后续重复加载不再增加题数。

合并时核对题库、题型、题干和完整选项,同时保留原题库内合法的同文题。例如原库 232 题中有 3 对同文题,整理后仍为 232 个题目位置,不会压成 229。不同答案保留冲突;不同题库、不同选项不会混并。页面总数仅用于展示核对,不用于截断数据。

旧记录在加载、导入和导出前统一整理。首次整理前,原始数据会备份到本助手的独立存储项;在“设置”或油猴菜单中点击“导出整理前原始备份”可以取回。CSV / JSON 备份保留合并记录的来源 ID 别名、批次与位置字段。

自动答题

打开“自动答题”页签,先导入包含标准答案的题库,然后选择:

  • 答当前题:从本地已确认记录中精确匹配当前题干、题型和完整选项,自动选择正确选项。
  • 连续自动选择:仅在当前页面启用;题目变化后继续核对并选择。关闭后立即停止,刷新或打开其他网页后默认关闭。

单选按答案内容选择当前选项;多选同步完整正确集合,取消已经选中的错误项;判断题按“正确 / 错误”对应。候选答案冲突、题干或选项不完整、重复文字无法唯一对应、选项不可操作时跳过,显示原因。

选择完成后由你检查并提交或进入下一题。脚本不会点击提交、交卷、下一题按钮。华谊练习中的选项点击可能触发网站自身的作答响应,具体行为由练习页面决定。

自动选择支持华谊题目 DOM,以及标准 fieldset + legend + label + radio/checkbox 和明确题目容器结构。全网页显示不代表能自动识别任意网站的自定义答题控件;无法识别时可继续使用文字搜索。题库仍保存在同一个油猴脚本存储中,可在不同网站访问。

本次方案:按题库分别统计、搜索和导出

旧版会累积的原因是:默认选择“全部题库”,主统计也是所有本地记录的总数,导出文件统一叫“华谊题库”。保存多个题库本身是正常行为,但当前库的展示与导出范围应该明确区分。

  1. 识别当前选中的培训大纲条目、练习标题和任务 ID;接口提供的题库 ID 用于建立对应。切换期间旧题目与晚到响应保留原来源,不能套上新库名称。
  2. 面板顶部始终显示当前实际题库名和本库题数。导出页默认“当前题库”;切换左侧题库后自动跟随,统计、CSV / JSON 内容和文件名预览一起更新。
  3. 需要合并备份时,手动选择“全部题库”。题库总数与全部题数在“已保存题库”单独显示,各库名称和题数分别列出。
  4. 文件名使用实际题库名称,例如 华谊集团化工总控工(高级)-单选题库1_500题_20261029.csv。Windows 不允许的文件名字符会替换成下划线;全部备份明确命名“全部题库”。
  5. 对旧数据,只在正常响应重新确认了相同题库 ID 的准确名称时修正该 ID 的历史名称;不按题型或相同题干猜测其他题库的归属。

文字搜索

  • 输入或粘贴完整题干、题干片段、选项内容或标准答案关键词,支持按钮、回车和输入后自动查询,也可点“清空”。
  • “搜索题库”可选当前库、任意已保存库或全部库;已识别练习页默认当前库,普通网页默认全部库。搜索范围与导出范围独立,跨库查答案不会让导出自动变成全部。
  • “搜索内容”可选全部文字、仅题干、仅选项、仅标准答案;多个关键词可用空格分隔,按同时包含处理。
  • 结果标注命中题干、选项或答案,显示来源题库。只把已确认答案用于答案字段搜索,冲突和待补记录仍可通过题干找到。
  • 每次最多展示 50 条结果,可细化关键词继续查找。

一次导入多个题库

点击“导入多个题库”,在文件选择器中用 Ctrl / Shift 同时选择多个 CSV 和 JSON。两种格式可以混选;文件中已有的题库名称、ID 和答案分别保留。单个合并备份文件也可包含多个题库。

没有来源题库名称的文件使用文件名(不含扩展名)作为名称。例如 判断题库2.csv 中没有来源列,导入后显示“判断题库2”。相同题目重复导入会合并,不同题库分别管理。若任一文件格式错误,本次整批不导入,并显示具体出错文件。

导入成功后可在“已保存题库”查看各库名称和题数,再在搜索 / 导出下拉框选择相应题库。导入不会改变页面当前正在练习的题库,也不会自动将导出范围切为全部。

隐藏、收起与恢复

操作 效果 恢复方式
右上角“收起” 只显示面板标题栏 点击“展开”
打开或刷新网页 默认完全隐藏,无悬浮按钮 Shift + Alt + Q
右上角“隐藏” 面板完全隐藏 Shift + Alt + Q
Shift + Alt + Q 在显示与隐藏之间切换 再按一次
油猴菜单“显示题库助手” 手动显示面板 右上角隐藏或快捷键

复制开关等设置会保留;面板在每次加载后均重置为隐藏,连续自动选择也会关闭。隐藏时划选题干仍会更新查询,但不会重新弹出面板。隐藏、采集和连续自动选择是独立操作;隐藏面板不会停止你在当前页已开启的连续选择,停止时请先关闭相应开关。

正确答案如何防止错位

  • 保存标准答案的文字内容、正确选项 ID,以及同一条题目的完整选项。原始 A/B/C 字母仅供参考。
  • 查到答案后,核验当前题干、题型和完整选项集合,再根据当前顺序显示字母。
  • 例如采集时正确答案为 B“提高温度”,当前页面该内容移至 C,面板显示“提高温度;当前页面对应:C”。
  • 多选题保存正确选项的完整集合;判断题保存“正确 / 错误”。
  • 未取得标准答案时显示“待补”。学生选择、答题卡上的对错和题号不会被当作标准答案。
  • 重复选项无法唯一对应、选项内容发生变化、同一题出现不同答案时,显示未确认或冲突,冲突内容保留在备份中。

CSV 与 JSON

CSV 使用 UTF-8 BOM,兼容 Excel 查看,支持中文、逗号、双引号及单元格换行。列包括:来源题库、题库 ID、题目 ID、题型、题干、各选项、正确答案内容、采集时答案字母、解析、答案状态、答案来源、采集时间和完整记录 JSON。

助手导出的 CSV 含“完整记录JSON”列,回导时以该列为准。 如果要在 Excel 中手工修改可读列并回导,请删除“完整记录JSON”整列,再导入;修改该列之外的展示文字不会改变完整记录。长数字 ID 和以公式字符开头的内容在可读列使用文本保护,原文保存在 JSON 中。

也可导入自己的标准 CSV。最小示例:

来源题库,题型,题干,选项A,选项B,正确答案内容,答案状态
示例题库,单选题,示例题干,选项一,选项二,选项二,已确认
示例题库,判断题,示例判断题,正确,错误,错误,已确认

“正确答案内容”填写完整答案文字。多选使用 JSON 字符串数组或在同一单元格中逐行填写完整选项,不能仅填写 A/B 字母。“我的答案”列不作为标准答案读取。建议直接以助手导出的表格作为模板。

JSON 备份包含 schemaVersion: 1 和 records 数组,保留完整选项标识、来源、答案和冲突。两种格式均按题目合并,导入不会清空现有题库。每个文件限制 20 MB,每批文件合计限制 50 MB、50000 条记录。

采集范围与当前验证边界

脚本在当前账号正常练习时,观察已收到的题目 / 答案响应,并补充当前页面 DOM。自动选择只操作对应选项,网站可能按自身规则保存作答。接口没有提供标准答案时,保留待补状态;仅安装脚本不会凭空补出答案。

目前适配了保存页面中的真实题目结构,以及业务脚本中可确认的练习接口:/upm/start、/upm/wrong/start、/pra/{id}/questions 和对应单题作答结果。接口适配限制在本站及学习平台域名。脚本不发送题库到外部服务器,来源 URL 不保存查询参数。

本地分析时使用的原保存 HTML 显示判断题库共 500 题,实际只含第 62 题的题干和选项,没有该题标准答案。原始网页及其资源文件不纳入仓库;仓库中的浏览器测试使用脱敏的最小题目结构夹具。离线页面不能单独还原 500 道题或全部答案,在线正常练习能否一次返回全部题目和全部标准答案,仍需要在实际登录页面确认。

题库保存在油猴脚本存储中,关闭面板、刷新或暂停采集不会清空。更换浏览器、卸载脚本或清理扩展数据前,请先导出 JSON 备份。

源码与验证

题库/ 用于保存从 Chrome 导出的题库和合并结果。合并工具会保留来源题库、标准答案、解析及 ID 别名,并检查五库是否齐全、题数与页面是否一致:

npm run merge:banks -- --manifest 页面题数.json --per-bank 五个导出文件.csv

页面清单格式为 {"banks":[{"bankName":"完整题库名称","questionCount":500}, ...]},需要列出判断1、判断2、单选1、单选2和多选五个题库。合并前会核对缺库、缺答案和冲突,详情写入输出的 题库清单.json;数据未齐时不标记为完整。

无需第三方前端依赖,源码分为:

  • src/core.js:答案规范化、去重与冲突、检索、字母映射、CSV。
  • src/adapter.js:本站响应观察、题目 DOM 读取、复制恢复。
  • src/autofill.js:精确答案匹配、标准选项操作与连续选择。
  • src/app.js:面板、隐藏恢复、存储、导入导出。
npm run build
npm test
npm run check

真实浏览器测试使用 npm run test:browser,需要现有 Playwright 和 Chromium;可通过 QB_PLAYWRIGHT_MODULE、QB_CHROMIUM_EXECUTABLE 指定环境路径。测试固定读取 tests/fixtures/question.html,使用本地模拟接口,不需要原始保存网页或平台账号。构建、语法检查和核心单元测试只需 Node.js,无第三方依赖。

修改源码后执行 npm run build,再把新的 dist/huayi-question-bank.user.js 更新到油猴。

S
Description
e乐学题库导出导入
Readme 9.1 MiB
Languages
JavaScript 100%