
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リーダーサイトを作ることができます。
こちらの記事も合わせてどうぞ。