Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A Python package for generating calendar links and ICS files for various calendar services including Google Calendar, Apple Calendar, Yahoo Calendar, AOL Calendar, and Microsoft 365.

License

NotificationsYou must be signed in to change notification settings

Nneji123/calendar-link

Repository files navigation

TestsDeploy DocsCodecovPypi

A Python package for generating calendar links and ICS files for various calendar services including Google Calendar, Apple Calendar, Yahoo Calendar, AOL Calendar, and Microsoft 365.

Features

  • Generate calendar links for multiple services:
    • Google Calendar
    • Apple Calendar
    • Yahoo Calendar
    • AOL Calendar
    • Microsoft Outlook
    • Microsoft 365
  • Generate ICS (iCalendar) files
  • Support for timezone handling
  • Event validation and sanitization
  • Comprehensive error handling

Installation

pip install calendar-link

Quick Start

fromdatetimeimportdatetimefromcalendar_linkimportCalendarEvent,CalendarGenerator# Create an eventevent=CalendarEvent(title="Team Meeting",start_time=datetime(2024,1,15,10,0),# 10:00 AMend_time=datetime(2024,1,15,11,0),# 11:00 AMdescription="Weekly team sync meeting",location="Conference Room A",attendees=["john@example.com","jane@example.com"])# Generate calendar linksgenerator=CalendarGenerator()# Generate Google Calendar linkgoogle_link=generator.generate_link(event,"google")print(f"Google Calendar:{google_link}")# Generate ICS file contentics_content=generator.generate_ics(event)print(f"ICS Content:\n{ics_content}")# Generate all links at onceall_links=generator.generate_all_links(event)forservice,linkinall_links.items():print(f"{service}:{link}")

Usage Examples

Creating Events from Dictionary

fromcalendar_linkimportCalendarEventevent_data= {"title":"Birthday Party","start_time":"2024-02-15T18:00:00","end_time":"2024-02-15T22:00:00","description":"Come celebrate!","location":"My House","all_day":False}event=CalendarEvent.from_dict(event_data)

Working with Timezones

importpytzfromdatetimeimportdatetimefromcalendar_linkimportCalendarEvent# Create event with specific timezoneny_tz=pytz.timezone("America/New_York")start_time=ny_tz.localize(datetime(2024,1,15,10,0))event=CalendarEvent(title="Meeting",start_time=start_time,end_time=start_time.replace(hour=11),timezone="America/New_York")

All-Day Events

fromdatetimeimportdatetimefromcalendar_linkimportCalendarEventevent=CalendarEvent(title="Vacation Day",start_time=datetime(2024,1,15,0,0),end_time=datetime(2024,1,15,0,0),all_day=True)

Saving ICS File

fromcalendar_linkimportCalendarEvent,CalendarGeneratorevent=CalendarEvent(title="Important Meeting",start_time=datetime(2024,1,15,14,30),end_time=datetime(2024,1,15,15,30),description="Don't forget to prepare the presentation")generator=CalendarGenerator()ics_content=generator.generate_ics(event)# Save to filewithopen("meeting.ics","w")asf:f.write(ics_content)

API Reference

CalendarEvent

The main class for representing calendar events.

Constructor

CalendarEvent(title:str,start_time:datetime,end_time:Optional[datetime]=None,description:Optional[str]=None,location:Optional[str]=None,attendees:Optional[List[str]]=None,all_day:bool=False,timezone:Optional[str]=None)

Methods

  • from_dict(data: dict) -> CalendarEvent: Create event from dictionary
  • to_dict() -> dict: Convert event to dictionary
  • get_duration_minutes() -> int: Get event duration in minutes
  • is_same_day() -> bool: Check if start and end are on same day

CalendarGenerator

The main class for generating calendar links and ICS files.

Methods

  • generate_link(event: CalendarEvent, service: str) -> str: Generate link for specific service
  • generate_ics(event: CalendarEvent) -> str: Generate ICS file content
  • generate_all_links(event: CalendarEvent) -> Dict[str, str]: Generate all links
  • get_supported_services() -> Dict[str, str]: Get list of supported services

Supported Services

  • google: Google Calendar
  • apple: Apple Calendar
  • yahoo: Yahoo Calendar
  • aol: AOL Calendar
  • outlook: Microsoft Outlook
  • office365: Microsoft 365
  • ics: ICS File

Error Handling

The package includes custom exceptions for better error handling:

fromcalendar_linkimportCalendarLinkError,InvalidEventDataError,UnsupportedCalendarServiceErrortry:event=CalendarEvent(title="",start_time=datetime.now())# Invalid titleexceptInvalidEventDataErrorase:print(f"Invalid event data:{e}")try:generator.generate_link(event,"unsupported_service")exceptUnsupportedCalendarServiceErrorase:print(f"Unsupported service:{e}")

Utility Functions

The package also includes utility functions for common operations:

fromcalendar_link.utilsimportparse_datetime,validate_email,sanitize_text# Parse datetime with timezonedt=parse_datetime("2024-01-15 10:00:00","America/New_York")# Validate emailis_valid=validate_email("user@example.com")# Sanitize text for calendar servicesclean_text=sanitize_text("Event\nDescription\nwith\nnewlines")

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

About

A Python package for generating calendar links and ICS files for various calendar services including Google Calendar, Apple Calendar, Yahoo Calendar, AOL Calendar, and Microsoft 365.

Topics

Resources

License

Stars

Watchers

Forks

Languages


[8]ページ先頭

©2009-2026 Movatter.jp