RSS 轮询:从 YouTube 频道源读取视频描述

我们通过 RSS 轮询将多个 YouTube 频道导入到一个论坛分类中。每个主题都会包含视频 URL,并自动转换为播放器,但视频描述从未出现在帖子中。对于许多视频而言,描述才是真正的内容——例如路线、地点、装备、链接等——会员们经常询问这些信息。

YouTube 频道的源是带有 Media RSS 扩展的 Atom 格式,每个条目都在 <media:group><media:description> 中包含完整的描述,以及 <media:thumbnail>。RSS 轮询使用 rss gem(0.3.3 版本,Gemfile.lock#L614)来解析源,该 gem 没有 Media RSS 模块,因此这些元素在 FeedItem 处理之前就被丢弃了,导致 YouTube 条目回退到仅显示 URL(feed_item.rb#L17-L23)。

以下改进会有所帮助:

  1. 为 YouTube 条目读取 media:description(以及 media:thumbnail)。
  2. 提供一个按源或全站范围的选项,以便在导入的帖子中将描述显示在视频下方。

目前,我们通过一个小型配套插件在轮询期间重新读取源 XML 来实现这一功能(discourse-rss-onebox)。它在我们论坛的主题中运行正常,但它依赖于 RSS 轮询的内部实现,如果能在核心功能中实现,会更简单且更稳定。