2013-08-19 40 views
3

下面的代码是从Feedzirra要点得到从RSS提要的更新内容:Feedzirra - 如何获取更新的RSS提要?

feed = Feedzirra::Feed.fetch_and_parse(feed_url) 
feed = Feedzirra::Feed.update(feed) 
do_something_with_new_feed(feed.new_entries) if feed.updated? 

我不明白Feedzirra怎么会知道的饲料已更新。我无法得到它的工作。为了知道,我将不得不将之前(分钟或小时前)Feedzirra::Feed.fetch_and_parse(feed_url)返回的Feed对象转换为Feedzirra::Feed.update,否?它如何知道它是否已经更新,如果我使用我刚才fetch_and_parse的feed?

回答

0

供稿(您正在访问的网站)可以(但不一定)维护一个或两个字段,以确定自上次访问后它们是否发生了更改。这些是etag并最后修改。如果网站支持其中一项或全部这两项,则在您访问Feed时将返回给您。您的模型应该为每个感兴趣的饲料维护这些字段。 Feedzirra :: Feed.update使用它们来确定自上次访问以来Feed是否已更新。这些将允许Feedzirra :: Feed.update提取自上次访问以来新增或更改的条目。

如果您既没有etag也没有上次修改的字段,或者因为它是您的第一次访问,或者因为该网站没有提供它们,则Feedzirra :: Feed.fetch_and_parse会从该网站中提取所有可用条目。这对第一次访问很有意义。它对后续访问没有意义,但如果该站点不支持它,你可以做什么?

要明确,Feedzirra :: Feed.fetch_and_parse总是拉取所有可用条目。 Feedzirra :: Feed.update只会提取自etag和/或提供给它的最后修改日期以来新增或更改的条目。

条目还保留更新/发布日期。