#topicpath
*subject.txtの仕様
#contents
**概観
***リクエスト
GET /board/subject.txt HTTP/1.1
Host: server.domain.dom
User-Agent: Monazilla/1.00
Connection: close
Accept-Encoding: gzip
***データ
0000000000.dat<>スレッドタイトル (レス数)
0000000000.dat<>スレッドタイトル (レス数)
...
**規則
文字コードはShiftJIS、改行コードは\nのみ。
subject.txtは、'''/板キー/subject.txt'''に置かれています。
ですが、普通にGETを送ったのでは(規制されていて)読めませんから、
User-Agentを'''Monazilla/1.00'''としなければいけません。
ブラウザの情報を書きたい場合には、
'''Monazilla/1.00 (ブラウザ名/バージョン)'''のように、()の中に書くといいです。
また、転送量が問題になった時から、2chブラウザは、
gzipで圧縮されたものを受け取れるようにするべきだ、という意見があります。
HTTPリクエストに'''Accept-Encoding: gzip'''を加えると、
受け取るファイルがgzipで圧縮されて送られてくるようになります。
解凍する手間はかかりますが、できるだけ対応させてください。
HTTP/1.0の仕様にはAccept-Encodingはありませんから、HTTP/1.1を使いましょう。
***スレッドキー
スレッドキーは、スレッドが立てられた時のtime関数の値(epochからの秒差)で、
大半が10桁になってはいますが、まだ9桁のスレッドもあります。
それから、924ではじまる10桁のスレッドキーがありますが、
そのスレッドは普通に立てられたものではありません。
書き込みできない、しばらくすると勝手に上がってくる、など、
ちょっと変わった特徴があります。
***スレッドタイトル
スレッドタイトルとレス数は一緒になっていますから、
別々に使おうと思ったら(多くはそうだと思う)、分割してやらなければいけません。
分割する際には、スレッドタイトルの後に空白が1つ入っていますから、
不要ならそれを削除してしまってもいいと思います。
具体的には、Cでは、以下のようなコードで分割できます。
p = strrchr(title, ' ');
*p = '\0';
nres = atoi(p+2); /* +2は、空白と開きカッコをスキップ */