読者です 読者をやめる 読者になる 読者になる

HTMLページをRSSに変換するのに便利なFeedalizer

http://termos.vemod.net/feedalizer

APIはScrApiと結構似ている感じです。内部的にはHpricotを使っていてコードはファイル一つでそれほど行数もないのですぐ読めます。Feedを作成する部分は標準添付のrss/makerを使ってるようです。

RubyPlagger::CustomFeed::Script用のプログラム作るのにうってつけかもしれません。ただScrApiとFeedToolsを使えばそれほど苦労しない気もします。あとFeedalizer.newするところでURLの文字列を渡しているのですが,HTML文書を文字列で渡したりとかそういうのはないので日本語の場合RSSの各カラムに入れるところでいちいちutf8に変換しなければいけないのがちょっと使いやすくないかなと思ったりしました。

require 'rubygems'
require 'feedalizer'
require 'kconv'

$KCODE = 'u'
#$DEBUG = true

base_url = "http://d.hatena.ne.jp"

Feedalizer.new("#{base_url}/walf443") do
  feed.title = "Feedalizer Test"
  feed.about = "Feedalizerのテスト"
  feed.description = ""

  scrape_items("div.section") do |rss_item, html_element|
    rss_item.link = base_url + html_element.search("h3 a").first.attributes["href"]
    rss_item.title = html_element.search("h3").first \
                                 .inner_html.toutf8 \
                                 .gsub(/<.*?>/, '')

    rss_item.description = 
        html_element.inner_html.toutf8 \
                    .sub(/<h3.*\/h3>/, "") \
                    .sub(/<p class="sectionfooter".*<\/p>/, "") \
                    .gsub(/<.*?>/, '') \
                    .gsub(/[\n\t]/, '').strip
  end

  output!
end