個人ニュースサイトのRSS/Atom対応状況をRubyで計測してみた
一つ一つ手作業で調べるなんてやってられないのでRuby任せ。
とりあえずrubyforge.orgをFeedとかRSSとかで検索してみるとそれっぽいのを3つ発見。
上から順に比較
FeedDiscover
たまにHTMLがパースできなくて落ちる?
計測してみる
livedoor Feed Discover APIとrFeedFinderを組み合わせて使ってみることにした。
require 'rubygems' require 'logger' require 'csv' require 'rfeedfinder' require 'livedoor/api/feed_discover' $KCODE = 'u' @log = Logger.new(STDOUT) @log.level = Logger::INFO def livedoor_feeddiscover(url) begin return Livedoor::API::FeedDiscover.find(url).feedlinks rescue Timeout::Error @log.error('livedoor_feeddiscover'){"Timeout::Error"} return [] end end def rfeedfinder(url) begin return Rfeedfinder.feeds(url) rescue Timeout::Error @log.error('rfeedfinder'){"Timeout::Error"} return [] end end sites = Array.new CSV.open('newssite.csv', 'r', "\t") do |newssite| site = Hash.new site[:name] = newssite[0] site[:url] = newssite[1] feed_list = livedoor_feeddiscover(site[:url]) | rfeedfinder(site[:url]) site[:count] = feed_list.size site[:feeds] = feed_list.join(',') @log.info "\"#{site[:name]}\",#{site[:url]},#{site[:count]}" sites << site end sites.sort! {|a, b| b[:count] <=> a[:count]} CSV.open('feed_list.csv', 'w', "\t") do |writer| sites.each do |site| writer << [site[:name], site[:url], site[:count], site[:feeds]] end end