我正在构建一个恒温器,它可以从 Google 日历中获取目标温度。这样做时,我需要确定所述 Google 日历中现在正在发生的事件。目前,我正在从谷歌获取 .ics 文件,然后用 Python icalendar library 解析它。 .
然后我遍历日历中的每个事件并测试:
- 是今天的事件吗?
- 事件开始了吗?
- 事件还没结束吗?
检查每个事件后(假设没有重叠事件),我得到一个事件,其中三个问题的答案都是肯定的。这是当前事件。
有更好的方法吗?特别是,是否有任何方法可以避免遍历日历中的每个事件?
请您参考如下方法:
你应该使用 Google Calendar API .您可以向它询问特定时间段内的事件,它会以一些不错的 JSON 响应,为您提供信息。甚至还有一个 Python 客户端负责将您的请求与 JSON 进行相互转换。
没有直接查询当前事件的方法,但您当然可以给它一个有限的最短和最长时间,这样您就只能搜索少量事件。如果您的事件是有规律的并且持续时间可预测,您也许可以让它只给您一个。
events = client.events().list(calendarId='primary',
timeMin='2011-12-22T09:00:00Z',
timeMax='2011-12-22T22:00:00Z').execute()
