Skip to content

ljj48096/ZUFE

Repository files navigation

ZUFE-基于方正教务系统选课脚本

简介

该脚本基于方正教务处系统,目前实现的功能为:

  • 自动选课
  • 获取成绩excel表单

环境依赖

  • Python 3
  • Git

安装

git clone https://github.com/ljj48096/ZUFE.git
cd ZUFE
pip install -r ./requirements.txt

配置文件

使用之前需要配置好项目下的 config.json 文件。

下面是对该配置文件的详细说明。
注意每个课的选课顺序就是在列表中的排列顺序,建议按想选的优先级排课

注意: 本脚本只针对三种类型的课程选课,如果哪个类型不想选的话,在run.py 中把对应的选课代码注释即可:

  • 通识选修课
  • 主修课程(在选课时,只需要点击“选课”即可的课程,不包括需要选哪个实验班的课)
  • 网络课程
{
    "username": "学号",
    "password": "密码",
    "courses": {
        "通识选修课": [
            {
                "课程名称": "阳明心学",
                "课程代码": "MAR1084",
                "教学班名称": "(2024-2025-2)-MAR1084-02"
            }
        ],
        "主修课程": [
            {
                "课程名称": "自然语言处理",
                "课程代码": "DAT1286",
                "教学班名称": "(2024-2025-2)-DAT1286-01"
            }
        ],
        "网络课程": [
            {
                "课程名称": "\"金生\"幸福课36讲", 
                "课程代码": "OTH1189",
                "教学班名称": "(2024-2025-2)-OTH1152-01"
            }
        ]
    },
    "from_email": "",
    "from_email_psw": "",
    "to_email": "",
    "delay": 5,
    "retry_times": 1000
}

特殊键值说明

  • retry_times:重试抢课次数(如果想挂着选课,可以设置成1,建议不要这么干),默认1000次
  • delay:抢课延迟时间(单位:秒),默认5秒(最好不要调整)

以下几个键值需要自己去找,下节会说明查找方式

  • 教学班名称:教学班名称

查找方式

教学班名称 在选课的时候,最左边的值 教学班名称 如果没找到的话,也可以不填,但是选课的时候会选择最早的那节课,所以还是建议填上。格式为(学年跨度-上课学期)-课程代码-教学班号,例如:(2024-2025-2)-DAT1286-01。一般来说结尾是-01的就是第一堂课,-02的就是第二堂课。

快速开始

安装完成,配置完文件就可以愉快的运行了。

python ./run.py  

致谢

该脚本的大致框架参考了Cyrus97的 HDU ,在此表示感谢。
在验证码识别部分,使用了ddddocr的API,感谢sml2h3的提供。

注意

该脚本仅供学习交流使用,请勿用于商业用途,请遵守方正教务系统的使用规范。

给后继者修改的提示

所有选课的操作都在crawlers/serivce.py中的CourseService类中。
如果想增加其他类型的选课,增加对应的xkkx_id,并在config和run.py中的check_config函数中在增加对应的参数。

感悟

写这个脚本是源于想找些能直接给浙财学生用的脚本,但是苦于财经类院校确实没啥人写这玩意,于是想着整点东西。
本来大一进来就想做选课脚本了,但是一拖再拖,已经熬成大三老登了才想起来做。里面很多屎山,自己都不忍直视。希望有更有能力的同学来优化下。

About

基于方正教务处系统的抢课脚本

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages