如何通过Python访问苹果iCal服务器

3 投票
1 回答
4757 浏览
提问于 2025-04-16 04:23

我想通过Python访问苹果的iCal服务器,这个服务器是在Mac OS X Snow Leopard Server上运行的。服务器已经正常工作,通过iCal应用程序使用它也没问题。现在我需要通过Python访问这个服务器,把它当作资源规划的后台。我已经查看了CalDav模块(http://packages.python.org/caldav/index.html),但是那里的示例没有找到任何日历,尽管Principal-URL是正确的。

那么,我该如何用Python读取用户日历中某个时间范围内的事件呢?

1 个回答

1

[这不是解决方案,而是调试的方法]

来自caldav模块文档中的示例:

from datetime import datetime
import caldav
from caldav.elements import dav, cdav

# Principal url
url = "https://user:pass@hostname/user/Calendar"

client = caldav.DAVClient(url)
principal = caldav.Principal(client, url)
calendars = principal.calendars()

问题

  1. 这个网址示例并不是ical服务器的主要网址
  2. 如果你查看代码中的 calendars = principal.calendars(),你会发现它忽略了响应。
  3. 如果你的主要网址不正确,那么在没有任何错误提示的情况下,它会返回一个空的日历集合。

调试帮助

在文件objects.py中,有一个叫做children的方法属于DAVObject。你可以修改代码,加入一些调试信息。如果你能把以下内容粘贴上来,并在问题中也粘贴你的信息,那就更好了。

    response = self.client.propfind(self.url.path, body, depth)
    print response, self.url.path #provide additional info
    print response.raw  #provide additional info
    for r in response.tree.findall(dav.Response.tag):

撰写回答