重新添加完整的 ICS 导出

您好,

希望能够恢复在#231中移除的行为。

具体来说,能够将ical客户端指向events.ics或等效地址,以获取网站上的所有事件。

此外,DESCRIPTIONURLORGANIZER字段在download-calendar.js的替换项中缺失。前两个对我来说更重要。

如果能将#169合并进来以添加“每个主题”的事件导出功能,那就更好了,但这属于额外需求。

10 个赞

如果我能订阅日历中的事件,我也会非常高兴。

镜像 /upcoming-events,我希望看到一个 /upcoming-events.ics

但是,能够获取单个类别(甚至单个标签?)的事件也会是一个很棒的补充。

也许 /upcoming-events.ics?category=12 可以按类别 ID 过滤?

2 个赞

+1 赞成提供完整的 ICS Feed,并按主题进行过滤。

我知道这因为隐私问题而很难实现。通常的做法是生成一个代表用户 Feed 的随机哈希 Feed。

1 个赞

嗯,什么……至少我们使用的日历是公开 URL……

我也想为这个功能添加支持。我已经在此主题上投了票。

重新引入一个全站或每个用户的 ICS 导出功能,将对我们社区的工作流程非常有价值。关于重新考虑 PR #231 中被移除的内容,有什么更新吗?

如果存在隐私或实施方面的顾虑,也许可以考虑一个私有的、每个用户的 ICS Feed 作为解决方案。

感谢您的考虑!

我不认为存在任何隐私顾虑,因为 .json 端点本来就已经存在了,这只是另一种格式。

@cvx / @j.jaffeux 对于将 .ics 带回事件索引路由(已在:DEV: Remove old ics code by CvX · Pull Request #231 · discourse/discourse-calendar · GitHub 中移除)有什么看法?对我来说,这似乎是一个简单的胜利。

我们已经做了:

DiscoursePostEvent::EventFinder.search(current_user, filtered_events_params)

并且可以有一个 MAX_RESULTS(按最近排序)来确保这个和 .json 不会变得太大。

2 个赞

我已经通过 GET /discourse-post-event/events.ics 重新添加了 ics 导出功能(参见 https://github.com/discourse/discourse/pull/35143)。请注意,此端点的硬性限制为 200 个事件。如果您的网站有更多事件,并且您想进行完整导出,可以通过使用接受日期字符串的 beforeafter 查询参数进行迭代。我们将在适当的时候将此端点的完整可接受参数列表添加到 API 文档中。

6 个赞

感谢您合并 PR #35143 — 很高兴看到 .ics 导出功能正式回归。

我想检查一件事:是否有可能(或有未来计划)像 Discourse 处理私有 RSS/Atom feed(/topics/feed.rss?token=…)那样,使用用户令牌或 API 密钥对该 feed 进行身份验证?

目前 /discourse-post-event/events.ics 似乎只能导出公开活动,这意味着 Outlook / Google Calendar 无法订阅私有类别。

即使是轻量级的基于令牌的方法(每个用户或每个站点,只读),也可以在不通过外部脚本代理 feed 的情况下,安全地将私有活动暴露给日历客户端。

这是否是可能添加的功能,或者是否已经可以通过我可能错过的现有参数来实现?

这似乎是一个单独的功能请求。我认为使用API密钥在技术上是可行的,所以我想问题是如何轻松地实现这一点。

我将关闭此项,并让您就此问题开启新的条目。