A Python script to convert your Columbia University Vergil class schedule into a standard iCalendar (.ics) file, which can be imported into Google Calendar, Outlook, Apple Calendar, and other calendar applications.
If this project helps you keep your schedule organized, please consider giving it a star! ⭐
- Fetches class data directly from the Columbia University Vergil API.
- Generates recurring events for classes with specified start/end dates and weekly schedules.
- Outputs a
.icsfile compatible with most calendar applications.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Python
-
Clone the repository:
git clone https://github.com/SY-LG/vergil2ics.git cd vergil2ics -
Create and activate a virtual environment (recommended):
python -m venv venv # On Linux/macOS: source venv/bin/activate # On Windows: .\venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Identify your
class_idandcalendar_code:-
Class ID: This is the unique identifier for each course, e.g.,
ECBM4040E001. -
Calendar Code: This code represents the semester. For example:
20253for Fall 202520261for Spring 202620262for Summer 2026
-
-
Edit
main.py: Open themain.pyfile. Update theclass_idslist with your desired class identifiers and set theCALENDAR_CODEfor the correct semester.# main.py class_ids = [ 'YOUR_CLASS_ID_1', # e.g., 'ECBM4040E001' # Add more class IDs as needed ] CALENDAR_CODE = 'YOUR_CALENDAR_CODE'
-
Run the script: From the project root directory, execute:
python main.py
A
vergil.icsfile will be generated in theoutput/directory at the project root. -
Import into your calendar: Open your preferred calendar application (Google Calendar, Outlook, Apple Calendar, etc.) and import the
vergil.icsfile.
A GUI version of this tool is currently under development to make it even easier to use!
Contributions are welcome! If you have suggestions or want to improve the code, please feel free to open an issue or submit a pull request.
This project is licensed under the MIT License.
If vergil2ics helps you manage your schedule, please show your support by starring the repository on GitHub!
