2016-11-30 127 views
0

我试图在macOS Sierra's Calendar中设置日历事件,每隔2,551,440秒(恰好是月亮的朔望期)重复。该系统使用ICS规范。最终,我想要一个日历,为我的位置提供月亮升起和固定时间,并且还需要列出月球阶段(例如满月,新月等)。我在互联网上发现了大量人工创建事件的例子,但是这非常乏味(一年中每天有一个事件!),并且它们基于不同的时区(因此对我来说没有用处) 。如何每隔x秒在ICS文件中重复事件?

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

有人可以请解释如何去做这件事吗?

我发现the RRULE Generator,但它只支持每小时间隔,而不是秒,所以对于我的需求不够精确。

我认为运行一个bash脚本来生成事件(每2551,440秒钟就会运行一个cron作业),但那只会给出一个月的通知。我宁愿让它无限期地建立。

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

据我所知,这不能直接在日历中完成;该解决方案将最有可能手动编辑每个ICS文件,以设置正确的循环,然后将其导入日历...我只是不知道如何...

...或有日历应用程序在哪里可以让你设置每隔x秒重复出现的事件?如果是这样,我可以创建该事件,导出它,然后将其导入日历...

在此先感谢您的任何想法。

回答

0

所以,我想出了这一个。

  1. Apple日历,Google日历以及几乎所有的日历应用程序都不支持每隔x秒重复的事件。 ICS格式本身,而不是程序。

  2. 月球处于倾斜的轨道,所以这是我不想要的解决方案。

  3. 发布月球上升/下降和相位数据的US Navy has an API。我保存了来自这个页面的响应(一个JSON文件),并且执行了一些Python代码来提取所需的数据,然后创建了一个Python脚本为每个事件创建单独的.ICS文件(每个Moonrise一个事件)(即不是一个事件每隔x秒重复一次)。然后我将这些ICS文件导入到macOS日历中。

希望这可以帮助其他人谁需要应对未来类似的情况......