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
Metadata
Release files for cqu-timetable-new 0.3.3.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cqu_timetable_new-0.3.3.2.1.tar.gz | 24.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cqu_timetable_new-0.3.3.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.5 kB
Release files / cqu_timetable_new-0.3.3.2.1.tar.gz
| Download URL | cqu_timetable_new-0.3.3.2.1.tar.gz |
|---|---|
| Size | 24.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7d4e704eba13820c32fc98c3a1ffac86c41d60ef650af258534dd6d7f35a4e0a
|
|
BLAKE2b-256 checksum How to use checksums |
1faefd5c6a4470f65cd16307ceabd3455824bbc68d9b61ed0bd5796b57b5624a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.13 CPython/3.9.10 Linux/5.4.0-1068-azure
|
Release files / cqu_timetable_new-0.3.3.2.1-py3-none-any.whl
| Download URL | cqu_timetable_new-0.3.3.2.1-py3-none-any.whl |
|---|---|
| Size | 29.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f3a03e69833c822ba653c2c19a7d263b524ee3357df6bd34a012e74ca7c82702
|
|
BLAKE2b-256 checksum How to use checksums |
e1d2f3f957e90352ad2d26f99edb5910627ff22d37d5ea587def575e290a43fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.13 CPython/3.9.10 Linux/5.4.0-1068-azure
|