Showing posts with label Disqus. Show all posts
Showing posts with label Disqus. Show all posts

Nov 24, 2008

TypePad Connect Betaサービス

Six ApartがDISQUS風のサービスを始めたようですね。

TypePad Connect Beta を開始 | MovableType.jp
TypePad - TypePad Connect Beta - Home

埋め込み用のJavaScriptだけ見たら、DISQUSのOEMだと言われても信じちゃうくらいですよね(笑)

今のところ、TypePad/TypeKeyのアカウント(とユーザ資産)を流用できる点を除いては、先発のサービスに対するアドバンテージはほとんど見当たりません。残念ながら現時点では、私を含めDISQUSのユーザの食指を動かすに至らないのではないかと思います。

是非とも後発のメリットをいかしたサービスにしていってもらいたいです。特にDISQUS | API並みのAPIはどうしても欲しいところですよね。

Oct 15, 2008

Disqus Exporterでインポートしたコメントを verifyするには

Disqus Exporter for MTを使ってMTのコメントをDIQUSにインポートすると、「Unverified」コメント(DISQUSのアカウントを持っていないユーザのコメント)として登録されてしまいます。

これは妥当な仕様です。コメンターのメールアドレスなどを自動的にDISQUSアカウントに関連付けてしまうと、API経由で人のコメントを捏造できてしまいます。API経由でコメントをポストするたびに、アカウントを持っているユーザ自身にそのコメントの承認要求を送って承認させるという方法もあり得ますが、何年の前からの自分のコメントを承認するのはバカバカしい作業ですし、結局その承認システムへのスパミングが可能になってしまうので意味がありません。

しかし、後からDisqus Exporterで変換したコメントをDISQUSアカウントに統合する方法が「ないこともない」です。

UnverifiedコメントをDISQUSアカウントに統合する方法

まず、DISQUSで新たに「Unverified」コメントをポストします。DISQUSからログアウトして名前とメールアドレスを入力してポストすればUnverifiedコメントになります。このとき、メールアドレスに以前MTコメントをポストするときに使ったのと同じアドレスを使います。

ポストしたコメントのユーザアイコンにフォーカスを合わせると、以下のようにポップアップ表示されます。

ちなみにコメンター画像が表示されているのは、メールアドレスがGravatarに登録してあるためです。登録していない場合にはデフォルト画像が表示されます。

このポップアップ内の「unclaimed profile」というボタンをクリックしてみましょう。下のようにユーザ画面が表示され、先ほどコメントをポストする際に入力したメールアドレスを使って投稿されたすべてのDISQUSコメントが一覧できるはずです。

今から行う作業は、これらのすべてのコメントをVerifyすることでDISQUSアカウントに統合することを意味します。DISQUSアカウントに統合されたコメントは、DISQUSユーザの管理画面で一覧することができますし、コメンターの意志で削除することもできます。

上の画面で「Claim Profile」というボタンをクリックしてみましょう。ログイン画面が表示されます。DISQUSのユーザ名とパスワードを入力して、ログインします。

下のようにVerifyするためにメールアドレスの入力フォームが表示されます。入力して「Done」をクリック。

しばらくすると、Verify用のURLが記載されたメールが届きます。Verifyしてみましょう。投稿したコメントと、そのコメント投稿時のメールアドレスを使用した過去のコメントすべてが、DISQUSアカウントに統合されるはずです。

まとめ

  • Disqus Exporter for MTでDISQUSにインポートしたコメントはUnverifiedコメントになる。
  • Unverifiedコメントは、(サイトオーナーではなく)コメンター自身の意志でDISQUSアカウントに統合することができる。その手段はDISQUSが提供している。
  • UnverifiedコメントをDISQUSアカウントに統合するとき、同じメールアドレスでポストされた他のすべてのUnverifiedコメントも同時に統合される。
  • 一旦Verify作業を行った後、他のサイトオーナーがDisqus Exporterを使ってインポートしたとする。その場合、同じメールアドレスを持つUnverifiedコメントが追加され得る。(どこのブログでもいいので)ふたたびverify作業をすればその時点までに追加された分が統合される。

Oct 10, 2008

Disqus Exporter for MT

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を編集して、以下の定数を適切に設定してください。

  • BLOG_ID
    ブログIDを指定します。
  • SHORT_NAME
    DISQUS | Add a websiteで作ったフォーラムのShort nameを指定します。
  • ANONYMOUS_EMAIL
    メールアドレスがないコメントに付与するダミー用のメールアドレスを指定します。
  • USER_API_KEY
    http://disqus.com/api/get_my_key/で取得できるUser Keyを指定します。DISQUSにログインしている状態でないと取得できません。

以上でインストールはおしまいです。

利用方法

コマンドラインから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の処理能力のせいでたまに失敗することがあるというだけです。気にせずに再度実行してみてください。ダメな場合、コメント欄で教えてください。

Oct 8, 2008

WWW-Disqus

WWW-DisqusというPerlモジュールを書いてみました。StraightforwardにDISQUS APIを叩くためのインタフェースを提供しています。

ogawa - Revision 637: /trunk/WWW-Disqus

こんな感じで使えます。詳しくはDISQUS | APIを参照。

#!/usr/bin/perl
use strict;
use warnings;
 
use WWW::Disqus;
 
my $forum_name = 'your forum short name';
my $user_api_key = 'your user api key';
 
my $api = WWW::Disqus->new;
$api->user_api_key($user_api_key);
 
my $forum_id      = $api->get_forum_id($forum_name);
my $forum_api_key = $api->get_forum_api_key($forum_id);
$api->forum_api_key($forum_api_key);
 
# The above 3 lines can be rewritten by using a helper method:
# $api->set_forum_api_key_by_forum_name($forum_name);
 
use Data::Dumper;
print Dumper( $api->get_thread_list() );

で、いくつか試した結果、DISQUS APIには以下のような疑問点があることが分かりました。

  • update_threadでslugを設定する際、アンダースコアを含む文字列を設定できない。
  • thread, postを削除するインタフェースが存在しない。
  • (ちょっと自信がないが)thread_by_identifierで生成したthreadとURLを関連付ける方法がない。

洗練の余地が残されていますね。

あと、Wordpressのプラグイン(DISQUS Comment System)には、API version 2が使われていて、これに関するドキュメントがどこにもありません。

Oct 6, 2008

MTに DISQUSを配備するには

MTにDISQUSを配備するにはプラグインを使う方法もあるのですが、私の場合はMTのコメント許可、トラックバック許可を双方ともOFFにした上で、エントリーアーカイブのテンプレートに以下のように書いています。

<div class="comments">
  <h2 id="comments" class="comments-header">Comments and Trackbacks</h2>
  <div id="disqus_thread"></div>
  <script type="text/javascript">
    var disqus_url = '<$MTEntryPermalink$>';
    var disqus_title = '<$MTEntryTitle encode_js="1"$>';
    var disqus_message = '<$MTEntryExcerpt encode_js="1"$>';
  </script>
  <script type="text/javascript" src="http://disqus.com/forums/short_name/embed.js"></script>
  <noscript><a href="http://short_name.disqus.com/?url=<$MTEntryPermalink$>" rel="nofollow">View the discussion thread.</a></noscript>
</div>

short_nameのところには、DISQUSにブログを登録するときに設定したshort nameを指定します。

Oct 5, 2008

このブログのコメントシステムにDISQUSを使い始めました

Movable Type組み込みのコメントシステムを使うのを止めて、DISQUSという外部コメントシステムにアウトソースすることにしました。

サイトオーナーにとっては、スパムコメントや再構築のオーバーヘッドの心配をする必要もなく、スレッド機能やユーザ・コメントのレーティング機能を備えたコメントシステムが利用できるというメリットがあります。あ、おまけでトラックバック機能も付いています。

DISQUSのアカウントがなくてもコメントはできますが、一旦DISQUS | Login or Sign Upでサインアップしてアカウントを作っておけば、アバター機能やコミュニティ機能が使えたり、自分が書いたコメントを一覧できたりするのでお勧めです。

IntenseDebateやSezWhoでも良かったのですが、IntenseDebateは(多分)一時的にInvite Codeがないと登録できないようになっていて今は利用できません。DISQUSがサービスを終了しちゃったらとか、はてながはて子を始めたらとか、つまらない心配はしていません。相互に変換するためのツールもそのうちできるでしょうから。自分のところにユーザを連れてくるには相手からユーザを奪うツールが必要になりますからね。いざとなったら自分で書けばいいんです。

日本でいまいち流行っていないのは、多くのブログシステムで組み込みのコメントシステムと外部コメントシステムを同期する仕組みが提供されていないためかもしれません。外部コメントシステムがDISQUS APIのようなAPIを備えるようになったのもつい最近のことなので仕方のないことですけどね。Movable TypeのコメントデータをDISQUSに統合するようなツールくらいはそのうち作ってもいいかなと思っています。