「いいね!」ランキングを作る ~ 準備編

Posted by
ぴろり
Posted at
2011/02/05 00:25
Trackbacks
関連記事 (0)
Comments
コメント (2)
Post Comment
コメントできます
Category
開発メモ カテゴリ
カバーイメージ
  • Like
  • Photo by Adam Fagen
    • Attribution
    • NonCommercial
    • ShareAlike

サイトに設置した「いいね!」の押され具合をデータで解析する方法
 たとえばWeb担では、APIで取得したデータを使って、Facebook「いいね!」数の多い順に人気記事ランキングを出せるようにしてあります。

 これ、いいね! ちょうど先日、このブログでもブログ記事に「いいね!」ボタンを設置したばかりですので、早速、「いいね!」数の多い記事ランキングを真似て作ってみたいと思います。まず、ブログ記事ごとに「いいね!」された数を集計するスクリプトを書いてみました。このスクリプトを実行すると、サイトマップを読み込んで、集計された結果を XML で吐き出すことができます。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

はじめに

 任意のコンテンツの URL に対して API 問い合わせを行うことで、その URL に対する「いいね!」された数を取得することができます。しかし、個々の URL ごとにデータを取得することはできても、自分の管理するドメイン全体を横断した合計値などは取得することができないようです*1
 仕方ないので、非効率的ながらも個々の URL ごとに問い合わせを行い、その結果を自前で集計することにします。ここで、集計の対象とする URL の一覧をどのように準備するか、という問題がありますが、幸い Google ウェブマスターツール向けに作ったサイトマップには、このブログで管理しているページの全ての URL が列挙されています。そこで、スクリプトにサイトマップを食わせると、そこに書かれた URL を対象に集計を行うようにしてみました*2
 また、集計結果は汎用的に使いまわせるように XML として生成することにします。公開 Web サーバに集計スクリプトを設置し、cron などを利用して定期的にスクリプトにサイトマップを食わせてやればよいでしょう。

ダウンロード

 最新版のダウンロードやバグレポートは、Trac リポジトリ上で行っています。ファイルは、ページ下方の Download in other formats → Original Format で取得できます。

使い方

 集計用スクリプトは Perl で書かれており、以下のようにコマンドラインから実行できます。

Usage: perl ranking.pl <sitemap.xml> [[<item count>] <sort column>]

# perl ranking.pl sitemap.xml > result.xml
# perl ranking.pl sitemap.xml 10 > result.xml
# perl ranking.pl sitemap.xml 10 total_count > result.xml
sitemap.xml
 問い合わせる URL を含んだサイトマップを指定します。スクリプトが読み込める URL の数に制限はありません*3。圧縮や分割などされていない、プレーンな XML ファイルの必要があります。
item count
 抽出するアイテムの数を指定します。省略した時のデフォルト値は 30 です。
sort column
 ランキングの並び替え順を指定します。share_count(シェアされた数)、like_count(「いいね!」された数)、comment_count(コメントされた数)、total_count(それら全ての合計) の何れかを指定します。省略時のデフォルト値は like_count です。

いろいろ

  • 生成された XML ファイルの使い方はまた今度
  • ライセンスは GPL とします
  • アクセス過多にならないように標準で 1 秒のウェイトを入れてあります
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

  1. *1 インサイトを利用すれば可能なのかも? このサイトでも設置してみたけれど上手くデータを取得できなかった。
  2. *2 サイトマップが無い? 頑張って作ってください⊂⌒~⊃。Д。)⊃
  3. *3 が、サイトマップの制限はあるかもしれません

この記事を読んだ人はこんな記事も読んでいます記事リコメンデーションについて

カバー画像:Open Graph Protocol 付きで「いいね!」ボタンを設置する

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

寄せられたコメント (全 2 件中、最新 5 件まで表示しています)

Posted by
匿名
at
2011/02/06 14:21
ID
iokagnbY
Topsyのapiを使ってTwitterのリツィート数にも応用できたらおもしろそうですね。
Posted by
ぴろり ◆OLEEi.VOX.ぴろり ◆OLEEi.VOX.
at
2011/02/05 17:09
ID
sdxtctDQ
準備編とか書いたけれど…もしかして記事のタイトルって持ってこれないんじゃね?(´・ω・`)

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。