2006年07月17日 16:37

コメントをエントリに埋め込み

ソースをお見せすることはできない(あまりに醜い)のですが、考えていたことがようやく形になりました。


以前から思っていたことだったのだけど、コメントを表示するのにHaloScanのサーバーへアクセスするというのはなんかおもしろくなかった。.Macのサーバーはcgiが使えないのでしかたなく外部サービスのHaloScanを使わせていただいているのだけど、いただいたものに関しては.Macのサーバーに保存して表示するというのが本筋のように思えていたわけ。

では具体的にはどうするか。以前、iBlogを使っていたときにはJavaScriptにコメントを落とし込んで表示するというのを考えていた。というより、會澤のスキルではそれ以外考えられなかなった。結局完成しなかったけど、HaloScanから落としたxmlファイル(コメントがスレッドとともに収められている)をコンバートしようとしていました。

NanoBlogger(以下NB)ではコマンドラインと密接に関係している(というか、コマンドラインそのもの)ので、JavaScriptにすると言うよりもエントリそのものに埋め込んでしまう方法が選択できると思いました。NBでは「data」というフォルダに全てのエントリがテキストファイルの形で収められています。このテキストファイル中にHaloScanから落としたxmlファイル中のデータを埋め込んでやった上でアップデートをかけるとhtmlファイルの方にもその変更が反映されます。

とはいうものの、問題がありました。HaloScanではデータをダウンロードする際に認証が必要になります。この認証をパスする方法など、現在の會澤には備わっていないわけで、手動でダウンロードしてやり、それを加工するしかありませんでした。これでは不便です。自動化できればいいのですが...

HaloScan にはコメントを CAIF という一種の XML としてエクスポートする機能があります。これを利用して全てのコメントをダウンロードし、スレッド(エントリ)毎に別ファイルにしてしかも日付順にソートするコマンドを作ってみました。

HaloScan コメントを一気にダウンロードするコマンド から2006年7月17日に引用

iBlog時代からお世話になっているOKAMURAさんの上記エントリがトリガーになって自動化への道が開けました。あとはxmlファイルを展開し、必要なデータを「data」フォルダのテキストファイルに落とし込んでやればいいと言うことになります。

...と、簡単にいいましたが、これが大変。試行錯誤の上、ようやく形になりました。納得いくものではないのですが、まぁキチンと表示されますから良しとしましょう。


會澤のblogは別の理由もあって、深夜にフルアップデートがかかります(自動です)。このアップデート直前にHaloScanからのダウンロード・「data」テキストファイルへの埋め込み。を行っておけば翌朝には反映されると言うことになります。

cgiを使ったコメントシステムでは即座にデータが反映されますが、このシステムでは前日に頂いたコメントは翌朝にならないと反映されないと言うことになり即時性ということに関しては著しく劣ります。しかし、コメントをいただく際には依然としてHaloScanのサーバーを利用するしかなく、HaloScanの画面上には直近のコメントも表示されているわけで、それは良しとしておきます。...私のブログですから。


フレームなどを使わず、過去のコメントを参照できるようになり、個人的には満足しています。見た目は後々スタイルシートなどを加工して見やすくするつもりです。最後に、貴重なツールを(いつも)供給してくださるOKAMURAさんにTHANKS!!です。

このエントリに頂いたコメント。この表示は随時更新されます。

by 會澤(2006-07-17T12:05:58-05:00)

これが7/18早朝に埋め込まれていれば成功です。

手動ではうまくいっているのですが、はたしてcronに組み込んだ自動化の中でエラーが出てこないかどうか、どうでしょう。

by OKAMURA(2006-07-18T00:30:29-05:00)

見えてます。大成功ですね。

このコマンド、β版として進化していて Perl プログラミングができると Nanoblogger 用の処理が一気にできるはずです。

そこまでしなくても、タイムスタンプがローカルのものになるとか色々メリットがあるので、そちらもよろしくです。

by 会沢@会社から(2006-07-18T06:49:26-05:00)

このエントリに関しては問題ないのですが、他のエントリで問題が出たので手動で修正してきました。

帰ったら又対策とります。


ところで...

>Perlプログラミングができると


ここで苦戦しているんですよ。今回も無理やりsedなどを使って組んでいます。

コメントを書き込むためには、下の「Comments」リンクをご利用下さい。
このエントリに頂いたコメント。この表示は随時更新されます。

by 會澤(2006-07-17T12:05:58-05:00)

これが7/18早朝に埋め込まれていれば成功です。

手動ではうまくいっているのですが、はたしてcronに組み込んだ自動化の中でエラーが出てこないかどうか、どうでしょう。

by OKAMURA(2006-07-18T00:30:29-05:00)

見えてます。大成功ですね。

このコマンド、β版として進化していて Perl プログラミングができると Nanoblogger 用の処理が一気にできるはずです。

そこまでしなくても、タイムスタンプがローカルのものになるとか色々メリットがあるので、そちらもよろしくです。

by 会沢@会社から(2006-07-18T06:49:26-05:00)

このエントリに関しては問題ないのですが、他のエントリで問題が出たので手動で修正してきました。

帰ったら又対策とります。


ところで...

>Perlプログラミングができると


ここで苦戦しているんですよ。今回も無理やりsedなどを使って組んでいます。

コメントを書き込むためには、下の「Comments」リンクをご利用下さい。

Posted by kaizawa | TrackBacks