全8サイト!SNSのカウント取得方法まとめ 2014年6月版
- 2014.06.15(Sun) 21:30
- WEB制作
TwitterやFacebookのソーシャルシェアボタンをオリジナルデザインにしたかったり、またTweet数やイイネ!数のデータを元にランキングシステムなどを作りたい場合に役立つソーシャルカウントの取得方法をまとめてみました。よろしければ参考にしてみて下さい!
1Twitter
Twitterの場合、下記のURLにリクエストを送ることで、カウント数を取得できます。
http://urls.api.twitter.com/1/urls/count.json?url={目的のURL}
サンプルでGoogleトップページのTweet数を取得してみましょう。下記のリンクにアクセスしてみて下さい。
次のJSONフォーマットのデータがブラウザに表示されます。この場合、220,315がツイート数ということになります。
{"count":220315,"url":"https:\/\/www.google.com\/"}
カウント数が0の場合は、0として結果が返ってくるので、処理の実装が簡単ですね。
{"count":0,"url":"https:\/\/www.goooooooooooooooooogle.com\/"}
1-1PHPでTwitterのカウントを取得
PHPの場合は下記のように取得します。ソースコードをコピーする場合はダブルクリックが便利です!
<?php
//JSONデータを取得
$json = @file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url=https://www.google.com/');
//JSONデータを連想配列に直す
$array = json_decode($json,true);
//カウントを出力
echo $array['count'];
1-2JavascriptでTwitterのカウントを取得
Javascriptの場合は下記のように取得します。なお、jQueryを利用しています。
//チェックするURL
var check_url = 'https://www.google.com/';
//Ajax通信
$.ajax({
url:'http://urls.api.twitter.com/1/urls/count.json?url=' + check_url,
dataType:"jsonp",
success:function(obj){ alert('カウント数は' + obj.count + 'です!'); },
error:function(){ alert('通信に失敗しました…。'); },
complete:function(){ return false; }
});
2Facebook
Facebookの場合は、下記のURLにリクエストを送ることで、シェア数とコメント数を取得することができます。
http://graph.facebook.com/?id={目的のURL}
例えばGoogleトップページのシェア数、コメント数を取得したい場合は次のURLにアクセスして下さい。
次のJSONデータがブラウザに表示されるはずです。sharesの331,625がシェア数、commentsの83がコメント数です。
{
"id": "https://www.google.com/",
"shares": 331625,
"comments": 83
}
Facebookの場合、カウントが0だと0というデータを返しません。そのため、存在しない場合は0というように条件分けをプログラムに加える必要があります。
{
"id": "http://www.golidglkdhfklgogle.com/"
}
2-1PHPでFacebookのシェア数を取得
PHPでFacebookのカウントを取得したい場合は、次のようにします。先ほども説明しましたが、0の場合はデータが存在しないので、条件分けをしてやる必要があります!
<?php
//JSONデータを取得
$json = @file_get_contents('http://graph.facebook.com/?id=https://www.google.com/');
//JSONデータを連想配列に直す
$array = json_decode($json,true);
//データが存在しない場合は0扱いにする
if(!isset($array['shares'])){
$count = 0;
}else{
$count = $array['shares'];
}
//カウントを出力
echo $count;
2-2JavascriptでFacebookのシェア数を取得
Ajaxで取得する場合、次のようになります。jQueryを利用しています。
//チェックするURL
var check_url = 'https://www.google.com/';
var count;
//Ajax通信
$.ajax({
url:'http://graph.facebook.com/?id=' + check_url,
dataType:"jsonp",
success:function(obj){
//カウントが0の場合
if(typeof(obj.shares) == 'undefined'){
count = 0;
}else{
count = obj.shares;
}
//カウントを出力
alert('カウント数は' + count + 'です!');
},
error:function(){ alert('通信に失敗しました…。'); },
complete:function(){ return false; }
});
3Google+
Google+の場合、TwitterやFacebookのように、手軽にカウントを取得するためのURLがありません。そのため、PHPを利用して次のように取得しましょう。こちらはもう、決まり事のようなものだと思って下さい。
3-1PHPでGoogle+の+1数を取得
<?php
//取得するURL
$url = 'https://www.google.com/';
//GETリクエストでURLを指定する場合
if(isset($_GET['url'])) $url = $_GET['url'];
//CURLを利用してJSONデータを取得
$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_SSL_VERIFYPEER, false );
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' ) );
$result = curl_exec( $ch );
curl_close( $ch );
//JSONデータからカウント数を取得
$obj = json_decode( $result, true );
//カウントが0の場合
if(!isset($obj[0]['result']['metadata']['globalCounts']['count'])){
$count = 0;
}else{
$count = $obj[0]['result']['metadata']['globalCounts']['count'];
}
//カウントを出力
echo $count;
3-2JavascriptでGoogle+の+1数を取得
Javascriptで取得する方法はStackoverflowなどで様々、議論されているようですが、試したところ、どれもなかなか上手くいきませんでした。そのため「どうしてもJavascriptで」という場合は、本末転倒な気もしますが上記のPHPを通すようにしましょう。
//PHPプログラムのURL
var php_url = '上記PHPプログラムのURL';
//チェックするURL
var check_url = 'https://www.google.com/';
//Ajax通信
$.ajax({
url:php_url + '?url=' + check_url,
success:function(count){ alert('カウント数は' + count + 'です!'); },
error:function(){ alert('通信に失敗しました…。'); },
complete:function(){ return false; }
});
4はてなブックマーク
どんどんいきましょう!続いて、はてなブックマークのカウント数を取得する方法です。取得するには、下記のURLにリクエストを送ります。
http://api.b.st-hatena.com/entry.count?url={目的のURL}
サンプルでGoogleトップページのはてブ数を取得してみましょう。下記のリンクにアクセスしてみて下さい。
はてブの場合は、ダイレクトで数字を返してくれます。148がブックマーク数です。
148
カウント数が0の場合は下記のように0ではなく空白を返します。そのため、Facebookの時と同様に条件分けの処理が必要です!
(空データ)
4-1PHPではてなブックマーク数を取得
はてなブックマーク数をPHPで取得する場合は下記のようにプログラミングします。
<?php
//はてブ数を取得
$count = @file_get_contents('http://api.b.st-hatena.com/entry.count?url=https://www.google.com/');
//カウントが0の場合
if(!isset($count) || !$count){
$count = 0;
}
//カウントを出力
echo $count;
4-2Javascriptではてなブックマーク数を取得
Ajaxで取得する場合、次のようになります。jQueryを利用しています。
//チェックするURL
var check_url = 'https://www.google.com/';
var count;
//Ajax通信
$.ajax({
url:'http://api.b.st-hatena.com/entry.count?url=' + encodeURI(check_url),
dataType:"jsonp",
success:function(count){
//カウントが0の場合
if(count == ''){ count = 0; }
//カウントを出力
alert('カウント数は' + count + 'です!');
},
error:function(){ alert('通信に失敗しました…。'); },
complete:function(){ return false; }
});
5Pinterest
続いて、PinterestのPINの数を取得する方法です。下記のURLにリクエストを送ると、「そのページに存在する全画像のピンの合計数」を取得することができます。
http://api.pinterest.com/v1/urls/count.json?url={目的のURL}
例えば、500pxの人気写真特集のページの合計ピン数を取得するには、下記のようにURLを組み立てます。アクセスしてみて下さい。
次のように、receiveCount(〜)の中に入る形で、カウント数のJSONデータが返ってきます。PHPで取得する場合はこのreceiveCount()の部分は単純に邪魔なので、正規表現などで削除してやる必要がありますねー。
receiveCount({"count": 68873, "url": "http://500px.com/popular"})
カウント数が0の場合は、しっかりと0を返してくれます。こちらは親切です。
receiveCount({"count": 0, "url": "http://500hhkpx.com/popular"})
5-1PHPでPinterestのピン数を取得
pinterestのカウント数をPHPで取得するには、次のようにします。
<?php
//JSONデータを取得
$json = @file_get_contents('http://api.pinterest.com/v1/urls/count.json?url=http://500px.com/popular');
//receiveCount(〜)を削除
$json = rtrim($json,')');
$json = ltrim($json,'receiveCount(');
//JSONデータを連想配列に直す
$array = json_decode($json,true);
//カウントを出力
echo $array['count'];
5-2JavascriptでPinterestのピン数を取得
Javascriptでpinterestのカウント数を取得する場合です。こちらはreceiveCount(〜)は放っておいて大丈夫です。相変わらず、jQueryを利用しています。
//チェックするURL
var check_url = 'http://500px.com/popular';
//Ajax通信
$.ajax({
url:'http://api.pinterest.com/v1/urls/count.json?url=' + check_url,
dataType:"jsonp",
success:function(obj){ alert('カウント数は' + obj.count + 'です!'); },
error:function(){ alert('通信に失敗しました…。'); },
complete:function(){ return false; }
});
6Linkedin
日本のウェブサイトではなかなか見かけませんが、Linkedinのシェアカウント数を取得する方法も紹介しちゃいます。次のURLにリクエストを送って下さい。
http://www.linkedin.com/countserv/count/share?url={目的のURL}
例えば、Googleトップページの、Linkedinでのシェア数を取得するには、下記のURLにアクセスします。
pinterestと同じケースで、IN.Tags.Share.handleCount(〜);の中に入る形で、カウント数のJSONデータが返ってきます。countプロパティの1109がシェア数です。もちろん、PHPの場合はこのIN.Tags.Share.handleCount(〜);を取り除きます。
IN.Tags.Share.handleCount({"count":1109,"fCnt":"1,109","fCntPlusOne":"1,110","url":"https:\/\/www.google.co.jp"});
6-1PHPでLinkedinのシェア数を取得
Linkedinのシェア数をPHPで取得するには、次のようにします。
<?php
//JSONデータを取得
$json = @file_get_contents('http://www.linkedin.com/countserv/count/share?url=https://www.google.co.jp');
//IN.Tags.Share.handleCount(〜)を削除
$json = rtrim($json,');');
$json = ltrim($json,'IN.Tags.Share.handleCount(');
//JSONデータを連想配列に直す
$array = json_decode($json,true);
//カウントを出力
echo $array['count'];
6-2JavascriptでLinkedinのシェア数を取得
続いてJavascriptでLinkedinのシェア数を取得してみましょう!jQueryを利用してAjax通信処理をしています。
//チェックするURL
var check_url = 'https://www.google.co.jp';
//Ajax通信
$.ajax({
url:'http://www.linkedin.com/countserv/count/share?url=' + check_url,
dataType:"jsonp",
success:function(obj){ alert('カウント数は' + obj.count + 'です!'); },
error:function(){ alert('通信に失敗しました…。'); },
complete:function(){ return false; }
});
7Youtbe
Youtubeにチャンネルを開設している人は、Youtubeのオリジナルボタンを作ってみてはいかがでしょうか?下記のURLにリクエストすることで、チャンネル登録者の人数を取得することができます!
http://gdata.youtube.com/feeds/api/users/{チャンネルID}?alt=json
サンプルでMr.Childrenのチャンネル情報を取得してみましょう。下記のリンクにアクセスしてみて下さい。
チャンネルの様々な情報をJSONデータで取得することができます。その中からチャンネル登録者の部分を取り出したのが、次です。この場合、チャンネル登録者は124,515人ということになります。
{
"entry": {
"yt$statistics": {
"subscriberCount": "124515",
},
}
}
ちなみに登録者数が0人の場合、次のように0というデータを返してくれます。これがあるのとないのとって地味に違いますよね…。
{
"entry": {
"yt$statistics": {
"subscriberCount": "0",
},
}
}
7-1PHPでYoutubeのチャンネル登録者数を取得
それでは実際にPHPでYoutubeのチャンネル登録者数を取得してみましょう。特に難しいことはなく、次の通りで取得できます。
//チェックするチャンネルID(大文字・小文字区別なし)
$channel = 'MrChildren';
//チャンネルデータを取得
$json = @file_get_contents("http://gdata.youtube.com/feeds/api/users/{$channel}?alt=json");
$obj = json_decode($json,true);
//チャンネル登録者数を出力
echo $obj['entry']['yt$statistics']['subscriberCount'];
7-2JavascriptでYoutubeのチャンネル登録者数を取得
Javascriptの場合は、次のようになります!
//チェックするURL
var check_channel = 'MrChildren';
//Ajax通信
$.ajax({
url:'http://gdata.youtube.com/feeds/api/users/' + check_channel + '?alt=json',
dataType:"jsonp",
success:function(obj){ alert('チャンネル登録者数は' + obj.entry.yt$statistics.subscriberCount + 'です!'); },
error:function(){ alert('通信に失敗しました…。'); },
complete:function(){ return false; }
});
8Feedly
続いてFeedlyの購読者数を取得してみましょう!次のURLにリクエストを送ることで、購読者数を取得することができます。なお、指定する「フィードのURL」はURLエンコードをする必要があります。
http://cloud.feedly.com/v3/feeds/feed%2F{フィードのURL}
例えばGIGAZINEのフィードの購読者数を調べるには、下記の通りリクエストを送ります。試しにアクセスしてみて下さい。
チャンネルの情報を含んだJSONデータが表示されると思います。その中のsubscribersというプロパティに、購読者数の情報があります。サンプルの場合だと、購読者数は5,717人ですねー。
{
"subscribers": 5717,
}
ちなみに購読者数が0人の場合、次のように空データが返るので、条件分けが必要になります。
[]
8-1PHPでFeedlyの購読者数を取得
PHPでFeedlyの購読者数を取得してみましょう。こちらもYoutube同様、難しいことはなく、次の通りで取得できます。
//チェックするフィードURL
$feed = 'http://feed.rssad.jp/rss/gigazine/rss_2.0';
//URLエンコードをする
$feed = rawurlencode($feed);
//フィードのデータを取得
$json = @file_get_contents("http://cloud.feedly.com/v3/feeds/feed%2F{$feed}");
$obj = json_decode($json,true);
//登録者数が0の場合
if(isset($obj['subscribers'])){
$count = $obj['subscribers'];
}else{
$count = 0;
}
//チャンネル登録者数を出力
echo $count;
こちら、JavascriptのAjax通信で試すと、どうしてもエラーが出てしまいます。なので、Javascriptでどうしても行ないたいという場合は、Google+の時と同じパターンで上記のPHPプログラムを通して読み込んで下さいませ…。
この記事へのコメント
感想、ご指摘などお気軽にお寄せ下さい。「関連記事を書いた」という方はご報告いただければリンクします。
記事の更新履歴
- 記事を公開しました。
2014/06/15 21:30
※Twitter、Facebook、はてな、いずれかのアカウントをお持ちの方は、本人認証(ログイン)を行なうことができます。
※本人認証をすることで、書き込みの待ち時間なし、画像アップロード、アイコンなどが利用できます。
※認証時にサービスと連携しますが、名前とアイコン以外の情報を読み込んだり、また書き込みを行なうことはありません。連携で要求する権限は「公開情報の読み取り」のみです。
コメントは、0件です。