• 追加された行はこの色です。
  • 削除された行はこの色です。
[[monazilla]]

#contents

**概観

***リクエスト
 GET /board/dat/0000000000.dat HTTP/1.1
 Host: server.domain.dom
 User-Agent: Monazilla/1.00
 Connection: close
 Accept-Encoding: gzip
 

***データ
 名前<>E-mail<>日付とIDとBE<>本文<>スレッドタイトル
 名前<>E-mail<>日付とIDとBE<>本文<>
 名前<>E-mail<>日付とIDとBE<>本文<>
 名 </b>fusianasan.2ch.net<b>前<>E-mail<>日付とIDとBE<>本文<>
 名前 </b>◆ozOtJW9BFA <b><>E-mail<>日付とIDとBE<>本文<>
 キャップ ★<>E-mail<>日付とIDとBE<>本文<>
 名前 </b>◆ozOtJW9BFA <b>@キャップ ★<>E-mail<>日付とIDとBE<>本文<>
 あぼーん<>あぼーん<>あぼーん<>あぼーん<>あぼーん
 ...
 
 # E-mailはURLエンコード、他の値はすべてHTMLエンコード。
 # スレッドタイトルは、&gt;&gt;1にしか書かれません。
値はすべてHTMLエンコード。
スレッドタイトルは、1にしか書かれません。
ただし、削除跡(レス削除、スレ停止、スレ移動)等では、スレッドタイトル部分にも削除表示があります。

**用語の定義

以下のために用語の定義をしておくと、
&lt;を&amp;lt;とする方法をHTMLエンコード、
&lt;を%3Cとする方法をURLエンコードとします。
&lt;を&amp;lt;とする方法をHTMLエンコードとします。

|~文字|~a|~&lt;|~&gt;|~&amp;|~&quot;|~あ|h
|~HTMLエンコード|a|&amp;lt;|&amp;gt;|&amp;|&quot;|あ|
|~URLエンコード|a|%3C|%3E|%26|%22|%E3%81%82|
|~HTMLエンコード|a|&amp;lt;|&amp;gt;|&amp;|&amp;quot;|あ|

HTMLエンコードは、&lt;と&gt;しか見ていないようです。
HTMLエンコードは、全ての欄で&lt;と&gt;、名前欄とメール欄で&quot;を変換しているようです。
そのことを利用したAAなどもありますから、できることなら
特殊文字(&amp;hearts;など)や実態参照(&amp;#ddや&amp;#xff;など)も
理解できるようにしておきましょう。

**規則
文字コードは通常ではShift_JIS、http://be.2ch.net/ではEUC-JP。
改行コードは\n。
投稿者が記入したものはHTMLエンコードされています。

文字コードはShift_JIS、改行コードは\n。

/board/dat/0000000000.datにファイルが置かれています。
この0は、実際は任意の数字で、subject.txtを読むことで調べられます。
リクエストの他の行も[[subject.txtの仕様]]で説明しているので、
そちらを読んでください。

***名前
HTMLエンコードされています。
read.cgiでは、名前を太字で表示するためにBタグを付加しますが、
datでは単純な名前のみの記録です。

◆という文字があれば、それ以降の10文字はトリップです。
fusianasan等のホスト表示では、手入力の文字列と区別するために、
太字ではなく通常表示となっており、ホストの前に</b>で太字を終わらせ、
ホストの後に<b>で再び太字にしています。
このタグはdatに記録されています。

◆という文字があれば、それ以降の10文字(古い投稿では8文字)はトリップです。
トリップも通常表示とするために、同様に</b>と<b>で挟まれています。

普通に文字として◆を書くと、◇にされてしまいます。
ほかに、★と●は、特殊な条件の人しか使えません。
同様に、★と●も特殊な条件の人しか使えず、☆と○にされます。

***E-mail
URLエンコードされています。
AタグのHREF属性の値として使われる事が多いかと思いますが、スペースや
シングルクォートはHTMLエンコードされずに、そのまま書き込めることに注意しましょう。

***日付とID
HTMLエンコードされています。

IDが付く板の場合、日付のあとにID:xxxxxxxxのようにIDが付いてきます。
なぜかまとめて格納されていますが、
おそらく、IDは後から追加されたデータなので、
過去のブラウザを修正しなくてもいいように、配慮したのではないかなと。

また、2004/12あたりから、[[BE@2ch掲示板]]のプロファイルが追加されました。
IDの後に空白で連結されて、BE:xxxxxxのようになります。

このまま使っても問題は起きないと思いますが、分割するには、
&quot; ID:&quot;(先頭に空白が1つあります)という文字列を探して、
見つかったなら、それより前は日付、後はIDとすればいいです。
見つからなければ、IDはありません。BEも同様です。

日付について少し加えると、いろいろな書き方があるようです。
古いものから順にあげていくと、、
 YYYY/MM/DD(W) hh:mm
 YY/MM/DD hh:mm
 YY/MM/DD hh:mm:ss
 
 Y: 年
 M: 月
 D: 日
 W: 曜日 (漢字で1文字)
 h: 時間 (24時間)
 m: 分
 s: 秒

現在では、日付の書式も掲示板設定で変えられるようになっており、
既定通りの記録がなされているとは限りません。
その他、今後も様々なオマケデータがここに付加される可能性があるので、
データの解釈に柔軟性を持たせるのが良いかもしれません。

***本文
HTMLエンコードされています。

改行は&lt;br&gt;になっているので、
適切な改行コードになおすなどしてください。

そうすると、複数の行になると思われますが、
その各行の前後に、空白が1つ付いているのが分かるかと。
何のためにこのような仕様になっているのかは分かりませんが、
ともかく、''普通は''、以下のようになっています。
 " 1行目 "
 " 2行目 "
 " 3行目 "
 ...

↑で普通は、と書きました。
それは、おそらくバグだろうと思いますが、
変なログが、まれに、まぎれ込んでいるからです。
具体的には/unix/1000022300/143で、以下のような形をしています。
 " 1行目"
 "2行目"
 ...
 "最後の行 "

見れば分かりますが、最初と最後にしか、空白がついていません。

**未稿
http://pc5.2ch.net/test/read.cgi/tech/1057329161/188
 188 : ◆ap/yuix/tw :05/01/16 18:22:47
 dat取得の仕様 
 
 hoge.2ch.net鯖のhogehoge板のキーが1234567890のスレッド(http://hoge.2ch.net/test/read.cgi/1234567890/)を取得する場合 
 
 (1)http://hoge.2ch.net/hogehoge/dat/1234567890.datを取得 
 (2)http://hoge.2ch.net/hogehoge/kako/1234/12345/1234567890.dat.gzを取得 
 (3)http://hoge.2ch.net/hogehoge/kako/1234/12345/1234567890.datを取得 
 (4)●がある場合 offlaw.cgiを使用 
 
 (1)から(4)まで、302 Foundになるたびに次に進む

19:52:17


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS