Help us understand the problem. What is going on with this article?

乱立するRubyの2ちゃんねる関連ライブラリの比較

More than 3 years have passed since last update.

いずれのライブラリも書き込み機能はなく、2015年3月から導入された2ch.netのAPIにも対応していない。

特記がない限り以下の機能を持つ。

  • 掲示板の一覧を取得(http://menu.2ch.net/bbsmenu.htmlをパース)
  • スレッド一覧を取得(subject.txtをパース)
  • スレッドのレスを取得(DATファイルをパース)
    • :warning: 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ヘッダーなども利用できる。

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.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした