Skip to content

SJYssr/CX_EXAM_python

Repository files navigation

超星考试客户端工具

license stars release python platform


🚀 本项目旨在为考试客户端(如学习通)提供本地题库、AI搜题、界面增强等多种实用功能。


📑 目录

项目介绍

本项目是一个专为考试客户端(如学习通)设计的辅助工具,集成了本地题库管理、AI智能搜题、窗口防护与界面增强等多项实用功能,提升考试答题效率与体验。


主要功能

题库管理与搜索

  • 本地题库导入:自动读取tiku.txt文件,支持大批量题目管理。
  • 关键词高亮搜索:输入关键词后,所有匹配项高亮显示,支持回车键跳转下一个结果。
  • 题库内容只读保护:防止误操作修改题库内容。

AI 智能搜题

  • 多AI平台支持(免重启热切换):默认使用写死在代码中的讯飞星火配置;当存在config.yaml且配置了 deepseek.api_key 时自动使用 Deepseek;在设置页保存 Deepseek 配置后可立即生效,无需重启。
  • 一键AI问答:输入问题后,AI自动返回答案,支持多线程防止界面卡顿。
  • AI答案一键输入:AI答案可一键自动输入到目标输入框(需英文输入法)。

界面与交互增强

  • 窗口置顶与防录屏/截屏:调用SetWindowDisplayAffinity,窗口始终置顶且无法被录屏/截屏工具捕获。
  • 窗口透明度调节:右键一键切换(0.2/0.5),Ctrl+滚轮精细调节(0.1~1.0)。
  • 字体大小调节:Alt+滚轮随时调整题库/AI答案字体大小。
  • 窗口快速隐藏/显示:F3一键隐藏到屏幕边缘,再次按下恢复。
  • 窗口自由拖动:Ctrl+鼠标左键拖动窗口到任意位置。
  • ESC/F1-F12快捷退出:ESC或任意F1-F12键可快速关闭程序(可自定义)。

其他实用功能

  • 多线程处理:AI问答、输入等操作均采用多线程,保证界面流畅不卡顿。
  • 详细注释与易用配置:所有代码文件均有详细头部说明和函数注释;config.yaml仅存放 Deepseek 配置,简单明了,便于二次开发。

代码结构与模块说明

本项目已重构为模块化结构,主入口为main.py,各功能分为独立模块,便于维护和扩展。

├── main.py            # 程序主入口,负责加载配置、初始化界面、事件绑定、AI调用与主流程调度
├── config_manager.py  # 配置加载与校验,提供全局配置访问接口
├── file_manager.py    # 题库文件读取,供主界面加载题库内容
├── ai_spark.py        # 讯飞星火AI WebSocket API调用、参数生成、消息处理
├── ai_deepseek.py     # DeepseekAI HTTP API调用,AI问答请求与异常处理
├── ui_main.py         # 主界面控件的创建、布局、搜索高亮、输入等事件处理
├── ui_ai.py           # AI界面控件的创建、布局、AI搜索与输入事件处理
├── ui_settings.py     # 设置界面(嵌入式)Deepseek 配置读写与保存
├── utils.py           # 通用窗口操作工具函数,如置顶、透明度调整、窗口拖动、关闭等
├── config.yaml        # 配置文件,仅包含 Deepseek 配置(可选)
├── tiku.txt           # 本地题库文件
└── README.md          # 项目说明文档

使用说明

环境准备

  1. 安装Python:确保已安装Python 3.7+。
  2. 安装依赖:在命令行中运行以下命令安装所需依赖:
    pip install tkinter requests pyyaml pynput websocket-client
  3. 准备文件:在程序运行目录下创建tiku.txt(题库)和config.yaml(配置文件)。

配置与切换

  • 程序默认使用讯飞星火配置,无需也不会写入到config.yaml
  • 如需使用 Deepseek,请在主界面的“设置”中填写并保存:
    • api_key: 你的 Deepseek API Key
    • model: 仅支持 deepseek-chatdeepseek-reasoner
  • 保存后立即生效,无需重启;config.yaml仅包含 deepseek 字段。

启动程序

  1. 运行程序:在命令行中运行python main.py
  2. 主界面功能
    • 题库搜索:输入关键词,回车跳转下一个结果。
    • 设置/AI:顶部右侧“设置”按钮与“AI”按钮(已对调位置)。
    • 快捷输入:在输入框中输入内容,点击"输入"按钮自动输入。

常用快捷键与操作

  • F3:窗口隐藏/恢复
  • Ctrl+鼠标左键:拖动窗口
  • 右键:切换透明度
  • Ctrl+滚轮:调整透明度
  • Alt+滚轮:调整字体大小
  • ESC/F1-F12:快速退出
  • 回车:题库搜索下一个

常见问题

  • Q: 启动报错"缺少config.yaml文件"?

    • A: 请确保config.yaml在程序同目录下,参考示例配置文件填写。
  • Q: 题库无法加载或搜索?

    • A: 请确保tiku.txt存在且为UTF-8编码,每行一题。
  • Q: AI搜题无响应?

    • A: 检查网络连接、API密钥是否正确,或更换AI平台。
  • Q: 窗口无法被录屏/截屏?

    • A: 仅主窗口受保护,输入法弹窗等仍可能被录屏,技术有限无法完全防护。
  • Q: 如何自定义快捷键?

    • A: 可在main.py等文件中修改相关绑定代码,注释详细易于调整。

时间日历

日期 事件
2024.12.26 项目开始,创建代码仓库
2024.12.27 创建README和GPL-3.0 License,demo1.py实现透明度、快捷退出等
2024.12.28 解决截屏/录屏,题库导入与高亮搜索
2024.12.29 添加一键输入功能
2024.12.30 完成AI功能(讯飞星火),项目基本完成
2025.1.1 添加Alt+滚轮调整字体大小
2025.1.6 添加窗口可移动(Ctrl+鼠标左键)
2025.1.7 添加config文件,AI功能更易配置
2025.2.13 添加Deepseek AI
2025.2.25 添加前置文件查找、详细注释
2025.2.27 多线程处理防止堵塞
2025.4.22 查找下一个功能
2025.7.9 终于把屎山重构了,更加便于修改
2025.9.10 更新架构

赞赏


注意事项

⚠️ 请确保运行目录下有tiku.txtconfig.yaml文件

  • AI逻辑代码已模块化,详见ai_spark.pyai_deepseek.py
  • 讯飞星火AI需自行申请密钥
  • 预留AI可直接使用,建议更换为自己的
  • 其他AI请自行修改代码
  • 隐藏(F3)时窗口透明度降到最低,拉成细条放左侧
  • 输入法内容仍可能被录屏/截屏,能力有限无法解决,如有方案欢迎issues留言
  • 如需要破解复制粘贴功能&&篡改猴相关功能,请移步cef_cx_copy_tool

配置说明

config.yaml(可选,仅用于 Deepseek,无需单独设置):

deepseek:
  api_key: "YOUR_DEEPSEEK_API_KEY"
  model: "deepseek-chat"  # 或 deepseek-reasoner

贡献与反馈

欢迎提交 Issues 反馈问题或建议,或直接 Fork/PR 参与开发。


免责声明

本代码仅用于学习讨论,禁止用于盈利或违法用途。

  • 遵循 GPL-3.0 License 协议:
    • 允许开源/免费使用、引用、修改、衍生
    • 禁止闭源商业发布、销售及盈利
    • 基于本代码的程序必须同样遵守GPL-3.0协议
  • 他人或组织使用本代码进行的任何违法行为与本人无关

About

某星学习通考试客户端题库(霸屏软件)搜题-python版本

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages