Rubellum fly light

ほぼPHP日記

RubyでRSSを取得(FeedNormalizer)

FeedNormalizerでRSSを取得するコード。一応Atomも取れる。
このコードではタイトル、日付、URLのみをハッシュで返すようにしてます。

require 'kconv'
require 'feed-normalizer'

# RSSを取得してタイトル、日付、URLをハッシュで返す
def rss_parse rss
  feed = FeedNormalizer::FeedNormalizer.parse(open(rss))
  feed.entries.reject{|x|x.title=~/^PR:/}.map{|e|
    {:title => e.title.toutf8, :url => e.url, :date => e.date_published}
  }
end

# 確認するブログたち
urls = [
        "http://nanjolno.jugem.jp/?mode=rss",
        "http://rssblog.ameba.jp/toyosakiaki-blog/rss20.xml",
        "http://blog.excite.co.jp/endo-aya/index.xml",
        "http://blog.excite.co.jp/amisketch/index.xml",
        "http://www.tamurayukari.com/diary/atom.xml",
        "http://blog-edge.com/uedakana/?mode=rss",
        "http://sora0v0blog.blog81.fc2.com/?xml",
        "http://blog.livedoor.jp/ceruleanblue622/atom.xml",
        "http://emasama.cocolog-nifty.com/blog/rss.xml",
        "http://yaplog.jp/asumibiyori/index1_0.rdf",
        "http://gree.jp/goto_saori/blog/d86521cfa2e34efbb4d1f190cce79c3c.rdf",
        "http://misato.idt.jp/cgi-bin/sfs6_diary/sfs6_diary_rss.cgi",
        "http://blog.mizukinana.jp/blog_nana/index.xml",
        "http://aoitown.com/cgi-local/aoiblog/diary.cgi?mode=rss",
        "http://blog.geneon-ent.jp/orikasa/index.rdf",
        "http://rss.exblog.jp/rss/exblog/matsukimiyu/index.xml",
       ]

urls.map{|u|pp rss_parse(u)}

タイトルが文字化けするブログがあったのでkconvで変換。
kconvって一般的なんですかね。
もっと良い方法があったら、ぜひ教えて下さい。


日付がdate_publishedに格納されてないブログが稀にあります。
このコードではそれは無視してます(確かlast_updatedとかに入ってます)。


あとアメーバの広告を抜いてます(rejectのところ)。アレうっとおしいよね。