【问题标题】:Aggregating feeds in Rails application在 Rails 应用程序中聚合提要
【发布时间】:2010-11-05 18:18:47
【问题描述】:

我正在考虑编写一个守护进程来遍历提要,然后将它们作为 ActiveRecord 对象添加到数据库中。

首先,我面临的一个问题是我无法使用 feed-normalizer gem 可靠地检索故事的作者/用户。似乎有时,它无法识别标签(我不知道是否有其他人遇到过这个问题)。

其次,我还没有看到有人将 RSS 提要转换回数据库条目。我需要这样做,因为每个条目都会与其他 ActiveRecord 对象关联。我找不到任何宝石来专门执行此操作,但我可以以某种方式破解诸如 act_as_feed 之类的东西来执行此操作吗?

【问题讨论】:

  • 为什么,将 RSS 和其他提要转换为数据库条目是很正常的。编程访问是 XML 提要的全部要点!您需要创建适当的模型并在解析提要时更新并保存它们!你问的是这个吗?
  • 啊,是的,这就是我要问的。但是,我找不到可以做到这一点的宝石。我发现一个 rfeedpaser 在某些方面比 feed-normalizer 更好,但它仍然没有将条目保存到数据库中。但是翻看代码,我不认为我会找到这样的宝石,因为有太多的信息可以放入一个提要中。

标签: ruby-on-rails rss aggregation feed atom-feed


【解决方案1】:

SimpleRSS 公开了一个非常简单的 API,并且在大多数提要上运行良好。我建议不要查看实现,因为它的“解析器”是一堆正则表达式(在很多层面上都是错误的),但它运行良好。

守护进程是在后台运行它的好工具。

如果您使用的是活动记录,则应遵循在 Rails 之外使用 AR 的说明,然后内联定义模型类。这将减少一点膨胀。

RSS 提要非常不一致,这是我们使用的失败

  date = i[:pubDate] || i[:published] || i[:updated]
  body = i[:description] || i[:content] || i[:summary] || ""
  url = i[:guid] || i[:link]

此外,根据经验,请确保您尝试抢救所有内容(并记住,正常抢救不会捕获超时)。必须不断反弹获取不良数据的 RSS 守护程序,这很糟糕。

【讨论】:

    【解决方案2】:

    不要使用 SimpleRSS。它不会为您解码 HTML 实体,并且偶尔会忽略提要的结构。

    我发现使用XMLSimple 将提要解析为 XML 是最简单的方法,但您可以使用任何 XML 解析器。

    【讨论】:

      【解决方案3】:

      最好的方法是使用连接到Feed API like Superfeedr'sRails 引擎。 轮询 RSS 提要意味着您需要运行自己的异步工作程序和/或队列系统,这对于构建和维护加班来说可能相当复杂。您还必须处理数百种格式和不一致。这是显示how to consume RSS feeds in a Rails application 的博客文章。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-11
        • 2011-01-30
        • 2012-04-27
        • 1970-01-01
        相关资源
        最近更新 更多