hitode909の日記

趣味はマリンスポーツですの日記です

Rubyで2ちゃんねるのスレを読む

Ruby2ちゃんねるのスレを読みたかったので,調べてみると,2ちゃんねるBOTの作り方を詳細に解説してくれている人がいた.


記事内のソースコードのリンクは切れていたけど,GitHubで公開されてた.

スレの内容をパースする処理とかがなかったので,forkして欲しい機能を勝手に実装した.


試しにこれを使って,ラーメン板の,タイトルにこってりを含むスレの最新のレスを表示してみる.

require 'bot2ch'

menu = Bot2ch::Menu.new
board = menu.get_board('ramen')
threads = board.threads.select{|th| th.title =~ /こってり/}
threads.each{ |th|
  p [th.title, th.posts.last.body]
}

実行結果

["【家系】岳家 パート3【こってり】 (598)", " 勝負できるの? "]
["【こってり】福知山のとん吉について【とんこつ】 (746)", " 藤や旭でいいなら普通のラーメンで良い訳でわざわざとん吉にいく必要なだろ "]
["【京都】悟空ラーメンスレッド2【こってり】  (894)", " まずかったらお金いりまへん を貼りださなくなった頃からまずくなってきたよなw <br> 酸っぱいスープ出しやがって。 "]
["こってりらーめん誉【柏】3 (272)", " <a href=\"../test/read.cgi/ramen/1246085588/271\" target=\"_blank\">&gt;&gt;271</a> <br> 日本語でどうぞ "]


これの他には,スレの内容もパースできるライブラリを作ってくれている人もいたけど.ダウンローダーが落としたファイルをパーサーに入れる感じで,使い方が好みに合わなかった.
上のライブラリに欲しい機能を実装するときには参考にした.


GitHubに落ちてるソースコードは,使いたいプロジェクトのsubmoduleに追加すると,気軽に使える.
パッチを当てて使いたい,みたいなときはforkして自分の管理下に置けるので,すごい便利.