以下代码来自Feedzirra
上的要点,以从RSS Feed中获取更新内容:
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如何知道Feed已更新。我无法让它发挥作用。为了知道,我必须将之前(几分钟或几小时前)Feed
返回的Feedzirra::Feed.fetch_and_parse(feed_url)
对象传递给Feedzirra::Feed.update
,不是吗?如果我使用刚才fetch_and_parse的Feed,它是如何知道它是否已更新?
答案 0 :(得分:0)
Feed(您正在访问的网站)可以(但不一定)维护一个或两个字段,以确定自上次访问后它们是否已更改。这些是etag和最后修改。如果该站点支持其中一个或两个,则在您访问该源时它们将返回给您。您的模型应为每个感兴趣的Feed保留这些字段。 Feedzirra :: Feed.update使用它们来确定自上次访问以来Feed是否已更新。这些将允许Feedzirra :: Feed.update提取自上次访问以来新的或更改的条目。
如果您既没有etag也没有上次修改过的字段,或者因为它是您的第一次访问,或者因为该网站未提供这些字段,那么Feedzirra :: Feed.fetch_and_parse会提取该网站提供的所有条目。这对于第一次访问是有意义的。它对后续访问没有多大意义,但如果网站不支持它你能做什么?
要明确,Feedzirra :: Feed.fetch_and_parse总是提取所有可用条目。 Feedzirra :: Feed.update仅提取自提供给etag和/或上次修改日期以来新的或更改的条目。
参赛作品也会保持更新/发布日期。