はてなスター投票機能を追加
先日公開した今北川柳が思ってた以上に遊んで頂けているようで、ありがたい限りでございます。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を入れて何度か再取得を試みるようにはしていますが、負荷状況によっては取得できない場合もあるので、ランキングが一部反映されない場合があるかもしれません。
ひとまず、ざっと眺めてみて個人的に面白そうな川柳に自分でスターを付けてみましたが、面白い川柳を見つけたらどんどんスターを付けてみて下さいね〜。(^-^)