This tool parses a university schedule exported as an index.html file and converts it into an iCalendar .ics file compatible with calendar applications (e.g., Google Calendar, Outlook).
The university has updated their schedule format, which has broken the current parser.
To fix this issue, we need a sample HTML file exported from a student account (not faculty/admin). If you're a student and can help, please:
- Export your schedule as HTML from the student portal
- Share the
index.htmlfile (remove any personal information first) - Open an issue on GitHub or contact us
This will help us update the parser to work with the new format.
- Parses course schedule from HTML exported from Ritaj.
- Converts schedule data to
.icsiCalendar format with recurring weekly events. - Saves output as
schedule.ics(default) or a custom filename via CLI. - Optionally exports schedule as CSV.
- Prints the parsed schedule table for preview.
- Loads semester start and end dates from environment variables.
- Python 3.8 or higher
- Basic command line / terminal knowledge
Place your exported index.html schedule file in the project root directory.
python3 -m venv .venv
source .venv/bin/activatepython -m venv .venv
.\.venv\Scripts\Activate.ps1If you get a script execution policy error:
Run PowerShell as administrator and execute:
Set-ExecutionPolicy RemoteSignedThen reactivate the virtual environment.
pip install -r requirements.txtThe script loads semester dates from environment variables via python-dotenv.
Create a .env file in your project root with these variables (date format flexible but recommended DD-MM-YYYY):
START_DATE=01-07-2025
END_DATE=01-09-2025Run the script with:
python main.py -o my_schedule.ics --csvOptions:
-oor--output: specify output.icsfilename (default:schedule.ics)--csv: export a CSV file (schedule.csv) alongside.ics
course-schedule/
├── course_schedule/
│ ├── __init__.py # package init + config + maybe main.py
│ ├── config.py # env vars loading
│ └── main.py # Schedule class and core logic
├── main.py # CLI entry point script at repo root
├── requirements.txt
├── .env
├── index.html
Feel free to open issues or pull requests on GitHub! Contributions and feedback are welcome.