我在我的网络空间运行ownCloud一个共享的日历。 现在我正在寻找一个合适的Python库获得只读日历的访问。 我希望把Intranet网站日历的一些信息。
我曾尝试http://trac.calendarserver.org/wiki/CalDAVClientLibrary但它总是返回NotImplementedError
与查询命令,所以我的猜测是,查询命令不与给定的库来工作。
什么库我可以使用呢?
我在我的网络空间运行ownCloud一个共享的日历。 现在我正在寻找一个合适的Python库获得只读日历的访问。 我希望把Intranet网站日历的一些信息。
我曾尝试http://trac.calendarserver.org/wiki/CalDAVClientLibrary但它总是返回NotImplementedError
与查询命令,所以我的猜测是,查询命令不与给定的库来工作。
什么库我可以使用呢?
我建议图书馆, CalDAV的 。
只读是与此库的工作真的很好,看上去直着我。 它会做的越来越日历和读书活动,在返回他们的整个工作iCalendar格式 。 有关更多信息caldav
也可以在获得库文件 。
import caldav
client = caldav.DAVClient(<caldav-url>, username=<username>,
password=<password>)
principal = client.principal()
for calendar in principal.calendars():
for event in calendar.events():
ical_text = event.data
从这个你可以使用的iCalendar库来读取特定的领域,如类型(例如事件,待办事项,闹钟),姓名,时间等-一个很好的出发点可能是这个问题 。
pyOwnCloud可能是您正确的事情。 我还没有尝试过,但它应该用于读取日历提供CMDLINE / API。
你可能想提供有关您如何实际利用的API,但在情况下,查询命令确实没有实现更多的细节,还有在其他Python库的列表CalConnect网站 (archvied版本, 原来的链接现在是死的) 。
我几个月前写了这个代码来获取CalDAV的数据,目前他们在我的网站。 我已经改变了数据转换成JSON格式,但你可以做任何你想要的数据。
我添加了一些打印给你看,你可以在生产中删除它们的输出。
from datetime import datetime
import json
from pytz import UTC # timezone
import caldav
from icalendar import Calendar, Event
# CalDAV info
url = "YOUR CALDAV URL"
userN = "YOUR CALDAV USERNAME"
passW = "YOUR CALDAV PASSWORD"
client = caldav.DAVClient(url=url, username=userN, password=passW)
principal = client.principal()
calendars = principal.calendars()
if len(calendars) > 0:
calendar = calendars[0]
print ("Using calendar", calendar)
results = calendar.events()
eventSummary = []
eventDescription = []
eventDateStart = []
eventdateEnd = []
eventTimeStart = []
eventTimeEnd = []
for eventraw in results:
event = Calendar.from_ical(eventraw._data)
for component in event.walk():
if component.name == "VEVENT":
print (component.get('summary'))
eventSummary.append(component.get('summary'))
print (component.get('description'))
eventDescription.append(component.get('description'))
startDate = component.get('dtstart')
print (startDate.dt.strftime('%m/%d/%Y %H:%M'))
eventDateStart.append(startDate.dt.strftime('%m/%d/%Y'))
eventTimeStart.append(startDate.dt.strftime('%H:%M'))
endDate = component.get('dtend')
print (endDate.dt.strftime('%m/%d/%Y %H:%M'))
eventdateEnd.append(endDate.dt.strftime('%m/%d/%Y'))
eventTimeEnd.append(endDate.dt.strftime('%H:%M'))
dateStamp = component.get('dtstamp')
print (dateStamp.dt.strftime('%m/%d/%Y %H:%M'))
print ('')
# Modify or change these values based on your CalDAV
# Converting to JSON
data = [{ 'Events Summary':eventSummary[0], 'Event Description':eventDescription[0],'Event Start date':eventDateStart[0], 'Event End date':eventdateEnd[0], 'At:':eventTimeStart[0], 'Until':eventTimeEnd[0]}]
data_string = json.dumps(data)
print ('JSON:', data_string)