45 lines
1.5 KiB
Markdown
45 lines
1.5 KiB
Markdown
# Generate ICS from CSV
|
|
This script generates an ICS file containing events converted from a CSV file.
|
|
|
|
You'll need to install two python modules:
|
|
|
|
|
|
```
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
|
|
calling the script will prompt for the CSV file.
|
|
The output will be two files. One is the CSV file with the `.ics` extension, the other is a `event_uids.json` containing the unique identifier of each event line.
|
|
This will make updating the events via the CSV file easier.
|
|
|
|
# Key Features:
|
|
- UID Persistence:
|
|
Event UIDs are stored in a JSON file (event_uids.json).
|
|
If the event key (based on description, date, start time, and location) exists, the same UID is reused.
|
|
- LAST-MODIFIED Field:
|
|
The last_modified timestamp is added to each event, ensuring updates are detected by calendar applications.
|
|
- Resilience to Changes:
|
|
If an event's details are modified in the CSV, the application recognizes it as an update due to the persistent UID.
|
|
# Benefits:
|
|
Consistent Updates: Calendar applications update events with matching UIDs rather than creating duplicates.
|
|
Persistence: Even if the script is rerun, previously assigned UIDs remain consistent.
|
|
|
|
|
|
## example CSV file format
|
|
|
|
```
|
|
Host;Description;Date;start time;end time;Location
|
|
Max Müller;Team Meeting;20.11.2024;10:00;11:00;Berlin
|
|
Anna Löwe;Project Kickoff;21.11.2024;09:00;10:30;München
|
|
```
|
|
|
|
### Example ICS output
|
|
```
|
|
BEGIN:VEVENT
|
|
DTSTART;TZID=Europe/Berlin:20241120T100000
|
|
DTEND;TZID=Europe/Berlin:20241120T110000
|
|
SUMMARY:Team Meeting (Host: Max Müller)
|
|
LOCATION:Berlin
|
|
END:VEVENT
|
|
```
|