CALDAV_MERGE/main12.py

32 lines
1.3 KiB
Python
Raw Normal View History

2023-02-26 20:03:11 +00:00
import icalendar
from icalendar import Calendar, Event
from urllib.request import urlopen
def merge_calendars(feed_urls, link_suffix, link_name=None, anonymize=False, prefix='', suffix=''):
# Create an empty calendar
merged_calendar = Calendar()
merged_calendar.add('version', '2.0')
merged_calendar.add('prodid', '-//My calendar merger//')
merged_calendar.add('CALSCALE','GREGORIAN')
for feed_url in feed_urls:
# Retrieve the calendar from the feed URL
feed = urlopen(feed_url)
calendar = Calendar.from_ical(feed.read())
for component in calendar.subcomponents:
if component.name == "VEVENT":
event = Event.from_ical(str(component))
if anonymize:
event.add('SUMMARY', 'Anonymized Event')
event.add('LOCATION', '')
event.add('DESCRIPTION', '')
else:
event.add('SUMMARY', prefix + event['SUMMARY'] + suffix)
# Append the event to the merged calendar
merged_calendar.add_component(event)
# Generate the merged link
if link_name:
merged_link = f"https://example.com/{link_name}/{link_suffix}"
else:
merged_link = f"https://example.com/{link_suffix}"
return merged_link, merged_calendar.to_ical()