はてなスター投票機能を追加

先日公開した今北川柳が思ってた以上に遊んで頂けているようで、ありがたい限りでございます。m(_ _)m

で、見ていると、たまに面白い川柳があるのに、最新10件しか表示していない為に、どんどん流れてしまっていてもったいないので、面白い川柳に投票できる機能を追加してみました。

自前で投票機能を作っても良かったんですが、色々調べてみると、はてなスターを流用できそうだったので、はてなスターでの投票機能に挑戦してみました。

はてなスターボタンを付ける

はてなスターを設置する事自体は実は非常に簡単で、JavaScriptを一つ読み込むだけでできてしまったりします。詳しい説明は、はてなのヘルプに載っています。

今回の場合、以下のHTMLを追加しただけで、はてなスターの機能が動作してくれました。

 <script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
 <script type="text/javascript">
  Hatena.Star.SiteConfig = {
   entryNodes: {
    '.entry': {
     uri: 'dt a',
     title: 'dt',
     container: 'dt'
    }
   }
  };
 </script>

とりあえず、各エントリのページに一意のURLさえあれば、簡単にはてなスターの機能を追加する事ができるようです。素晴らしい!

はてなスターの数を集計する

はてなスターの機能自体は簡単に追加できるんですが、はてなスターの数が多い順に並べるというのが、案外やっかいでした。

"あるURLを含むエントリのはてなスターの数一覧"みたいなAPIがあれば簡単なんですが、さすがにそんなものは用意されていないので、裏で1日1回各エントリのはてなスターの数を集計する事にしました。

あるURLに付けられたはてなスターの情報は、"http://s.hatena.ne.jp/entries.json?uri=xxx"というURLで取得できるようなので、これを使って全エントリのはてなスターの数を取得するようにしています。

たまに取得失敗があるので、その場合はsleepを入れて何度か再取得を試みるようにはしていますが、負荷状況によっては取得できない場合もあるので、ランキングが一部反映されない場合があるかもしれません。


ひとまず、ざっと眺めてみて個人的に面白そうな川柳に自分でスターを付けてみましたが、面白い川柳を見つけたらどんどんスターを付けてみて下さいね〜。(^-^)