ソーシャル系サービスのリンク数取得について
個人的にはあまり積極的には使っていないのですが、Facebookの「いいね」Google+の「+」Twitterの「ツイート数」はてなの「はてブ数」などは、URLに対して行うことができ、そのサイトを見るにあたって参考にするということがあると思います。また、各サービス側では、そのリンク数を表示するウィジェットを用意しており、ホームページのヘッダ等に組み込むことが結構ありますね。
このブログ自体には組み込んでいないですが、まぁ、そのうちに組み込むかもしれないです。たまにはデザインを見なおした方がいいかな、とも思ってるので。
というわけで、それらのサービスのリンク数を取得する方法をちょっと調べてみたついでにブログを書いてみます。
はてなのブックマーク数
みんな大好きはてなさんのサービスです。ブックマーク数に関しては公式APIがありました。
$url = "http://www.yahoo.co.jp/";
$url = "http://api.b.st-hatena.com/entry.count?url=" . urlencode($url);
$data = file_get_contents($url);
if ($data) {
echo $data;
}
ちなみに結果は11400になりました。すごく簡単ですね。
Facebookのいいね数
これも調べたらすぐわかりました。こちらも公式APIになります。まぁ、簡単な例がありましたのでこちらのサイトを参考にしても良いでしょう。[PHP]FacebookのAPIを使って、特定のURLのいいね数を取得する
$url = "http://www.yahoo.co.jp/";
$fql = urlencode('SELECT total_count FROM link_stat WHERE url="' . $url . '"');
$data = file_get_contents('https://api.facebook.com/method/fql.query?query=' . $fql);
if ($data) {
$xml = simplexml_load_string($data);
echo (int)$xml->link_stat->total_count;
}
ちなみに結果は、11550となります。
Twitterのツイート数
これもググればやっている人が何人かいるので、すぐできます。ただ、どうやらこれは公式のものではないので、変更されてしまう可能性もあります。ここでも、また、ここでも公式じゃないから、それを理解してやってね、的な話になっています。
$url = "http://www.yahoo.co.jp/";
$url = "http://urls.api.twitter.com/1/urls/count.json?url=" . urlencode($url);
$data = file_get_contents($url);
if ($data) {
$object = json_decode($data);
echo $object->count;
}
ちなみに52704でした。
Google+の+数
なんて読むわからないw これですが、これもググればわかるのですが、あまり日本の方は積極的に調べていないようで、だいたい英語のサイトに引っかかります。また、Twitterと同じく公式APIではありません。ここ辺りを読むと、まぁ、そのうちにできるだろうと思うのですが、非公式の方法で調べることができます。これを実際にやってみると数が取得できます。なんだか「AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ」という文字列が穏やかじゃないですね。というわけで、こんな感じになります。
$url = "http://www.yahoo.co.jp/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
$curl_results = curl_exec ($ch);
curl_close ($ch);
$parsed_results = json_decode($curl_results, true);
echo $parsed_results[0]['result']['metadata']['globalCounts']['count'];
ちなみに結果は、2304になりました。
これらの数ってうまいこと使えばなんか楽しそうな気がするんですよね。今は考えを温めている最中なのですが、いいアイデアがあったら早速組み込みたいなぁ、と。
Shin Ohno 2003-2012