はてなとdel.icio.usの被ブックマーク数を得るプラグイン(その1)

2007年1月2日
このプラグインを改良したバージョンを公開しました。
Movable Type 3.3以降専用ですが、より簡単に利用できるようになっています。

先日、「ソーシャルブックマーク用リンクを設置」というエントリーを書きました。
その中で、「ブックマーク用リンクの横に被ブックマーク数を表示」「被ブックマーク数ランキング」といったことをあげましたが、そのためのプラグインを公開します。

作業量がそこそこ多いので、3日に分けて解説します。
今日は、「はてなとdel.icio.usを自動巡回して、各エントリーの被ブックマーク数を収集する」ということを取り上げます。

1.開発の動機

話に入る前に、このプラグインを作った動機から紹介しておきます。
先日、lomoさんのBlogで、「MTにSBMの被ブックマーク数を表示させる」という記事を読みました。
その中に、以下のような話がありました。

ちょっと思ったんですが例えばこのカウント数をランキングっぽくリストアップしてくれたりなんかしたらblogのHOT エントリーってページが作れそうです。
単なるアクセス数じゃないから客観的に面白いと評価されたエントリーなわけですよねぇ??
そんな機能がちょっと欲しいなぁと呟いてみます。

「なるほど」と思ったので、実際にプラグインにしてみることにしたわけです。

2.動作の概要

このプラグインでは、エントリーごとの被ブックマーク数でランキングを行うために、はてなとdel.icio.usを自動巡回して、Blogの各エントリーの被ブックマーク数を集めるという処理を行います。
最初は、サーバーにスクリプトを置いて、定期的に巡回の処理をさせようと思いました。
しかし、del.icio.usが重くて処理に時間がかかり、サーバーに負荷がかかりました。

そこで、巡回の処理は自分のパソコンで行い、巡回結果をサーバーに送信して、MTのデータベースに保存する、というようにしました。
なお、巡回処理はWindows Scripting Host(Windowsの各種の操作をスクリプトで自動化する機能)で行います。
そのため、当プラグインを使うには、現状ではWindowsのパソコンが必要です。

また、巡回結果を保存するCGIと、被ブックマーク数を表示するプラグインは、MT3.2用に作ってあります。

3.プラグインのダウンロード

まず、以下のリンクをクリックして、zipファイルをダウンロードし、ファイルを解凍します。

BookmarkCount.zip

4.CGIの書き換え

ファイルを解凍すると、「plugins」と「local」というフォルダができます。
「plugins」フォルダの中に「BookmarkCount」のフォルダがあり、さらにその中に「mt-set-bookmark-count.cgi」というファイルがあります。
そのファイルの中で、以下の2箇所を書き換えます。

・1行目:「#!/usr/bin/perl -w」
お使いのサーバーのPerlのパスに合わせて書き換えます。

・3行目:「use constant PASSWORD => 'password';」
このCGIにアクセスするためのパスワードを設定します。
例えば、パスワードを「mypass」にするには、以下のように書き換えます。

use constant PASSWORD => 'mypass';

5.ファイルのアップロード

上述の「plugins」フォルダの中身を、Movable Typeの「plugins」ディレクトリにフォルダごとアップロードします。
(Movable Typeの「plugins」ディレクトリの中に「BookmarkCount」ディレクトリができ、さらにその中に「mt-set-bookmark-count.cgi」等のファイルがアップロードされるようにします)

6.vbsファイルの書き換え

解凍してできたファイルのうち、「local」フォルダにある「getbookmarkcount.vbs」ファイルを、自分のパソコンの任意のフォルダに保存します。
そして、このファイルの以下の2箇所を書き換えます。

・3行目:Public Const CGIURL = "・・・"
5.の手順で「mt-set-bookmark-count.cgi」ファイルをアップロードしましたが、そのURLを上に「・・・」の部分に指定します。

・5行目:Public Const Password = "password"
上の「password」を、CGIの3行目で指定したのと同じパスワードに変えます。

7.巡回の準備

巡回をしやすくするために、以下の手順でそのファイルのショートカットを作ります。

  • (a)エクスプローラ等で「「getbookmarkcount.vbs」ファイルを右クリックし、[ショートカットを作成]メニューを選びます。
  • (b)(a)できたショートカットを右クリックし、[プロパティ]メニューを選んで、プロパティのダイアログボックスを開きます。
  • 「リンク先」欄にスクリプトのファイル名が入力されていますが、その先頭に「cscript.exe」とスペースを追加します。
  • BlogのIDが1番ではない場合は、スクリプトのファイル名の後ろにスペースを入れ、その後に「blog_id=番号」を入れます(例:blog_id=2)。
  • 「OK」ボタンをクリックします。

↓ショートカットの設定
ショートカットの設定

8.巡回を行う

7.の作業を行うとショートカットができますが、そのアイコンをダブルクリックすると、巡回が始まります。
巡回中は、コマンドプロンプトのウィンドウが開き、巡回状況が表示されます(エントリーのIDとはてな/del.icio.usの被ブックマーク数)。
巡回が終わるとその結果が自動的にサーバーに送信され、MTのデータベースに書き込まれます。
すべての処理が終わると、巡回結果のメッセージが表示されます。
以下のように、メッセージの中に「bookmark count set OK」と表示されていれば、処理は正常に行われています。

↓巡回終了時のメッセージの例
処理終了メッセージ

なお、エントリー数に応じて、巡回には時間がかかります。
ちなみに、当Blogの現状のエントリー数(約360)だと、巡回が終わるのに10~20分ほどかかります。

9.参考

巡回のスクリプトを作るにあたり、lomoさんのBlogを経由して、以下のエントリーを参考にさせていただきました。

Blog::Rescue
del.icio.us でブックマークされた数を表示
はてぶでブックマークされた数を表示