いずれのライブラリも書き込み機能はなく、2015年3月から導入された2ch.netのAPIにも対応していない。
特記がない限り以下の機能を持つ。
- 掲示板の一覧を取得(http://menu.2ch.net/bbsmenu.htmlをパース)
- スレッド一覧を取得(subject.txtをパース)
- スレッドのレスを取得(DATファイルをパース)
- 2ch.netでは2015年3月13日からdatへのアクセスができなくなった。
- gzipによるレスポンスの圧縮に対応。
x2ch
- rubygems.org
- xmisao/x2ch - GitHub
- バージョン: 0.9.3 (2015/03/26)
- 自動テスト: なし
- サポートしている掲示板: 2ちゃんねる(デフォルトで2ch.scを参照), まちBBS
- ID、BE、書き込み日時: DATの3列目のフィールドをそのまま使用する(
X2CH::Post#metadata #=> "2014/01/11(土) 10:10:00.00 ID:xxxxxxxxx"
)ので、これらのデータを使いたい場合には自前でパースする必要がある。
DATファイルについてはRange
ヘッダーによる差分取得やIf-Modified-Since
ヘッダーなども利用できる。
- x2chタグのエントリ一覧 -- ぺけみさお - 作者による解説
bbs2ch
- rubygems.org
- fukayatsu/bbs2ch - GitHub
- バージョン: 0.1.1 (2013/09/12)
- 自動テスト: あり(rspec)
- サポートしている掲示板: 2ちゃんねる(デフォルトで2ch.netを参照)
- ID、BE、書き込み日時: それぞれパースを行う(書き込み日時のパースには
Time.parse
を使用)。
DAT、subject.txt、bbsmenu.htmlについては、ダウンロードとパースが一つのメソッド内でまとめて実行されるので、ローカルに置いているデータをパースする用途には不向き。
Manbo-/bot2ch
- rubygems.org - 登録されていない。
- Manbo-/bot2ch - GitHub
- バージョン: 0.9.1 (2014/01/13)
- 自動テスト: あり(rspec)
- サポートしている掲示板: 2ちゃんねる(デフォルトで2ch.netを参照), したらば
- ID、BE、書き込み日時: ID、書き込み日時のパースを行う(書き込み日時のパースはDATの3列目のフィールドから数字をスキャンして
Time.local
に渡すという手法)。BE IDは取得できない。
テスト周りが充実しており、Guard::RSpecによってファイルの更新時に自動でテストを走らせることができる。VCRによってレスポンスをキャッシュしているのでサーバーの負荷を気にする必要はない。
指定したスレッド内の画像をまとめてダウンロードするコマンドラインツールManbo-/bot2ch-downloaderが公開されている。
インストール
gemになっているのでBundlerを使うかrake install
でインストールすることで利用できる。
文字コードの変換のためManbo-/faraday-response-encoderを使用しているが、rubygems.orgに登録されていないので手動でインストールする必要がある。
ruby2ch
- rubygems.org
- onodes/ruby2ch - GitHub
- バージョン: 0.1.2 (2011/12/13)
- 自動テスト: なし
- サポートしている掲示板: 2ちゃんねる(デフォルトで2ch.netを参照)
rubygems.orgに記載されている累計ダウンロード数はもっとも多いが、現状では正常に動作しない箇所が多いため、素人にはお薦めできない。
Ruby2ch::Board.new(url)
でスレッド一覧を取得できる。ただし、ニュース速報板以外のスレッド一覧は正常に取得できない。
Ruby2ch::Dat.new(url, title)
で、DATファイルをダウンロードしてパースした結果が取得できる。DATはbg20サーバーから取得する。パース用の正規表現がマッチせず、パースに失敗する場合がある。Ruby2ch::Board#new
で利用されることを意図して作られており、title
にはsubback.htmlのスレッドへのリンクのラベルを渡すようになっている。ただし、ラベルからスレッドのタイトルを取り出す正規表現は現在の形式に対応していない。Ruby2ch::Dat#impetus
でスレッドの勢いを取得できる。
Ruby2ch::Thre.new(url)
でスレッドを読み込むと、MechanizeによってスレッドのHTMLを取得し、パースを行う。レスの本文は@res
という配列に入れられ、投稿者名は@name
という配列に入れられる、といった作りになっている。Ruby2ch::Thre#impetus
でスレッドの勢いを取得できる。
This document is licensed under CC0.