Rubyで2ちゃんねるのスレを読みたかったので,調べてみると,2ちゃんねるBOTの作り方を詳細に解説してくれている人がいた.
- 2ちゃんねるBOTの作り方 準備編 - GIOの日記
- 2ちゃんねるBOTの作り方 設計編 - GIOの日記
- 2ちゃんねるBOTの作り方 実装編1 - GIOの日記
- 2ちゃんねるBOTの作り方 実装編2 - GIOの日記
記事内のソースコードのリンクは切れていたけど,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\">>>271</a> <br> 日本語でどうぞ "]
これの他には,スレの内容もパースできるライブラリを作ってくれている人もいたけど.ダウンローダーが落としたファイルをパーサーに入れる感じで,使い方が好みに合わなかった.
上のライブラリに欲しい機能を実装するときには参考にした.
GitHubに落ちてるソースコードは,使いたいプロジェクトのsubmoduleに追加すると,気軽に使える.
パッチを当てて使いたい,みたいなときはforkして自分の管理下に置けるので,すごい便利.