This Java application synchronizes timetable data from WebUntis to ICS calendar files. It allows you to fetch your timetable for a single week or a semester and create calendar files that can be imported into any calendar application that supports the ICS format.
- Java 11 or higher
- Maven
- WebUntis account credentials
- Clone this repository or download the source code
- Create a configuration file named
untis_config.jsonin the root directory with your WebUntis credentials:
{
"baseUrl": "https://YOUR_SCHOOL.webuntis.com",
"school": "YOUR_SCHOOL_NAME", (othr)
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
"elementId": "YOUR_ELEMENT_ID"
}Note about elementId: The elementId is the ID from the URL that is used to open the respective timetable in the WebUntis web client. You can find this ID in the URL when viewing your timetable in the browser, for example:
https://kephiso.webuntis.com/timetable-classes/40681/2025-09-29 - here 40681 would be your elementId.
- Build the project using Maven:
mvn clean packageThis will create a JAR file with all dependencies in the target directory.
If you make changes to the source code, you need to recompile the project:
mvn clean packageThis will:
- Clean the
targetdirectory - Compile all Java source files
- Create a new JAR file with all dependencies
Run the application using:
java -jar target/timetable-parser-1.0-SNAPSHOT-jar-with-dependencies.jar --syncThe application will:
-
Ask you to choose between:
- Importing a single week
- Importing a semester (date range)
-
Show available weeks for selection
-
Allow you to manually select which lessons to include in your calendar
-
Generate an ICS file in the
calendardirectory:- Single week:
week_XX_YYYY.ics(e.g.,week_20_2025.ics) - Semester:
semester_XX-YY_ZZZZ.ics(e.g.,semester_12-28_2025.ics)
- Single week:
When selecting lessons, you have three options for each lesson:
j- Yes, include this lessonn- No, skip this lessona- Include all remaining lessons
Your selections are saved in lesson_selection.json and can be reused in future syncs.
Generated calendar files can be found in the calendar directory. These files can be imported into:
- Google Calendar
- Apple Calendar
- Microsoft Outlook
- Any other calendar application that supports the ICS format
- If the configuration file is missing or invalid, the application will create a template file for you to fill in
- Connection issues are handled with automatic retries
- If authentication fails, the application will notify you and exit
For any issues or questions, please create a GitHub issue in this repository.