Generate CQU timetable iCalendar (ics) file
Project description
ICS 课程表文件生成脚本
适用于最新选课站点生成的 xlsx
或 json
格式的课表转换为日历软件能认到的 ICS
格式文件.
使用说明
使用 pip 安装依赖:
pip install cqu_timetable_new
直接运行 (demo)
准备从新选课网站下载的 课表.xlsx
或者点击 查看课表
时请求的 json 文件,放置于任意目录。
配置文件格式如下:
[config]
debug = False
base_dir = /home/ddqi/kb.xlsx
start_date = 20210301
file_name = timetable.ics
alarm = True
duration = 15
配置项 | 类型 | 示例 | 注释 |
---|---|---|---|
debug | boolean | True | 控制是否为调试模式,可选值:True False |
base_dir | str | /home/ddqi/kb.xlsx | 指向课表文件的路径 |
start_date | str | 20210301 | 行课日期 |
file_name | str | timetable.ics | 生成的 ics 文件名(为避免编码问题不要用中文),扩展名请勿更改,文件名不可包含中文 |
alarm | boolean | True | 是否开启提醒 |
duration | Int | 15 | 提前提醒时间,单位:分钟 |
将配置文件 config.txt
放置在工作目录下,终端执行:
cqu_timetable_new
将生成指定文件名的 iCalendar 格式文件
tkinter 前端
使用 pip 安装依赖:
pip install cqu_timetable_new[tk]
之后可运行
cqu_timetable_new-tk
启动 tkinter 前端。
Qt5 前端
使用 pip 安装依赖:
pip install cqu_timetable_new[pyqt]
之后可运行
cqu_timetable_new-qt
启动 Qt5 前端。
作为库来使用
使用时需要先生成课表数据,再从课表数据中生成日历
-
生成课表数据
- 可通过
loadIO_from_json
或loadIO_from_xlsx
函数从文件或数据流中读取 json 或 xlsx,返回解析出的课表数据 - 也可通过
load_from_json
或load_from_xlsx
函数读取str
或bytes
格式的 json 或 xlsx 数据,返回解析出的课表数据
- 可通过
-
生成日历数据
使用
mkical
函数,第一个参数是上一步得到的课表数据,第二个参数是datetime.date
类型的开学日期,返回icalendar.Calendar
类型的日历数据,可通过其to_ical
得到 ics 文件的内容。
example:
from cqu_timetable_new import mkical, loadIO_from_xlsx
from datetime import date
xlsx_path = "Downloads/课表.xlsx" # 课表 xlsx 文件路径
ical_path = "课表.ics" # 要保存的日历文件的路径
data = loadIO_from_xlsx(xlsx_path) # 从 xlsx 文件中中加载课表数据
ical = mkical(data, date(2021,3,1)) # 生成日历,2021.3.1(必须是周一)开学
with open(ical_path, 'wb') as file_: # 保存 ics 文件时应用二进制模式打开
file_.write(ical.to_ical()) # 用 to_ical 方法可导出日历数据(类型为 bytes)
另有 demo 可见于 cqu_timetable_new/__init__.py 中的 main
函数
FAQ
Q: 为什么不带有登录功能?
A: 因为我懒。如果你能做出带有登录功能的脚本请随意 pr 。我只信得过可以下载的自动生成的课表。
(主要还是依赖项少一些)
Q:为什么导出的日历文件中有原课表中没有的整周课程?
A:有一些课程(尤其是实验课,如果你见到有非实验课的这类课程,欢迎告诉我们)在 已选课程
中会显示有整周的时间段,但课表中那个时间段不会显示出来。技术性地说,是该整周时间段在 json 中的 notArrangeTimeAndRoom
,wholeWeekOccupy
两个属性同时为假。我们尚不知道这些时间段的意义(如果你知道,欢迎告诉我们),如果使用 xlsx 来导入,请自行提前将 xlsx 中这些时间段对应的行删去;如果使用 json 来导入,我们默认会按照和原课表相同的处理方式处理(可以给 loadIO_from_json
或 load_from_json
传 force_whole_week=True
参数将这部分时间段也包含进日历里)。
姊妹项目
cm-http-api (开发中)
LICENSES
AGPLv3
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cqu_timetable_new-0.3.2.14.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8dd9c7980cddaf8bb4dfa66de3b02a1974b2d7a239c7fe35e2aeb75a3ab23f94 |
|
MD5 | c95965bfdb1a6bd1525308cd53fd80b6 |
|
BLAKE2b-256 | ce15bc9d9a559112f50f515d691812555daa1601af642914bab36ec3b109eb8d |
Hashes for cqu_timetable_new-0.3.2.14.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0df3cd520919b813379d17f0ce3c8018ca6907401b2e1b37b16060887d467a90 |
|
MD5 | 0a9fbd7b39e3de8d62b3b54349de2b17 |
|
BLAKE2b-256 | 5f14f5477e68d3731aedba33b69bb79e47787dee64b58a3aaa8a0ae27adf8410 |