全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件です。