This program help students import their courses' timetable into the calendar app. It contains 3 parts:
- Client: it contains UI interfaces that make it easy to use.
- Build Module: use the command to build
ics
(iCal) file for importing to calendar app orjson
file to import configuration to Calenass Client program. - Web server: For across platforms. I place the "build module" on the web server.
This client is platforms-across. It support Windows, Linux, MacOS.
We have already packed for Windows and MacOS. Please check Release page
Here are some dependencies.
- Python >= 3.6
- Node >= 10.5.0
- Electron (My version is 1.4.13)
- Other python packages (All in
constructor\requirements.txt
)
If you have python environment, or have some preset. You can use command mode.
If you want to use preset to build your file(iCal
file or JSON
file for importing configuration into the client). Use file constructor\calenass_preset.py
.
Usage: python preset_constructor.py <preset module> <workbook name> <config filename> <output mode> <output filename>
Params:
- preset module: the preset python file name;
- workbook name: your courses timetable;
- config filename: time config filename;
- output mode: 'ics' or 'json', depends on what kind of file do you want to get;
- output filename: the file that you want to build;
The pure command constructor\ical_constructor.py
is made for the web requiries. But you still can call it yourself. It only receives one param that a base64-encoded JSON string contains all configuration. You can export all configuration through the client. And if you have a preset, you can also export JSON
file through preset(more details please read Preset). About the configuration file, please read Configuration structure
Usage: python ical_constructor.py <All configs>
Whole configuration structure:
{
"conf":config_object,
"courses":courses_object
}
config_object: config structure
{
"calendarConfig":{
"name":"MyClassTimeTable",
"timezone":"Asia/Shanghai",
"alarm":"30"
},
"classTimes": [
{
"index":"firstclass",
"start_time":"08:00",
"end_time":"09:50"
}
],
"weekConfig": {
"first_week":"2018-09-03",
"total_week":19
}
}
courses_object: courses structure
[{
"name": "courses name",
"time": "firstclass",
"wkday": "Monday",
"week": [
2,
3,
4,
5,
8,
9,
10,
12,
13,
14,
15,
16
],
"pos": "CLASSROOM123",
"more": "Alan"
},
... // more couses
]