长沙理工大学网络教学平台的作业发布和作业截止提醒
- 作业刚发布时提醒
- 作业将截止时提醒
- 截止提醒的第一次提醒的触发条件是检测到作业未提交并将在一天内截止。
- 截止提醒的第二次提醒的触发条件是检测到作业未提交并将在半天内截止。
由于一项作业最多提醒三次,故不至于造成骚扰。
另外该项目应该对爬取长理网络教学平台其他数据有很大的参考价值。
-
下载Python3
目前版本限制不明确,推荐使用
python3.8
-
使用如下命令安装好依赖:
pip install -r requirements.txt
-
填写好.env文件中的配置信息
-
修改data.csv文件中的配置信息(可参考bulk-email-sender)
- 简单测试运行
python main.py
-
配合 GitHub Action 真正实现作业提醒
以下操作的操作对象均为main.yml
-
打开第五行和和第六行的注释。
-
编辑第六行的
- cron
,选择一个适当的运行频率。关于
cron
的含义和用法可参考https://jasonet.co/posts/scheduled-actions/ -
修改第37行和第38行的
git
配置信息。
-
注意:必须在主目录下,否则相对路径会发生错误
输入长沙理工大学网络教学平台的账号(学号)和密码。 即可得到有待提交作业的课程列表以及待提交作业的详细信息。
控制台会输出上面的信息。
另外程序还会自动创建如下几个文件:
reminder_data.txt
: 课程通知的源代码(来自Ajax请求)。- courses/课程文件:待提交作业的详细信息,其中文件名的前半段表示课程名,后半段表示作业id。
输入密码时采用的是getpass模块中的getpass方法,形式类似于Linux中输入密码,控制台不会进行回显(echo)。
由于太过频繁的访问将得不到网站的数据,所以整个程序做了延时处理,运行大约花费2s左右。
python get_homework.py
清除长沙理工大学网络教学平台的系统通知(简而言之就是把系统通知访问一遍)
治疗强迫症?
python clean_sn.py
- 作业发布后进行提醒
- 作业将要截止时进行提醒(两次)
- 提供 shell 版本脚本
- 解析作业详情,将作业打印为
md
格式 - 当没有抓取到任何有效数据时,重置.env文件
- 已访问过的系统通知不重复访问
- 使用beautifulsoup代替pyquery
- 采用面向对象的思想重构代码
- 提供运行日志记录,并保证info.log文件不至于过大(限制最大为196kB)
- 通过运行情况动态调整运行频率
- 优化 json method,关注分页
- 支持多种邮箱
在Apache-2.0许可证下发布。有关更多信息,请参阅LICENSE。