2

我正在使用 Feedzirra 解析我的 RSS 提要,它运行良好——在我的初始测试中,它的速度是 Feed Normalizer 的两倍。更重要的是,它有很好的包装器来检查提要中的更新条目。当我使用它的提要更新方法时,我遇到了一些问题:

require 'feedzirra'

feed = Feedzirra::Feed.fetch_and_parse("http://feeds.feedburner.com/TechCrunch")
puts feed.etag #outputs the right tag 

上面的代码打印了正确的 ETag(用 Firebug 检查)。现在,当我想检查更新时,feedzirra 会询问您当前的 etag、最后修改日期等。当我给它正确的 ETag 时,它会说没有更新 - 这很好。但是,如果我不指定 ETag,它不会在抓取所有提要后抓取最新的 ETag。这是一个问题,因为如果发生更新并且我有一个陈旧的 ETag,我将永远无法获取当前的 ETag,除非调用 fetch_and_parse - 浪费另一个 fetch。

feed_to_update = Feedzirra::Parser::Atom.new
feed_to_update.feed_url = "http://feeds.feedburner.com/TechCrunch"
feed_to_update.etag = nil
feed_to_update.last_modified = nil

last_entry = Feedzirra::Parser::AtomEntry.new
last_entry.url = nil 

feed_to_update.entries = [last_entry]

updated_feed = Feedzirra::Feed.update(feed_to_update)

puts updated_feed.updated?
puts updated_feed.etag

上面的示例是作者文档的一部分的修改版本:http: //gist.github.com/132671。我还尝试提供以前的 ETag 值,但它没有得到更新 - 我选择在上面的代码中使用 nil,因为 ETag 经常为 Techcrunch 更改。

我得到的输出是:

true    

#note the above line is blank (basically printing nil)

我是否做错了什么并以任何方式错误地使用了这些功能?或者这是程序的错误?有关如何查找更新的提要的任何其他建议?

顺便说一句,我也尝试使用'last-modified-date'值,即使日期与标题响应匹配,它也总是认为有新条目。

谢谢,-e

更新:在输出中,我在空行上方错误地输入了 25。我现在已经解决了。对不起。

4

1 回答 1

0

我查看了源代码,发现 etag 没有正确更新。所以这似乎解决了它:

在下面的行之后(在 feed.rb 的 add_feed_to_multi() 中)

feed.update_from_feed(updated_feed) 

我添加了这一行:

feed.etag = updated_feed.etag 

我仍然没有找到解决 last_modified 问题的方法,但现在 etags 正在工作。

于 2010-02-01T23:01:16.413 回答