WWW-Disqusを使って、MTのコメントをDISQUSにブッこむツール「Disqus Exporter for MT」を作りました。このブログの過去コメントもすでに全部DISQUSに移行してあります。
DisqusExporter-0.1-dev.zip
ogawa - Revision 607: /trunk/DisqusExporter
注意点
インストール方法などを説明する前に注意点を述べておきます。
- 発火などの危険はありませんが「実験室」クオリティです!
- disqus-exporter.plをWeb reachableにするとUSER_API_KEYを盗まれます!
- 盗まれると(つーか流出させると)そのDISQUSアカウントの管理下の全ブログにスパムコメントの絨毯爆撃が可能になります!
- PublishCharsetがUTF-8のブログでしか動作確認していません!多分UTF-8以外では無理!
- 実はMT3で動作確認しています!でもMT4以降でもきっと大丈夫!
あと、これはTipsですが、DISQUSにブッこまれたコメントは、MT側では「保留中のコメント」に変更されます。Disqus Exporter for MTをインストールする前に「保留中のコメント」を不要なら消去しておくと、都合がよいケースがあります。例えば、「このツールでDISQUSにブッこむ→やっぱりなかったことにしたい」という場合、あとで「保留中のコメント」をまとめて「公開」するだけで済みます。
インストール方法
まず、パッケージの中のtools, extlibの中身をMTの対応するディレクトリにコピーしてください。
パッケージにはMakamaka Hannyaharamitu / JSON-1.15 - search.cpan.orgが同梱されています。コピーする際にMTのextlibに含まれている古いJSONモジュールを、同梱されているJSONモジュールで置き換えることを忘れないでください。
コピーが済んだら、toolsディレクトリがWebなどで外部からアクセスできないことを確認してください。絶対に確認してください。
確認が済んだら、次にtools/disqus-exporter.plを編集して、以下の定数を適切に設定してください。
以上でインストールはおしまいです。
利用方法
コマンドラインからtools/disqus-exporter.plを実行するだけです。MTのコメントが順次DISQUSにイクスポートされ、イクスポートに成功したコメントはMT側では「保留中のコメント」に変更されます。保留中のコメントに設定するのは、再実行した際に同じコメントを複数回イクスポートするのを防ぐためです。
実行が完了すると以下のような統計情報が表示されます。
$ cd <MT_DIR>; tools/disqus-exporter.pl
-----------------------------------
Statistics
-----------------------------------
Processed entries: 100
Skipped entries: 30
Exported comments: 200
Failed comments: 5
-----------------------------------
Permalinks without Disqus threads
-----------------------------------
http://www.example.com/blog/archives/000745.html
http://www.example.com/blog/archives/000753.html
http://www.example.com/blog/archives/000756.html
http://www.example.com/blog/archives/000759.html
(snipped)
上の例では、100件のエントリーが処理され、30件のエントリーの処理がスキップされています。また、200件のコメントのイクスポートに成功して、5件は失敗しています。
なぜエントリーの処理がスキップされたかというと、そのエントリーアーカイブに対するDISQUSのスレッドがまだ作成されていない(そのエントリーアーカイブがブラウザなどで閲覧されてコメントフォームが表示されるまで作成されない)ためです。「Permalinks without Disqus threads」以下に表示されているのは、そのようなエントリーアーカイブのURLです。片っ端からブラウザで閲覧するかしばらく放置してからtools/disqus-exporter.plを再度実行すればスキップされずに処理されるでしょう。
またなぜイクスポートに失敗したコメントがあるかというと、APIの処理能力のせいでたまに失敗することがあるというだけです。気にせずに再度実行してみてください。ダメな場合、コメント欄で教えてください。