Ruby Rss解析器和事件触发器

问题描述:

我正在使用RSS库,因此我可以在Ruby和Rails中解析Atom和RSS并将其存储在模型中。 我已经看过标准的RSS库,但有没有一个库会自动检测到有一个新的RSS源,所以我可以更新我的数据库?Ruby Rss解析器和事件触发器

触发指令以存储新的rss提要的最佳做法是什么? 我应该使用线程来处理这个问题吗?它会变慢吗? 感谢您的帮助

OK heres the deal。

  1. 如果你想要一个真正的快速分析器去Feedzirra。不适用于Windows。 http://github.com/pauldix/feedzirra

  2. Autodiscovery?

    -Theres松露猪,如果你不想做GET重定向。 http://github.com/pauldix/truffle-hog

    -Theres feedbag如果您想要执行GET重定向以从给定的URL查找供稿。虽然这比较慢。 http://github.com/damog/feedbag

  3. Feedzirra是最好的选择,如果你想轮询你的饲料的新条目。但是如果你想要一个更加非轮询的解决方案来解决你的问题,那么我会建议通过pubsubhubbub规范。确保在解析您的提要时启用pubsubhubbub。检查链接标签。如果它指向pubsubhubbub.appspot.com或任何其他启用pubsub的集线器,则只需通过向集线器发送订阅请求来订阅该提要。然后,您可以在您的应用中定义一个端点,然后轮流接收来自中心的订阅源订阅的更新条目。只需读取原始POST数据并将其存储在数据库中即可。统计数据显示,95%的博客博客启用了pubsub。这是你手中的大量数据。 :)

  4. 如果您正在轮询更改,那么您应该从头中检查最后修改或etag,而不是再次解析整个馈送。避免浪费资源。 Feedzirra负责为您服务。

+2

我忘了在URL上做一个head(),并寻找etag和最后修改的标题。大约两年前,我不得不写一个聚合器,并且正在从我的高度损坏的记忆中走出。 +1为您的回应! – 2010-04-18 09:55:13

+0

谢谢Greg :) – 2010-04-18 09:57:31

我不确定您的意思是“自动检测”一个新的饲料?

您是否在寻找可以发现何时有人在网站上创建新Feed的代码?或者,您的意思是发现现有Feed中是否有新文章?

首先是艰难的,因为您的代码需要知道要查看的网站,因此它需要使用新提要进行某种类型的网站自动发现。搜索谷歌的“新的RSS饲料”不会返回任何看起来有用的东西,至少不会在第一页。如果你或你的用户知道一个新的网站,那么你可以有一个接口来添加新的网站进行搜索。然后你抓住那个URL的页面,寻找RSS/Atom自动发现链接,然后从那里开始。由于使用不同协议(RDF,RSS和Atom)重复传输内容,自动发现链接可能会打开一堆蠕虫,因此您必须确定要使用哪个或使用列出的备用内容的多个Feed。

如果您的意思是您想要发现现有Feed中是否有新文章,那么您必须跟踪代码最后一次查看Feed以及上次看到的文章,然后检索Feed并查看如果有任何文章不在您以前看过的文章列表中。您的代码也需要对许多订阅源中的生存时间信息非常敏感。当他们每周更新一次时,每15分钟打一次饲料就是糟糕的形式。大多数聚合代码可以完成这些事情,但您可能需要配置数据库并告诉代码如何找到它。

通常,对于这类任务,我在生产Linux或Unix系统上设置一个crontab条目并定期关闭作业,查看数据库中的最后运行时间加上存储的时间 - 活的价值在过去。

这有帮助吗?

很容易解决方案是使用Dynamic attribute-based finders

当你填充RSS提要的数据模型,而不是Model.create(...)使用Model.find_or_create_by_column(value, :other_column => other_value)

你可以指定一个日期作为唯一值或RSS邮件的标题...(任何你想要的)

我觉得这是很容易的。例如,您可以进行一些cron任务,以每小时填充模型一次。只会添加新的Feed。

当没有再次下载整个RSS提要时,没有机会获得一些“事件”。

+0

不,你错了。您只需获取RSS提要的标题,而不是下载整个提要。标题包含电子标签或最后修改的标签,您可以使用该标签比较已存储在数据库中的标签。只有在可以下载整个Feed的更新时才可以下载。 – 2010-04-18 14:09:58

+0

通过订阅支持pubsub的服务器,可以在更新RSS时获得“事件”。阅读我的第一个答案。您会以胖胖的形式收到更新后的Feed条目。然后,您可以读取原始POST数据并提取内容。阅读pubsubhubbub规范。 – 2010-04-18 14:11:57

+0

我们正在讨论简单的通用RSS订阅源,而不是关于pubsub启用的服务器!您的解决方案不是一般的RSS订阅解决方案 – retro 2010-04-18 14:37:37