http://basyura.org/rone/
Twitter ユーザを県別に集計している(地味に)んだけど、これの新着ユーザを RSS で配信するようにしてみた。RSS を取得して中身を見るのは何回かやったことあるんだけど、自分で生成するのは始めて。差分更新の仕方がよく分からないなりに頑張ってみたのが↓。
require 'rss' class RSSGenerator def self.generate(users) rss_path = RConfig["rss_dir"] + "/index.rdf" if File.exist?(rss_path) old_rss = RSS::Parser.parse(open(rss_path).read) end rss = RSS::Maker.make("2.0") do |maker| maker.channel.about = "http://basyura.org/rone/index.rdf" maker.channel.title = "ROneUsers" maker.channel.description = "Twitter ユーザを県別に集計" maker.channel.link = "http://basyura.org/rone" maker.items.do_sort = true if old_rss old_rss.items.each{|old_item| item = maker.items.new_item item.link = old_item.link item.title = old_item.title item.description = old_item.description item.date = old_item.date } end users.each{|user| item = maker.items.new_item item.link = "http://twitter.com/#{user.screen_name}" item.title = user.name item.description =<<-EOF <img src="#{user.profile_image_url}"><br> ##{user.location}<br> <a href="#{user.url}">#{user.url}</a><br> #{user.description} EOF item.date = Time.now } maker.image.title = "ROneUsers" maker.image.url = "http://basyura.org/rone/img/logo.png" end open(rss_path ,"w"){|f| f.puts rss} end end
次は県別配信をしたいんだけど、最下位独走中の某県の新規ユーザがまったく増えないのが悲しい。