Skip to content

Releases: SocialSisterYi/CxKitty

0.4.5

10 Dec 17:31
4e58388
Compare
Choose a tag to compare

Note

  • 修复已登录账号改密后重登报错的 BUG
  • 使用新版人脸识别提交 API,修复特殊情况下人脸识别重定向页无法通过的 BUG
  • 人脸识别提交加入随机像素 LSB 干扰,破坏 hash 风控,实现单张图也能多次验证
  • 冷月付费库修复并加入gpt回答设置参数(#87
  • 新增在线题库的搜索器柠檬题库,在该处获取 Token https://www.lemtk.xyz#91
  • 修复Enncy题库搜索器(EnncySearcher)匹配失败时把报错信息作为答案的 BUG(#94
  • 修复带锁树干章节(空章节)解锁失效的 BUG

Changes

  • 升级图形验证码识别库 ddddocr 为 1.4.10,支持 Python3.11 环境下使用
  • Session 类新增方法ck_clear()用于清除当前会话的 Cookie

0.4.4

01 Nov 00:52
2a5111b
Compare
Choose a tag to compare

Note

  • 带锁🔒的树干章节也能自动解锁了(实际上什么都不需要提交,根据 Issue 提供的办法只需带着chapter_id GET 一个 URL 即可,所以只能加个 magic action 了?)(#74
  • 修复第一次作答时,章节任务点总数显示为0的 BUG(#63
  • 新增 Json RestAPI 搜索器JsonApiSearcher,即请求体为 JSON,可以在 config.yml 中选配(#72
  • 新增几个在线题库的搜索器题库海题库海冷月题库Muke题库,可以在 config.yml 中选配(并不推荐首选,因为返回结果可识别性低)(#72
  • 将题干及选项中的特殊字符\xa0替换为\x20(空格),而不是直接删除,解决题目中空格丢失导致无法匹配的 BUG
  • 优化章节作业任务点 Dto 类PointWorkDto中解析 Attachment 数据的函数,修复重入作业任务点判定为“无需完成”的 BUG
  • 考试模式可以跳过“考试承诺确认书”了!(如有填写需求,请在使用本程序前完成提交,因为考试通过后无提交入口)

建议使用 Docker 运行本项目

docker pull socialsisteryi/cx-kitty:latest

0.4.3

15 Sep 15:33
862410d
Compare
Choose a tag to compare

Note

  • 支持 resolve 人脸识别弹窗,可以随机抽图提交,从face_image_path配置的路径中读取
  • 登录后自动拉取之前上传的人脸图片,使用fetch_uploaded_face字段进行开关,下载保存到face_image_path配置的路径
  • 支持 catch 章节带锁未开放异常(#54
  • 新增过滤试题和作业任务点中的 Unicode 空字符u+2002
  • 修复验证码提交后有概率引发异常的 BUG
  • 提升选择题选项匹配相似度阈值
  • 修复章节卡片页 Attachment 提取错误(#58
  • 修复课程 meta 接口返回不存在教师名字段引发异常的 BUG(#53

Changes

  • 分解 cxapi 接口模块__init__.pyutils.py
  • 更名任务点接口模块jobstask_point
  • 拆分各任务点 Dto 类公共方法和属性为基类,在base.py中的TaskPointBase,并在各个任务点 Dto 类继承它
  • config.py 中各个配置项常量改为 BIG_SNAKE_CASE 命名
  • 重写 SessionWraper 类中利用 hook 函数识别特殊页面的实现

V0.4.2

17 Aug 06:40
9cb691f
Compare
Choose a tag to compare

Notes

  • 修复作业任务点中 unicode 空字符(\u200b\u300b)引起的匹配失败
  • 解耦视频和文档任务点的 Dto 与业务逻辑,即添加相应的 Resolver 支持
  • 更正 typo 并统一命名方式

v0.4.1

06 Jul 09:10
325e5af
Compare
Choose a tag to compare

Notes

  • 修复课程考试整卷预览(导出)时题目与题号分隔异常的 BUG,eg:1.下面不属于上海灾描述的是11.15特大火:( )应分隔为下面不属于上海灾描述的是11.15特大火:( )而不是15特大火:( )
  • 自动保存未完成的题目到配置文件定义的export_path路径中,以mistakes_${时间戳}.json命名,eg:mistakes_1688624055.json,格式为标准 QuestionsExportSchema,type 为 2

Changes

  • 答题卡展示组件解耦为AnswerSheetComp
  • 各考试接口对象(任何QAQDtoBase的继承类)的export()方法即可传 str 形式的 format,也可以传 Path 形式的路径,以直接导出为 json 文件
  • 答题器QuestionResolver的自动接管,未完成保存时不需要调用注册的回调函数

v0.4.0

04 Jul 17:54
bd80f3d
Compare
Choose a tag to compare

Notes

  • 新增考试模式(课程考试)支持,在课程选择界面下输入EXAM|课程进入,随即显示二级选择菜单以便选择指定的考试,即可自动答题或批量导出,eg:EXAM|0EXAM|"军事理论"
  • 优化日志功能,信息更精简
  • 试题导出时保存过的答案也可以同时导出了!
  • 更改试题导出规范,由多行 json 改为多 json 文件,以题单类型+试题 id 命名,eg:exam_3726925.jsonwork_114514.json
  • 答题记录 TUI 表格形式,改为插入第一行,而不是在尾部追加
  • 未匹配的题可选使用 fuzzer 方式填充(随机答案)
  • 优化账号选择界面姓名打码,修复三字(不含)以上姓名显示错误,eg:西绕卓玛应显示为西**玛,不应显示为西*玛
  • 接口请求添加 retry 机制,针对移动网络 / 校园网 / 网络质量不佳的用户优化,防止产生 TCP RST 或 TimeOUT 后抛出ConnectionAbort终止整个程序

Changes

  • 配置文件中export_path字段迁移至根节点,定义改为试题导出文件路径
  • 章节测验对象ChapterExam解耦为PointWorkDtoQuestionResolver,分别对应答题的 ctx 与操作这个 ctx 的执行器,解耦后章节测验与课程考试对象ExamDto共用这个QuestionResolver
  • 将搜索器拆分为多文件,方便更新迭代与管理,eg:JsonFileSearcherRestApiSearcherSqliteSearcher
  • 抽象多搜索器支持为MultiSearcherWraper对象
  • 验证会话有效后使用函数set_log_filename()对全局 log 输出文件进行命名,不需要每次创建 logger 对象都要命名
  • 添加用户性别枚举类AccountSex
  • 优化两个内容容器类ClassContainerChapterContainer

v0.3.0

22 Jun 13:33
5c469fa
Compare
Choose a tag to compare

Notes

  • 解决重定向式验证码风控,基于 OpenCV+ddddOCR,全局 hook 了 requests.Session 的request()函数,并判断 URL 作为实现方式
  • 章节容器类ClassChapters增加__rich_console__()方法,可以直接被 rich 打印,自适应区域尺寸
  • 解决视频播放超时 BUG
  • 支持章节习题导出,目前只支持多行 JSON 一种格式,使用exportexport_path字段配置
  • 支持习题workId${schoolId}-${workId}的特殊情况
  • TUI 章节显示部分改为 eg: 2.3.3: (6/9) title 格式
  • 修复 TUI 输入选项删除时 Prompt 消失的 BUG
  • REST API 搜索器支持上传选项以精确匹配,防止 eg: 以下那个选项错误?这种题目无法匹配,在 config 中用o_field指定字段

Changes

  • 配置文件config.yml字段从 littleCamelCase 改为 snake_case
  • 搜索器类SearcherBase下的接口函数invoke()改为传题目数据模型QuestionModel而不是str,并且将请求字段名req_field改为q_field、返回字段名rsp_field改为a_field,对于RestApiSearcher类新增选项字段o_field