如何每 x 秒重复一次 ICS 文件中的事件?

How do I repeat events in an ICS file every x seconds?

我正在尝试在 macOS Sierra 的日历中设置每 2,551,440 秒重复一次的日历事件(恰好是月亮的会合周期)。本系统采用ICS规范。

最终,我想要一个日历,提供我所在位置的月亮升起和落下时间,并且还需要列出月相(例如满月、新月等)。我在 Internet 上发现了很多人们手动创建事件的示例,但这非常乏味(多年来每天一个事件!),并且它们基于不同的时区(因此对我没有用) .

我从 ICS 规范中看到,文件格式本身支持每 x 秒重复一次的事件。我将事件导出为 ICS 文件(来自日历),然后在文本编辑器中编辑了 ICS 文件,但我一定是弄错了代码,因为它没有以正确的重复间隔重新导入到 macOS 日历中.相反,它导入了一个没有重复的事件。也有可能我的代码是正确的,但 Calendar 在导入时丢弃了它...

有人可以解释一下怎么做吗?

我找到了 the RRULE Generator,但它只支持小时间隔,不支持秒,因此不够精确,无法满足我的需要。

我考虑过 运行 宁 bash 脚本来生成事件(这将 运行 作为每 2,551,440 秒的 cron 作业),但这只会给出一个月的通知。我宁愿无限期地设置它。

另一种选择可能是在 Python 中编写脚本来创建单独的 ICS 事件文件;这也很乏味...

我知道这不能直接在日历中完成;解决方案很可能是手动编辑每个 ICS 文件以正确设置重复周期,然后将它们导入日历...我只是不知道如何...

...或者是否有某个日历应用程序可以让您设置每 x 秒重复一次的事件?如果是这样,我可以在其中创建事件,将其导出,然后将其导入日历...

提前感谢您的任何想法。

所以,我想通了。

  1. A​​pple 日历、Google 日历和几乎所有日历应用程序都不支持每 x 秒重复一次的事件。 ICS 格式本身有,只是程序没有。

  2. 月球在倾斜的轨道上,所以这对我想要的来说是一个不合适的解决方案。

  3. 发布 rise/set 和月相数据的 US Navy has an API。我保存了此页面的响应(一个 JSON 文件),并做了一些 Python 代码来提取所需的数据,然后制作了一个 Python 脚本来创建单独的 .ICS 文件每个事件(每个月出一个事件)(即 而不是 一个事件每 x 秒重复一次)。然后我将这些 ICS 文件导入到 macOS 日历中。

希望这对以后需要处理类似情况的其他人有所帮助...