Skip to main content

A Python library to merge iCalendar feeds.

Project description

Python MergeCal

CI Status Documentation Status Test coverage percentage

uv Ruff pre-commit

PyPI Version Supported Python versions License


Documentation: https://mergecal.readthedocs.io

Source Code: https://github.com/mergecal/python-mergecal


A Python library to merge iCalendar feeds.

Installation

Install this via pip (or your favorite package manager):

pip install mergecal

Usage

Python API

You can use MergeCal in your Python code as follows:

>>> from mergecal import merge_calendars
>>> from icalendar import Calendar

# Load your calendars
# CALENDARS = pathlib.Path("to/your/calendar/directory")
>>> calendar1 = Calendar.from_ical((CALENDARS / "one_event.ics").read_bytes())
>>> calendar2 = Calendar.from_ical((CALENDARS / "another_event.ics").read_bytes())

# Merge the calendars
>>> merged_calendar : Calendar = merge_calendars([calendar1, calendar2])

# Write the merged calendar to a file
>>> (CALENDARS / "merged_calendar.ics").write_bytes(merged_calendar.to_ical())
933

# The merged calendar will contain all the events of both calendars
>>> [str(event["SUMMARY"]) for event in calendar1.walk("VEVENT")]
['Event 1']
>>> [str(event["SUMMARY"]) for event in calendar2.walk("VEVENT")]
['Event 2']
>>> [str(event["SUMMARY"]) for event in merged_calendar.walk("VEVENT")]
['Event 1', 'Event 2']

Command Line Interface (CLI)

MergeCal also provides a command-line interface for easy merging of calendar files:

# Basic usage
mergecal calendar1.ics calendar2.ics -o merged_calendar.ics

# Specifying custom PRODID
mergecal calendar1.ics calendar2.ics -o merged_calendar.ics --prodid "-//My Organization//MergeCal 1.0//EN"

For more options and information, use the help command:

mergecal --help

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

Credits

Copier

This package was created with Copier and the browniebroke/pypackage-template project template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mergecal-0.5.0.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mergecal-0.5.0-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file mergecal-0.5.0.tar.gz.

File metadata

  • Download URL: mergecal-0.5.0.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for mergecal-0.5.0.tar.gz
Algorithm Hash digest
SHA256 1c56ef350f3e83b1fd9ecde7347d2e252cabd7285f8963de8633b8c8abcbf0e9
MD5 d150df044c0ebb3d13b57e218082d518
BLAKE2b-256 a83d654746ad5346daa5e5fce62f7cf8284ec1c3426e3e0b023940ba7ff2e6c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for mergecal-0.5.0.tar.gz:

Publisher: ci.yml on mergecal/python-mergecal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mergecal-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: mergecal-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 17.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for mergecal-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d026144bb9331bedc706a047dea4566145f9c3355b4315e39ad92b5dc3381a87
MD5 eb2bfef4d0929305830d153aaa6aa4b4
BLAKE2b-256 91785c80c46350c38faec60ad53be625d6e221bb9b03fdd14f92f89317be7780

See more details on using hashes here.

Provenance

The following attestation bundles were made for mergecal-0.5.0-py3-none-any.whl:

Publisher: ci.yml on mergecal/python-mergecal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page