2ch を JSON に変換するサーバ作った
2ch のデータをパースして JSON に変換する API サーバ 2son を作った。 http://twoson.herokuapp.com/
Heroku 便利
できること
- 以下のデータを JSON に変換できる
- 板一覧 (bbstable)
- スレッド一覧 (subject)
- スレッド (thread)
- dat 落ちスレッドにも対応
- コールバック関数を指定すれば、JSONP を取得することもできる。
仕様
トップページで API の呼び方、返ってきた JSON の書式を説明してある。 http://twoson.herokuapp.com/
いろいろ
Ruby 1.9.3 で開発。Ruby の勉強がてら組んでみた。
データ取得
ブラウザで表示する形式、つまり read.cgi を通してスレッドを取得するのはサーバーに負荷がかかるし、またパースするもの面倒やからよろしくない。したがって、データが欲しい時場合スレッド一覧は subject.txt、スレッドは dat ファイルを直接読みに行くのが推奨される。これらのファイルは1行1(スレッド | レス)で、デリミタは <> になっとってパースもしやすい。このへんは開発資料で詳しく解説してある。
また、通信量低減のためにレスポンスは gzip でもらう。リクエストヘッダに
"Accept-Encoding": "gzip"
を付与する。もちろんもらった後は解凍処理が必要。
あと、データのエンコーディングは Shift-JIS やから nkf で UTF-8 に変えると良い。必要なら。
※ Flash "UNIX" の元ネタになった閉鎖騒動で gzip 圧縮が実装されたらしい
dat 落ちスレッドの dat 取得
みみずん検索からダウンロードするようにしてある。下の URL で dat 落ちスレッドの dat も取得できる。
http://mimizun.com/log/2ch/#{板名}/#{スレッド番号}.dat
dat 落ちスレッドかどうかは、まず通常の dat を取りに行ってステータスコード 200 が返ってくるかどうかで判定しとる。dat 落ちなら 203 が返される(はず)。
Todo
- テストをかく
- キャッシュ実装
ソースコード
github に上げてある。 dtan4/2son
とりあえず Rails で組んだけど、MVC の C しかまともに使ってないからもっと軽量なフレームワークで組めるはず。組むべき。