利用clikit与icalendar轻松构建命令行日历应用

啊杜爱编程 2025-02-24 23:13:23

Python clikit icalendarclikit CLI icalendar iCalendar

clikit

clikit APIclikit

icalendar

icalendar iCalendar .icsicalendar

clikit icalendar

clikit icalendar

1

**** .ics

from clikit.api.io import Input, Outputfrom clikit.api.command import Commandfrom icalendar import Event, Calendarfrom datetime import datetimeclass CreateEventCommand(Command):    def __init__(self, input: Input, output: Output):        self.input = input        self.output = output    def execute(self):        title = self.input.ask(':')        start_time = self.input.ask(' (YYYY-MM-DD HH:MM):')        end_time = self.input.ask(' (YYYY-MM-DD HH:MM):')                #        event = Event()        event.add('summary', title)        event.add('dtstart', datetime.fromisoformat(start_time))        event.add('dtend', datetime.fromisoformat(end_time))                #        cal = Calendar()        cal.add_component(event)        #  .ics        with open('event.ics', 'wb') as f:            f.write(cal.to_ical())                self.output.write(' event.ics ')#

clikit icalendar .ics

2

**** .ics

from clikit.api.io import Input, Outputfrom clikit.api.command import Commandfrom icalendar import Calendarclass ViewEventsCommand(Command):    def __init__(self, input: Input, output: Output):        self.input = input        self.output = output    def execute(self):        file_path = self.input.ask(' .ics :')                with open(file_path, 'rb') as f:            cal = Calendar.from_ical(f.read())                self.output.write(':')        for component in cal.walk('vevent'):            summary = component.get('summary')            start = component.get('dtstart').dt            end = component.get('dtend').dt            self.output.write(f'- {summary}: {start}  {end}')#

.ics icalendar from_ical

3

**** .ics

from clikit.api.io import Input, Outputfrom clikit.api.command import Commandfrom icalendar import Calendarclass ModifyEventCommand(Command):    def __init__(self, input: Input, output: Output):        self.input = input        self.output = output    def execute(self):        file_path = self.input.ask(' .ics :')        summary_to_modify = self.input.ask(':')        new_summary = self.input.ask(':')                with open(file_path, 'rb') as f:            cal = Calendar.from_ical(f.read())        for component in cal.walk('vevent'):            if component.get('summary') == summary_to_modify:                component['summary'] = new_summary                with open(file_path, 'wb') as f:            f.write(cal.to_ical())                self.output.write(f' "{summary_to_modify}"  "{new_summary}" ')#

.ics

**** datetime.strptime

from datetime import datetimetry:    start_time = datetime.strptime(self.input.ask(' (YYYY-MM-DD HH:MM):'), '%Y-%m-%d %H:%M')except ValueError:    self.output.write(' YYYY-MM-DD HH:MM ')

**** .ics

**** FileNotFoundError

try:    with open(file_path, 'rb') as f:        cal = Calendar.from_ical(f.read())except FileNotFoundError:    self.output.write('')

try:    from icalendar import Calendarexcept ImportError:    self.output.write(' icalendar  pip install icalendar ')

clikit icalendar Python

0 阅读:0
啊杜爱编程

啊杜爱编程

跟着啊杜学编程!