CalDAV2ICS
A script that downloads all calendars from a CalDAV server and caches them locally as static
.ics files.
Passwords are never written to disk: the local cache stores only synced calendar data, and credentials are stripped before saving.
Prerequisites
- Python 3.10 to 3.14.
Installation
pip install caldav2ics
Usage
Create a config .toml file with one section per CalDAV server:
[server_a]
url = "https://caldav.server_a.com/calendar/remote.php/dav/calendars/user/"
user = "user"
save-dir = "/absolute/path/to/calendars/server_a"
[server_b]
...
save-dir must be an absolute path. Run the sync:
caldav2ics config.toml
This prompts for the password. To provide it non-interactively, set C2I_PASSWORD instead:
C2I_PASSWORD=$(cat .password) caldav2ics config.toml
Each server writes a cache.pkl (its synced state, used for incremental updates) and one .ics
file per calendar into its save-dir:
calendars/server_a/
calendar1.ics
calendar2.ics
cache.pkl
To integrate with Google Calendar, either upload the .ics files or host save-dir publicly
(add basic auth or similar for access control; for stronger security, use a different method).
License
This project is licensed under the MIT license. See LICENSE for details.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file caldav2ics-0.1.2.tar.gz.
File metadata
- Download URL: caldav2ics-0.1.2.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
116a5f69e9535d9e4f9b48fbae424a55929002a15848589fbf96ba097879ba30
|
|
| MD5 |
f529caf7a15be7d40a1df42016a3e2ee
|
|
| BLAKE2b-256 |
62e8c75bda7f91b4eefe6df0314a29b33ced2ca23f8db612115a06ed23b70962
|
Provenance
The following attestation bundles were made for caldav2ics-0.1.2.tar.gz:
Publisher:
release.yml on audivir/caldav2ics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
caldav2ics-0.1.2.tar.gz -
Subject digest:
116a5f69e9535d9e4f9b48fbae424a55929002a15848589fbf96ba097879ba30 - Sigstore transparency entry: 2614631286
- Sigstore integration time:
-
Permalink:
audivir/caldav2ics@3a730331135cef05adce5bf4f940fea3c8ad6593 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/audivir
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3a730331135cef05adce5bf4f940fea3c8ad6593 -
Trigger Event:
release
-
Statement type:
File details
Details for the file caldav2ics-0.1.2-py3-none-any.whl.
File metadata
- Download URL: caldav2ics-0.1.2-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcf5f8a4eb190f430119a7093c6f1f88046216bb8b527950431bcd6fce568177
|
|
| MD5 |
04e478b58f349da5d4ce21c72411556d
|
|
| BLAKE2b-256 |
21ce422211aea7b4ebbb6b607e8e66414ef33601021fa74c5014cd4f15201891
|
Provenance
The following attestation bundles were made for caldav2ics-0.1.2-py3-none-any.whl:
Publisher:
release.yml on audivir/caldav2ics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
caldav2ics-0.1.2-py3-none-any.whl -
Subject digest:
fcf5f8a4eb190f430119a7093c6f1f88046216bb8b527950431bcd6fce568177 - Sigstore transparency entry: 2614631319
- Sigstore integration time:
-
Permalink:
audivir/caldav2ics@3a730331135cef05adce5bf4f940fea3c8ad6593 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/audivir
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3a730331135cef05adce5bf4f940fea3c8ad6593 -
Trigger Event:
release
-
Statement type: