This tool can help you make an ICS (iCalendar RFC 5545) file of your class scheduler which can be easily imported to Outlook or Apple Calendar.
Make sure you have install .NET SDK 6.0.x
, if not, go to Microsoft .NET Website and download it, then install it.
- On windows, run
./publish.ps1
. - On Linux or macOS, run
./publish.sh
The publish script can take some arguments.
.\publish.ps1 --<option>=<value>
./publish.sh --<option>=<value>
Avaliable options:
--rid
: Runtime Identifier, see Rid Catalog for more information. Default:portable
--configuration
: Compile profile, you can choose betweenRelease
andDebug
. Default:Release
--framework
: Compile with specific .NET version. Default:net-6.0
--component
: Choose which component to publish. Default:["Cli", "Core"]
You need to run this application in command line.
- On Windows:
dotnet ClassCalendarMaker.Cli.dll -- <args>
or.\ClassCalendarMaker.Cli.exe <args>
- On Linux or macOS:
dotnet ClassCalendarMaker.Cli.dll -- <args>
or./ClassCalendarMaker.Cli <args>
-?
or-h
or--help
: Show helps-c <classes>
or--classes <classes>
: Classes json definition file path-o <output>
or--output <output>
: Output ICS file path, should end with .ics-fm <first-monday>
or--first-monday <first-monday>
: The first monday of this semester, should be in yyyy-MM-dd format
Take this as an example:
[
{
"class_name": "Class Name HERE",
"class_id": "Class ID HERE",
"teacher_name": "Teacher or Professor Name HERE",
"class_times": [
{
"classroom": "Classroom string, will fill the Location field in calendar",
"day_of_week": 1,
"start_week": 10,
"end_week": 17,
"week_interval": 1,
"start_time": "10:00:00",
"end_time": "11:35:00"
},
{
"classroom": "Classroom string, will fill the Location field in calendar",
"day_of_week": 2,
"start_week": 1,
"end_week": 14,
"week_interval": 1,
"start_time": "18:00:00",
"end_time": "20:25:00"
}
]
},
{
"class_name": "Another Class",
"class_id": "Another Class ID",
"teacher_name": "Another Teacher or Professor Name",
"class_times": [
{
"classroom": "Another Classroom",
"day_of_week": 1,
"start_week": 1,
"end_week": 9,
"week_interval": 1,
"start_time": "13:30:00",
"end_time": "17:05:00"
}
]
}
]
Explain:
day_of_week
: When is the class in a week, 1 for Monday, 7 for Sunday, etc.start_week
: Which week is the time that this class start in this semester.end_week
: Which week is the time that this class end in this semester.week_interval
: If you have this class in every week, set to 1, and so on.
For example, in the above json string, Another Class
will start from the 1st week of this semester to the 9th week on every Monday afternoon from 13:30:00 to 17:05:00.
This project is licensed under GNU GENERAL PUBLIC LICENSE Version 3 or later