A lightweight, user-friendly desktop application built with Python and CustomTkinter to split large iCalendar (.ics) files into smaller, more manageable chunks. This is particularly useful for calendar services that have import limits on file size or the number of events.
- Portable Version: Includes a standalone Windows EXE—run it directly without installing Python or dependencies.
- Modern GUI: Clean and intuitive interface using
CustomTkinter. - Customizable Splitting: Define the maximum number of events (
VEVENTblocks) per output file. - Header & Footer Preservation: Automatically retains the original calendar headers and footers in every split file to ensure compatibility.
- Non-Blocking UI: Processing runs in a separate thread, keeping the interface responsive during large file operations.
- Validation: Includes error handling for invalid file paths, non-numeric event counts, and empty calendar files.
- Real-time Status: Provides visual feedback and pop-up notifications upon success or failure.
- Windows Users: No requirements (use the provided EXE in the
distfolder). - Other Platforms / Developers: Python 3.7+ and dependencies.
- Download the latest version.
- Navigate to the
distfolder. - Run
gui_ics_splitter.exe. No installation required!
-
Clone the repository:
git clone https://github.com/your-username/ics-splitter.git cd ics-splitter -
Install dependencies: It is recommended to use a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
-
Run the application:
python gui_ics_splitter.py
-
Follow the on-screen steps:
- Step 1: Click Browse... to select your large
.icsfile. - Step 2: Click Browse... to choose the destination folder for the split files.
- Step 3: Enter the Maximum Events per File (default is 1500).
- Step 4: Click Split File.
- Step 1: Click Browse... to select your large
-
Check Output: The split files will be named
[OriginalName]_part_1.ics,[OriginalName]_part_2.ics, etc., in your selected directory.
The application parses the input file to identify BEGIN:VEVENT and END:VEVENT blocks. It extracts the global calendar metadata (everything before the first event) and the footer (usually END:VCALENDAR) to wrap each new chunk of events, ensuring every output file is a valid iCalendar file.
MIT License (or your preferred license)