Python Caldav,所有日历都没有nam

2024-06-16 13:09:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python和caldav库访问我的日历中的所有事件,这些事件托管在Nextcloud上。 使用此代码:

client = caldav.DAVClient(url) #like "https://..../nextcloud/remote.php/dav/calendars
principal = client.principal()
calendars = principal.calendars()

我可以访问我所有的日历并在上面进行迭代。在

我怎么能只读一个名为“日历名”的特定日历?在本例中,我获取所有日历,即使我指定了日历名称:

^{pr2}$

如果我用calendar_name更改最后一行代码,就会得到一个空数组。在

calendar = principal.calendar('calendar_name')

注意:我可以使用发布的第一个代码访问所有日历和事件,但所有名称都是“无”,即使Url是正确的。在


Tags: 代码namehttps名称clientprincipalurl事件
1条回答
网友
1楼 · 发布于 2024-06-16 13:09:54

第二个代码段仍然提供所有日历,因为您首先获取帐户(.principal()),然后列出该帐户拥有的所有日历(principal.calendars())。在

第三个代码段可能不起作用,因为日历的名称(display name属性,而不是URL路径组件)很可能不是calendar_name,而是类似于Calendar的内容。理论上它甚至可能是空的。在

要使用日历的URL访问一个日历,这可能有用,请不要尝试:

client   = caldav.DAVClient(url)
calendar = caldav.Calendar(client=client, 
             url="/nextcloud/remote.php/dav/calendars/user/calendar_name")

尽管出于各种原因,这样做可能更好:

^{pr2}$

要解决实际问题,您需要添加更多信息。如果您想要日历的(相对或绝对)URL

print calendar.url

如果要显式检索日历的显示名称,则可以执行以下操作:

print calendar.get_properties([dav.DisplayName()])

希望这有帮助。在

相关问题 更多 >