Skip to content

1923213756/Anyview_Script

Repository files navigation

AnyView Automator

这是一个用于自动化提交广工 AnyView 平台作业的 Python 脚本。它能自动从 Markdown 文件中解析代码答案,并模拟浏览器操作将代码提交到 AnyView 学生端。

🚀 功能特点

  • 自动化提交:自动登录、进入课程、查找题目、输入代码并运行。
  • 智能解析:自动从 gdut_anyview_example-main 目录下的 Markdown 笔记中提取题目 ID 和对应的代码。
  • 防反爬策略:模拟真实键盘输入,包含随机延时,避免被判定为机器人。
  • 自动头文件:自动为代码添加 allinclude.h 引用。
  • 断点续传:支持跳过已通过的题目(需在脚本中稍作调整检测逻辑)或通过缓存的 solutions.json 快速加载。

🛠️ 安装与配置

1. 环境要求

  • Python 3.8+
  • Chrome 浏览器
  • ChromeDriver (版本需与浏览器一致)

2. 安装依赖库

在终端运行以下命令安装所需的 Python 库:

pip install selenium

3. 配置脚本

本脚本使用 YAML 文件进行配置。请参考 config.yaml.example 创建一个 config.yaml 文件,并填写你的学号和密码:

# 登录凭据
credentials:
  username: "你的学号"
  password: "你的密码"

# 其他配置 (通常保持默认)
settings:
  login_url: "https://anyview.gdut.edu.cn/student/"
  solutions_root_dir: "gdut_anyview_example-main"
  solutions_json_path: "solutions.json"

注意:为了安全,请务必将 config.yaml 添加到 .gitignore 中(本仓库已默认添加),不要将包含私密信息的文件上传到公共仓库。


📖 使用指南

启动脚本

确保已经在项目根目录下(即 anyview_automator.py 所在目录),运行:

python anyview_automator.py

运行流程

  1. 脚本会询问是否使用 solutions.json(如果存在)。输入 y 或直接回车使用缓存答案,输入 n 重新扫描 Markdown 文件。
  2. 自动启动 Chrome 浏览器。
  3. 自动登录 AnyView(确保你已配置好账号密码)。
  4. 依次进入每个题目页面,清除旧代码,输入新代码并点击运行。
  5. 等待 15 秒查看结果,然后返回列表继续下一个。

📝 如何修改答案

你有两种方式修改或添加题目的答案。

方法一:修改源 Markdown 文件(推荐,作为长期备份)

脚本会自动扫描 gdut_anyview_example-main 文件夹下的章节目录(如 chapter1, chapter2...)。

在这些目录的 README.md 文件中,答案必须严格遵循以下格式才能被识别:

## 标题 <a name='任意'></a>DC010001 (这里是题目ID,必须以DC开头)
... 题目描述 ...
\`\`\`c
// 这里写你的代码
#include "allinclude.h" // 脚本会自动加这行,你手动加也可以
void func() {
    ...
}
\`\`\`

关键点

  • 必须包含 ## 二级标题。
  • 标题行中必须包含 DC 开头的题目 ID(如 DC020001)。
  • 代码必须包裹在 ```c 或 ```cpp 代码块中。

方法二:直接修改 solutions.json(快速调试)

如果你已经运行过一次脚本,根目录下会生成 solutions.json。你可以直接编辑这个文件来修正单个题目的答案,而不需要去改 Markdown。

JSON 结构

[
    {
        "id": "DC010011",
        "code": "#include \"allinclude.h\"  //DO NOT edit this line\nint main()..."
    },
    ...
]

修改后,下次运行脚本时选择 使用 JSON 加载 (y) 即可生效。


⚠️ 常见问题与注意事项

  1. 题目ID匹配: 脚本通过正则表达式 (DC\w+) 匹配题目 ID。请确保 Markdown 中的 ID 准确无误,否则无法在网页上定位题目。

  2. 代码输入卡顿: 为了模拟人类输入,脚本可以分块输入代码。如果觉得太慢或太快,可以调整 submit_solution 函数中的 chunk_size

  3. 无法定位编辑器: AnyView 使用 Monaco Editor,其结构较复杂。如果脚本提示“无法定位代码区域”,请不要最小化浏览器窗口,保持其在前台显示。

  4. 跳过已通过题目: 脚本内含检测逻辑,如果识别到题目行包含“已通过”,会自动跳过。

  5. 头文件: 脚本强制要求代码包含 #include "allinclude.h" //DO NOT edit this line。如果你的原代码里没有,脚本会自动添加到第一行。

About

An auto programme to pass anyview tasks,but you need to understand the code to fit in your answers.Otherwise it can only finish 数据结构.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages