RSSフィードを取得するアプリを最近作ったので、処理をまとめてみました。
RSSを取得して、その情報をDBに入れてみます。
# getrss.rb require 'date' require 'rss' require 'mysql2' require 'active_record' require 'activerecord-import' # database.ymlにDB接続情報を記述 # ActiveRecordを利用 config = YAML.load_file('database.yml') ActiveRecord::Base.establish_connection(config) class Item < ActiveRecord::Base # バリデーションの記述など validates_presence_of :title validates_presence_of :link validates_uniqueness_of :link end class manageRss def getrss insertData = [] # RSSのリスト lists = [ 'http://www.rsslist1.com/xml', 'http://www.rsslist2.com/xml' ] return false unless lists lists.each do |rss| rssdata = RSS::Parser.parse(rss) begin rssdata.items.each do |entry| # dateの記述が間違っているRSSがたまにあるので念のため tmpdate = entry.respond_to?(:pubDate) ? entry.pubDate : entry.dc_date item = Item.new item.title = entry.title item.link = entry.link item.entrydate = tmpdate insertData << item end rescue => e # エラー時の処理 end end # BULK INSERT Item.import insertData return true end end
上記でDBに入れたデータを取得してみます。
# main.rb # ActiveRecordを利用 def showrss @items = Item.all.order("entrydate DESC").limit(100) end
上記処理にSinatraを組み合わせれば、簡単にRSSリーダーサイトを作ることができます。
こちらの記事も合わせてどうぞ。