Skip to content
This repository has been archived by the owner on Nov 5, 2021. It is now read-only.

模拟登录课程表并解析生成ICS文件,方便导入日历

License

Notifications You must be signed in to change notification settings

cunzao/xidian-class-shedule

Repository files navigation

西电课程表爬取脚本

简介

本脚本通过模拟登录方式获取cookies,通过请求课程表数据的API获取课程表数据的JSON数据,解析获的JSON数据并生成 ICS(a filename extension for iCalendar files) 文件。在电脑端打开这个ICS文件即可将课程表导入到日历,再通过EXCHANGE服务多端同步,从而手机电脑都可以方便查看课表了。

背景

因为我电的课表实在让人凌乱,上课随周数而变化,有时候这周这门课没课,有时候那门课没课,实在让人琢磨不透,然后手机端也没有可以查看课表的APP,只能看截图,所以萌生了制作这个脚本的想法,花费了半天解析课程表,花费了一天模拟登陆,最后完成了这个脚本的初代!代码写的就跟那个啥一样=-=

脚本用法

新建一个文件夹存放本脚本

进入新创的这个文件夹

打开命令行(cmd),将命令行的路径调整到这个新建的文件夹,在命令行输入:

pip install requests
pip install beautifulsoup4
pip install ics
pip install pycryptodome
pip install cryptography

git clone https://github.com/cunzao/xidian-class-shedule.git

将代码Clone到本地,然后打开 config.json 文件,填写相应的数据!

{
    "name" : "test", // 给生成的文件起名
    "stuNum" : "123456789", // 学号
    "passWord" : "12345678" // 密码
}

然后在窗口输入:

python index.py # python2
python3 index.py # python3

以上两个命令根据自己的环境输入。

然后你就在当前目录得到了两个文件:"name".json 和 "name".ics(这两个文件名根据你填写的name不同而不同)


ICS文件的使用

错误使用在WINDOWS平台双击这个ICS文件,然后点击左上角的添加到日历。这样使用会导致你很难删除这些事件,必须要一个一个点。必须要一个一个点。必须要一个一个点。

正确使用: 使用微软的outlook,基本上每个人都有微软账号吧,就那个格式是XXXX@outlook.com的账号,然后在windows系统日历里找到设置,管理账号 - 添加账户 - outlook.com,然后输入账号密码登录。接着打开这个网页:微软日历,登录你的微软账号,再在左边找到 添加日历,点击添加日历,然后给这个日历取个名字,比如“课程表”,再然后找到导入日历项,点击导入日历项,从文件 - 浏览 - “name”.ics(就刚刚生成的那个ics文件)- 导入至 (选择你刚刚创建的那个日历,比如我刚刚取名的“课程表”)- 导入,现在就在日历生成了你的课程表了。你再打开电脑上的日历,然后发现电脑端的日历也有了这些课程。

图一、创建课程表

1567592256250

图二、导入ICS文件

1567592331340

课程表同步到Iphone

打开设置 - 密码与账户 - 添加账户 - outlook.com - 账户名 - 密码 - 登录 - 同意授权

课程表同步到小米手机

打开 日历 - 右上角的三个点 - 设置 - 日历账号管理 - 添加日历账号 - 公司 - outlook.com - 账户名 - 密码 - 登录 - 同意授权

效果

小米手机

1567592991688

Iphone

1567593250284

脚本文件介绍

总共有五个程序文件:

index.py

程序的入口类,用于调用整个程序,使程序运行

CZuser.py

包含一个czUser类,关于用户的账号操作都在里面,即登录

CZHeaders.py

发送数据请求的文件头都被包括在这个类中

XIDIANClassShedule.py

课程表类,包括以下功能:获取课程表信息、读取本地课程表信息、课程信息存储到本地、生成课程表的ICS文件

myOneLesson.py

将一节课封装成类,用于处理一节课的课程信息

最后

因为是初代版本,难免会有BUG,提ISSUE,PULL REQUEST都可以让我知道问题!祝一切顺利!

日志

2019年9月5日 17点11分

对整体程序进行重构

2020年10月26日 16点47分

  1. 针对学校的密码加密,进行相应的加密

  2. 针对本学期的时间调整相关的参数

About

模拟登录课程表并解析生成ICS文件,方便导入日历

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages