私はFeedzirraを使用してRSSフィードを解析していますが、これは非常にうまく機能します。最初のテストでは、FeedNormalizerの2倍の速度です。さらに重要なことに、フィード内の更新されたエントリをチェックする優れたラッパーがあります。フィード更新アプローチを使用していたときに、いくつかの問題が発生しました。
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がある場合、fetch_and_parseを呼び出さないと、現在のETagを取得できなくなります。これは別のフェッチの無駄です。
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値を指定しようとしましたが、更新されません-TechcrunchではETagが頻繁に変更されるため、上記のコードではnilを使用することにしました。
私が得る出力は次のとおりです。
true
#note the above line is blank (basically printing nil)
私は何か間違ったことをしていて、何らかの方法で関数を間違って使用していますか?それともこれはプログラムのバグですか?更新されたフィードを探す方法に関する他の提案はありますか?
ところで、私も「last-modified-date」の値を使用してみましたが、日付がヘッダーの応答と一致していても、常に新しいエントリがあると見なされます。
ありがとう、-e
更新:出力で、空白行の上に25を誤って入力しました。私は今それを修正しました。ごめん。