如何每 x 秒重复 ICS 文件中的事件?
Posted
技术标签:
【中文标题】如何每 x 秒重复 ICS 文件中的事件?【英文标题】:How do I repeat events in an ICS file every x seconds? 【发布时间】:2017-04-14 08:55:29 【问题描述】:我正在尝试在 macOS Sierra 的日历中设置日历事件,该事件每 2,551,440 秒重复一次(恰好是月球的会合周期)。该系统使用 ICS 规范。
最终,我想要一个提供我所在位置的月亮升起和落下时间的日历,并且还需要列出月相(例如满月、新月等)。我在互联网上找到了很多人们手动创建事件的例子,但这非常乏味(多年来每天一个事件!),而且它们基于不同的时区(所以对我没有用) .
我从 ICS 规范中看到,文件格式本身支持每 x 秒重复一次的事件。我将事件导出为 ICS 文件(来自日历),然后在文本编辑器中编辑了 ICS 文件,但我一定是代码错误,因为它没有以正确的重复间隔重新导入 macOS 日历.相反,它导入了一个没有重复的事件。也有可能我的代码是正确的,但日历在导入时将其丢弃...
有人可以解释一下如何去做吗?
我找到了the RRULE Generator,但它只支持每小时间隔,而不是秒,因此对于我的需要来说不够精确。
我考虑过运行一个 bash 脚本来生成事件(它将作为一个 cron 作业每 2,551,440 秒运行一次),但这只会提前一个月通知。我宁愿无限期地设置它。
另一种选择可能是用 Python 编写脚本来创建单独的 ICS 事件文件;这也会很乏味...
我知道这不能直接在日历中完成;解决方案很可能是手动编辑每个 ICS 文件以正确设置重复,然后将它们导入日历...我只是不知道如何...
...或者是否有一个日历应用程序可以让您设置每 x 秒重复一次的事件?如果是这样,我可以在其中创建事件,将其导出,然后将其导入日历...
提前感谢您的任何想法。
【问题讨论】:
【参考方案1】:所以,我想出了这个。
Apple 日历、Google 日历和几乎所有日历应用程序都不支持每 x 秒重复一次的事件。 ICS 格式本身可以,而不是程序。
月球在一个倾斜的轨道上,所以无论如何这对我想要的都是不合适的解决方案。
US Navy has an API 发布月球的升起/落下和相位数据。我保存了这个页面的响应(一个 JSON 文件),并做了一些 Python 代码来提取所需的数据,然后制作了一个 Python 脚本来为每个事件(每个月升一个事件)创建单独的 .ICS 文件(即 不是每 x 秒重复一次的事件)。然后我将这些 ICS 文件导入到 macOS 日历中。
希望这对将来需要处理类似情况的其他人有所帮助...
【讨论】:
以上是关于如何每 x 秒重复 ICS 文件中的事件?的主要内容,如果未能解决你的问题,请参考以下文章