Inside.
SSTP
Bottleサービスの過去ログは、トップページからリンクされている「全ログ集」からも閲覧可能ですが、既にブラウザ閲覧用に整形されており、可搬性が高くありません。
オンラインで過去ログを取得するような機能を実装する場合は、http://bottle.mikage.to/fetchlog.cgi
がそのためのインターフェースとして提供されています。特殊な構造は何もない、単なるCGIです。
- 戻ってくるのは、1レコードごとにCR+LFで区切られ、レコード間のフィールドが指定された文字(デフォルトは水平タブ)で区切られた、何の変哲も変換もないテキストです。
- 最初の空行まではヘッダ(HTTPヘッダとは別です)。Result: OKは必ず確認すること、OK以外なら何らかのエラー。Limitヘッダは戻ってくるスクリプト数の最大値です。
- パラメータはGETまたはPOSTメソッドで渡してください。
例
http://bottle.mikage.to/fetchlog.cgi?year_lo=2003&month_lo=1&day_lo=1&limit=50
日付、MID、チャンネル、ゴースト、投票、同意、スクリプト本文の順。
渡すことの出来るパラメータ
※で示された5種類の条件は、互いに組み合わせることができません。
- recent※
- 分数で指定します。現在からrecent分前以降、という意味になります。直近24時間のメッセージを取得する、といった場合などに。後述のyear_loなどと組み合わせてもエラーにはなりませんが、あまり意味はありません。
- year_lo, month_lo, day_lo※
- 3セットで下限日付の条件。(year_lo=2003&month_lo=10&day_lo=3)省略するか、1個でも欠けると「日付指定なし」となる。
- year_hi, month_hi, day_hi
- 3セットで上限の日付。下限があるのに上限が省略、または1個でも欠けると「日付は下限から24時間」と判断(1個目の例)。下限がないのに上限だけ指定、ということは不可能。
- channel※
- チャンネルで条件を絞る。省略すると全チャンネル。複数指定可能です(channel=A&channel=B)。エンコーディングはデフォルトではShift-JISですが、encodingを明示的に指定した場合はそれに合わせてください。
- minagree※
- 同意数の下限で条件を絞る。
- minvote※
- 投票数の下限で条件を絞る。
- limit
- 明示的に戻ってくる最大スクリプト数を制限可能。「1」にしてとりあえず条件に合うものが存在するかどうか見る、など。ただし無限に大きくなるわけではなく、サーバ側のデフォルト制限数をこれで増やすことは不可能。
- offset
- 条件に合うログの一部を取り出す場合に使用する。省略すると1件目のメッセージからダウンロードされます。limitを組み合わせることで、時間順に1000件目から500件だけ抽出、といったことが可能。
- sort
- timeまたはtimedescのどちらかを指定可能。(以前、votesまたはagreesでの指定が可能だった時期がありましたが、負荷の関係上現在は使用できません)
- delimiter
- フィールド区切り文字。デフォルトはタブ記号(0x9)。
- encoding
- 入出力のエンコーディングを指定します。指定可能なのはutf8のみです。無効な値が渡された場合はShift-JISとなります。
改版メモ
- 2010/12/5より、encodingパラメータによるUTF-8での過去ログ出力に対応しました。(現時点でShift-JIS以外でのボトル投稿はできません)
- 2010/12/5のメンテナンス時に、過去ログのスクリプト内に含まれてしまっていたタブ文字やその他コントロール文字を削除しました。