2009年10月26日月曜日

[2ちゃんねるまとめのまとめ] 人気の記事順に並べる機能を追加しました

2ちゃんねるまとめのまとめ は腕利きの2chまとめ職人さんたちが選りすぐったエントリーが並んでいるので、どのエントリーを見てもおもしろいのですが、「人気」順にならべる機能を追加しました。


人気順って?

ぶっちゃけてしまうと、はてなブックマークの被ブックマーク数順です。

被ブックマーク数のチェックははてなブックマーク件数取得APIGETリクエストでのシンプルなAPIってやつを利用しています。

本当にシンプルに数字だけを返してくるので

import urllib, urllib2
url = "http://foo.com"
response = urllib2.urlopen('http://api.b.st-hatena.com/entry.count?' + urllib.urlencode({'url': url}))
count = response.read() # => 50

これだけで被ブックマークが確認できるので楽ちんです。
(エラーとか考えなければ)

今回は、エントリー別の詳細ページに上のコードを仕込んで、キャッシュの期限を適度に設定してみました。
アクセスがあってキャッシュが効いてなければ、はてなにリクエストを投げる仕組みになっています。
返ってきた数字をストレージに保存しておけば被ブックマーク順に並べられるというわけです。


ただ、これだとアクセスがなければずーっと更新されないままになってしまうですよね。

Google App Engineを利用しているのでTask Queueなんかを使えばいいのかもしれませんが、まんべんなくリクエストを投げるのは難しい感じがする。

エントリーの投稿日とか被ブックマーク数の増加率とかを勘案してスケジュールを組めばいけるのかな。
めんどいけど。

0 件のコメント: