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
File details
Details for the file cqu_timetable_new-0.3.2.14.1.tar.gz
.
File metadata
- Download URL: cqu_timetable_new-0.3.2.14.1.tar.gz
- Upload date:
- Size: 22.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.9.4 Linux/5.4.0-1046-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8dd9c7980cddaf8bb4dfa66de3b02a1974b2d7a239c7fe35e2aeb75a3ab23f94 |
|
MD5 | c95965bfdb1a6bd1525308cd53fd80b6 |
|
BLAKE2b-256 | ce15bc9d9a559112f50f515d691812555daa1601af642914bab36ec3b109eb8d |
File details
Details for the file cqu_timetable_new-0.3.2.14.1-py3-none-any.whl
.
File metadata
- Download URL: cqu_timetable_new-0.3.2.14.1-py3-none-any.whl
- Upload date:
- Size: 27.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.9.4 Linux/5.4.0-1046-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0df3cd520919b813379d17f0ce3c8018ca6907401b2e1b37b16060887d467a90 |
|
MD5 | 0a9fbd7b39e3de8d62b3b54349de2b17 |
|
BLAKE2b-256 | 5f14f5477e68d3731aedba33b69bb79e47787dee64b58a3aaa8a0ae27adf8410 |