どこにリンクされているのか、それっぽくわかるようにする
def title(url)
uri = URI(url)
@ua.get(uri)
text = ""
case
when uri.fragment
fragment = @ua.page.root.at("//*[@name = '#{uri.fragment}']") || @ua.page.root.at("//*[@id = '#{uri.fragment}']")
text = fragment.inner_text + fragment.following.text + fragment.parent.following.text
when uri.to_s =~ %r|^http://h.hatena.ne.jp/[^/]+/\d+|
text = @ua.page.root.at("#main .entries .entry .list-body div.body").inner_text
else
text = @ua.page.root.at("//title").inner_text
end
text.gsub!(/\s+/, " ")
text.strip!
NKF.nkf("-w", text).split(//)[0..30].join
rescue Exception => e
@log.debug ["title:", e.inspect]
""
endはてスタ IRC ストリームつかってて、URL だけだとどこにスターついたのかよくわからないので、こういうのをカマして、リンクされた周辺の文字列をひろっています。結構うまいこといきます。@ua は WWW::Mechanize で @log は Logger です。
ハイクを特別扱いしてるのは、はてスタ IRC ストリームのチャンネルで発言するとハイクに投稿されるようになっているため、ちょっと優遇してる感じです。