如何用Python确定Google日历中的当前事件?
我正在制作一个温控器,它会从谷歌日历中获取目标温度。为了做到这一点,我需要确定在谷歌日历中现在正在发生的事件。目前,我是从谷歌获取一个.ics文件,然后用Python的icalendar库来解析这个文件。
接着,我会查看日历中的每一个事件,并检查:
- 这个事件是今天的吗?
- 这个事件开始了吗?
- 这个事件还没有结束吗?
在检查完所有事件后(假设没有重叠的事件),我会找到一个事件,所有三个问题的答案都是“是”。这就是当前的事件。
有没有更好的方法来做到这一点?特别是,有没有办法避免查看日历中的每一个事件?
1 个回答
8
你应该使用Google日历API。你可以请求它在某个时间段内的事件,它会用一种叫做JSON的格式返回一些很不错的信息。还有一个Python客户端,可以帮你把请求和JSON之间的转换搞定。
虽然没有直接查询当前事件的方法,但你可以设置一个最小和最大时间,这样你就只需要查找少量的事件。如果你的事件是规律性的,并且持续时间是可以预测的,你可能能让它只返回一个事件。
events = client.events().list(calendarId='primary',
timeMin='2011-12-22T09:00:00Z',
timeMax='2011-12-22T22:00:00Z').execute()