My shell portfolio begins
This commit is contained in:
47
next_apointment.py
Normal file
47
next_apointment.py
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python
|
||||
from datetime import datetime, timedelta
|
||||
from dateutil import parser
|
||||
import re
|
||||
from sys import exit
|
||||
import caldav
|
||||
|
||||
# time offset
|
||||
time_offset = 2
|
||||
# user
|
||||
cal_user = 'danielh'
|
||||
# password
|
||||
cal_passwd = 'foobar'
|
||||
# define you caldav URL here
|
||||
caldav_url = \
|
||||
"http://{0}:{1}@office.hauck.it/remote.php/caldav/calendars/danielh/personal"\
|
||||
.format(cal_user, cal_passwd)
|
||||
|
||||
# connect to you caldav instance
|
||||
def connect(url):
|
||||
client = caldav.DAVClient(url)
|
||||
principal = client.principal()
|
||||
return principal.calendars()[0]
|
||||
|
||||
# get you next appointment for today
|
||||
|
||||
def parse_eventdata(event):
|
||||
parsed_event = {}
|
||||
for item in event.data.split("\n"):
|
||||
if re.match("^DTSTART\;", item):
|
||||
dto = parser.parse(item.split(";")[1].split(":")[1])\
|
||||
+ timedelta(hours=time_offset)
|
||||
if re.match("^SUMMARY\:", item):
|
||||
title = item.split(":")[1]
|
||||
return {
|
||||
"title": title,
|
||||
"start": dto.strftime("%H:%M"),
|
||||
}
|
||||
try:
|
||||
calendar = connect(caldav_url)
|
||||
latest_event = calendar.date_search(datetime.utcnow(), datetime.now().date() + timedelta(days=1))[-1]
|
||||
except IndexError:
|
||||
print "Nothing to do"
|
||||
exit(0)
|
||||
|
||||
print '{start} {title}'.format(**parse_eventdata(latest_event))
|
||||
|
Reference in New Issue
Block a user