朔API
朔には3つのAPIがあります。 あまり洗練されたものではありませんが…。
キャッシュファイル
キャッシュファイルを直接読み書きすることができます。 Perl版開発の頃から、 キャッシュファイルへのアクセスが簡単にできるよう設計してきました。 詳しくは朔のキャッシュ構造をご覧ください。
Pythonライブラリ
from shingetsu.cache import *
としてライブラリを読み込み、
それを経由してキャッシュを読み書きすることができます。
キャッシュファイルを直接読むのとの合わせ技の使用例を挙げます:
レコードから朔のキャッシュを生成するスクリプト
HTTP経由のAPI
これが本題です。 「(新月ネットワーク)-(朔本体)-(UI)-(ユーザ)」のような システムを作ることができます。 現在の朔では過去の書き込みを1ヶ月を目安にして消していますが、 これはもし長期間書き込みを保存したいのであれば、 上のようなシステムを自分にとって使い易いように作ってほしいからです。 「(新月ネットワーク)-(1ヶ月分のキャッシュ)-(全ての書き込み)-(ユーザ)」 という形です。 こうすることによって、新月について最初に考えていたように、 新月はデータの通信部分であり、その上のソフトウェアは多様である、 という構造になることを期待しています。
gateway.cgi
/gateway.cgi/csv/index/file,stamp,date,path,uri,type,title,records,size
のように呼び出すことによって、掲示板の一覧をCSV形式で得ることができます。
indexの部分は次のどれかです。
- index
- 一覧(文字コード順)。
- changes
- 一覧(最終書き込み時刻順)。
- recent
- 最近の書き込み一覧。
file,stamp... の部分は次のうちから取捨選択できます。
- file
- ファイル名。
- stamp
- 最終書き込み時刻(Unix時刻)。
- date
- 最終書き込み時刻(人間向け形式)。
- path
- URIのパス部分。
- uri
- プロトコル、ホスト名も含めたURI。
- type
- 掲示板の種類。
- title
- 掲示板のタイトル。
- records
- 書き込み数。
- size
- ファイルサイズ。
server.cgi
server.cgiはノード間の通信だけではなく、
ノードとUIの間のインタフェースとしても機能します。
例えば/server.cgi/get/thread_66726565/1147012194-
のようにすると、
指定時刻以降の書き込みを一覧出力します。
詳しくはプロトコルをご覧ください。
thread.cgi
/gateway.cgi/掲示板タイトル
として
キャッシュにない掲示板を
新月ネットワークからダウンロードすることができます。
書き込みフォームを埋めるようなデータを作ってPOSTすれば 書き込みをすることができます。 cmd以外は任意ですが、 name,mail,attach,bodyのどれか1つはデータがなければなりません。 通常のPOSTのほかにmultipart/form-dataが使えます。
- cmd
- 常に"post"。
- file
- 掲示板のファイル名。
- dopost
- 書き込みを伝播するかどうか。
- error
- 書き込み時刻に誤差を入れるかどうか。
- name
- 投稿者の名前。
- 投稿者のメールアドレス。
- password
- 署名のためのパスワード。2chでいうトリップ。
- file
- 添付ファイル。 これを使うときはmultipart/form-dataでなければならない。
- suffix
- 添付ファイルの拡張子(最初のドットも含める)。 "AUTO"にしておくと添付ファイルの名前から自動で生成する。
- body
- 書き込み本文。