Twitterのシェアカウントは、2015年11月20日に廃止されました。詳しくは、下記ページでTwitterの公式の発表をご参考下さい。
ソーシャルカウントの取得方法まとめ(全9サイト)
ソーシャルシェアボタンをオリジナルデザインにしたかったり、いいね!数のデータを元にランキングシステムなどを作りたい場合に役立つ「ソーシャルカウントの取得方法」をまとめました。取得方法はサーバーサイド(PHP)、クライアントサイド(Javascript)の両パターンを取り上げています。よろしければ参考にしてみて下さい!なお、Twitterのカウントは2015年11月20日以降、取得できなくなりました。
取得方法
Facebookの場合は、下記のURLにリクエストを送ることで、シェア数とコメント数を取得することができます。
GET http://graph.facebook.com/?id={目的のURL}
URLにアクセスすると、次のJSONデータがブラウザに表示されるはずです。この例では、shares
の331625がシェア数、comments
の83がコメント数です。
JSON
{
"id": "https://www.google.com/",
"shares": 331625,
"comments": 83
}
Twitterと違い、カウント数が0のURLの場合、下記のようにshare
とcomments
のプロパティが存在しないので、注意が必要です。
JSON
{
"id": "https://www.goodsdddfdgfdfdgdfggle.com/"
}
下記サンプルページで、実際にどのようなデータを取得できるのか、確認することができます。
PHPの場合
PHPを利用して、Facebookのシェア数を取得するためのサンプルコードです。$countに、シェア数が代入されます。
PHP
<?php
// チェックするURL
$url = 'https://www.yahoo.com/' ;
// リクエストURL
$request_url = 'http://graph.facebook.com/?id=' . rawurlencode( $url ) ;
// データをJSON形式で取得する (cURLを使用)
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
curl_setopt( $curl, CURLOPT_HEADER, 1 ) ; // ヘッダーを取得する
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ; // 証明書の検証を行わない
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ; // curl_execの結果を文字列で返す
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ; // タイムアウトの秒数
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ; // リダイレクト先を追跡するか?
curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ; // 追跡する回数
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
// 取得したデータの整理
$json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど)
$header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ)
// JSONデータを連想配列に直す
$array = json_decode( $json , true ) ;
// カウントプロパティが存在する場合
if( isset($array['shares']) ) {
$count = $array['shares'] ;
// カウントプロパティが存在しない場合は0扱い
} else {
$count = 0 ;
}
// URLを表示用に整形 (検証用)
foreach( array( 'url', 'request_url' ) as $variable_name ) {
${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
}
// 表示用
$html = '' ;
// 出力
$html .= '<h2>実行結果</h2>' ;
$html .= '<dl>' ;
$html .= '<dt>調べたURL</dt>' ;
$html .= '<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
$html .= '<dt>リクエストURL</dt>' ;
$html .= '<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
$html .= '<dt>取得結果</dt>' ;
$html .= '<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
$html .= '</dl>' ;
// 検証用
$html .= '<h2>取得したデータ</h2>' ;
$html .= '<h3>JSONの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( ($json!='') ? $json : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( $header ? $header : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
// ブラウザに[$html]の内容を出力
// 運用時はHTMLのヘッダーとフッターを付けましょう。
echo $html ;
JavaScriptの場合
JavaScriptを利用して、シェア数を取得するためのサンプルコードです。
HTML
HTML
<h2>実行結果</h2>
<dl>
<dt>取得した結果<dt>
<dd><mark id="result">0</mark></dd>
</dl>
jQueryを使用する場合
jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。
jQuery
// チェックするURL
var url = 'https://www.yahoo.com/' ;
// Ajax通信
$.ajax({
// オプションの指定
url: '//graph.facebook.com/?id=' + encodeURIComponent( url ) ,
dataType: 'jsonp' ,
// 取得に成功した時の処理
success:function( obj ) {
var count = 0 ;
//データが存在する場合だけ代入
if( obj.shares ) {
count = obj.shares ;
}
// アラート表示
// alert( 'カウント数は' + count + 'です!' ) ;
// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
$('#result').html( count ) ;
} ,
//取得に失敗した時の処理
error:function() {
alert("通信に失敗しました…。");
} ,
//完了した時の処理
complete:function() {
return false ;
}
}) ;
jQueryを使用しない場合
jQueryを利用しません。古いブラウザ(IE8以前)には対応していません。サイト上で、jQueryを使っていない人に有用です。
JavaScript
// チェックするURL
var url = 'https://www.yahoo.com/' ;
// インスタンスの作成
xhr = new XMLHttpRequest() ;
// タイムアウト時の処理
xhr.ontimeout = function() {
xhr.abort() ; // 通信中止
} ;
// 通信エラー時の処理
xhr.onerror = function() {
alert( '通信に失敗しました…。' ) ;
}
// 処理内容
xhr.onreadystatechange = function() {
// 通信が完了したら…
if ( xhr.readyState == 4 ) {
// リクエストが成功した場合
if ( xhr.status == 200 && xhr.response ) {
var obj = xhr.response ; // JSONを代入
var count = 0 ; // 初期値
// [shares]プロパティの判定
if( obj.shares ) {
count = obj.shares ;
}
// アラート表示
// alert( 'カウント数は' + count + 'です!' ) ;
// カウントをHTML([ID=result]の要素内)へ書き出す
document.getElementById( 'result' ).innerHTML = count ;
// リクエストが失敗した場合
} else {
alert( "リクエストに失敗しました…。ステータスコード [" + xhr.status + "]" ) ;
}
}
}
xhr.open( "GET", "//graph.facebook.com/?id=" + encodeURIComponent( url ) ) ; // リクエスト内容
xhr.timeout = 15000 ; // タイムアウトの秒数 (15秒)
xhr.responseType = 'json'; // 取得するデータタイプの指定
xhr.send() ; // 通信開始
Google+
取得方法
Google+の場合は、決まり事のようなものだと思って下さい。TwitterやFacebookのように、手軽にカウントを取得するためのURLがありません。PHPを利用して次項(PHPの場合)の通り、取得して下さい。その前に、実際にどのようなデータを取得できるのかを確認したい人は、下記サンプルデモページでご確認下さい。URLを調整して、様々な結果を確認できます。
PHPの場合
PHPを利用して、Google+の+1数を取得するためのサンプルコードです。$countに目的のカウントが代入されます。
PHP
<?php
// チェックするURL (デフォルト)
$url = 'https://www.google.com/' ;
// リクエストURL
$request_url = "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ" ;
// データをJSON形式で取得する (cURLを使用)
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
curl_setopt( $curl, CURLOPT_POST, 1 ) ;
curl_setopt( $curl, 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( $curl, CURLOPT_HTTPHEADER, array( 'Content-type: application/json' ) ) ;
curl_setopt( $curl, CURLOPT_HEADER, 1 ) ; // ヘッダーを取得する
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ; // 証明書の検証を行わない
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ; // curl_execの結果を文字列で返す
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ; // リダイレクト先を追跡するか?
curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ; // 追跡する回数
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ; // タイムアウトの秒数
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
// 取得したデータの整理
$json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど)
$header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ)
// JSONデータからカウント数を取得
$array = json_decode( $json, true ) ;
// カウント(データが存在しない場合は0扱い)
if( isset($array[0]['result']['metadata']['globalCounts']['count']) ) {
$count = (int)$array[0]['result']['metadata']['globalCounts']['count'] ;
} else {
$count = 0 ;
}
// URLを表示用に整形 (検証用)
foreach( array( 'url', 'request_url' ) as $variable_name ) {
${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
}
// 出力用
$html = '' ;
// 出力
$html .= '<h2>実行結果</h2>' ;
$html .= '<dl>' ;
$html .= '<dt>調べたURL</dt>' ;
$html .= '<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
$html .= '<dt>リクエストURL</dt>' ;
$html .= '<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
$html .= '<dt>取得結果</dt>' ;
$html .= '<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
$html .= '</dl>' ;
// 検証用
$html .= '<h2>取得したデータ</h2>' ;
$html .= '<h3>JSONの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( ($json!='') ? $json : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( $header ? $header : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
// ブラウザに[$html]の内容を出力
// 運用時はHTMLのヘッダーとフッターを付けましょう。
echo $html ;
はてなブックマーク
取得方法
続いて、はてなブックマークのカウント数を取得する方法です。取得するには、下記のURLにリクエストを送ります。
GET http://api.b.st-hatena.com/entry.count?url={目的のURL}
はてなブックマークの場合、JSONデータではなく、ダイレクトでカウント数を返してくれます。ブラウザに表示されるのはカウント数のみです。
1076
カウント数が0の場合は下記のように0ではなく空白を返します。そのため、「データが空の場合は0扱いにする」といった条件分けの処理が必要ですね。
(空データ)
どのようにデータを取得できるのか確認したい人は、下記のサンプルデモページをご覧下さい。
PHPの場合
PHPを利用して、はてなブックマークのはてブ数を取得するためのサンプルコードです。
PHP
<?php
// チェックするURL
$url = 'https://www.yahoo.com/' ;
// リクエストURL
$request_url = 'http://api.b.st-hatena.com/entry.count?url=' . rawurlencode( $url ) ;
// データをJSON形式で取得する (cURLを使用)
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
curl_setopt( $curl, CURLOPT_HEADER, 1 ) ; // ヘッダーを取得する
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ; // 証明書の検証を行わない
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ; // curl_execの結果を文字列で返す
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ; // タイムアウトの秒数
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ; // リダイレクト先を追跡するか?
curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ; // 追跡する回数
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
// 取得したデータの整理
$count = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど)
$header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ)
// データが正数じゃない場合は0扱い
if( !$count ) {
$count = 0 ;
}
// URLを表示用に整形 (検証用)
foreach( array( 'url', 'request_url' ) as $variable_name ) {
${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
}
// 表示用
$html = '' ;
// 出力
$html .= '<h2>実行結果</h2>' ;
$html .= '<dl>' ;
$html .= '<dt>調べたURL</dt>' ;
$html .= '<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
$html .= '<dt>リクエストURL</dt>' ;
$html .= '<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
$html .= '<dt>取得結果</dt>' ;
$html .= '<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
$html .= '</dl>' ;
// 検証用
$html .= '<h2>取得したデータ</h2>' ;
$html .= '<h3>レスポンスデータの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( ($count!='') ? $count : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( $header ? $header : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
// ブラウザに[$html]の内容を出力
// 運用時はHTMLのヘッダーとフッターを付けましょう。
echo $html ;
JavaScriptの場合
JavaScriptを利用して、はてなブックマークのはてブ数を取得するためのサンプルコードです。なお、2015年11月現在、はてなブックマークがSSL通信に対応していないため、当サイト(https://
)からは取得できません。従って下記デモページでは通信に失敗してしまいますが、HTTPから始まるウェブサイト上では動作します。
HTML
HTML
<h2>実行結果</h2>
<dl>
<dt>取得した結果<dt>
<dd><mark id="result">0</mark></dd>
</dl>
jQueryを使用する場合
jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。
jQuery
// チェックするURL
var url = 'https://www.youtube.com/' ;
// Ajax通信
$.ajax({
// オプションの指定
url: 'http://api.b.st-hatena.com/entry.count?url=' + encodeURIComponent( url ) ,
dataType: 'text' ,
// 取得に成功した時の処理
success:function( count ) {
//データが存在する場合だけ代入
if( !count ) {
count = 0 ;
}
// アラート表示
// alert( 'カウント数は' + count + 'です!' ) ;
// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
$('#result').html( count ) ;
} ,
//取得に失敗した時の処理
error:function() {
alert("通信に失敗しました…。");
} ,
//完了した時の処理
complete:function() {
return false ;
}
}) ;
jQueryを使用しない場合
jQueryを利用しません。古いブラウザ(IE8以前)には対応していません。サイト上で、jQueryを使っていない人に有用です。
JavaScript
// チェックするURL
var url = 'https://www.youtube.com/' ;
// インスタンスの作成
xhr = new XMLHttpRequest() ;
// タイムアウト時の処理
xhr.ontimeout = function () {
xhr.abort() ; // 通信中止
} ;
// 通信エラー時の処理
xhr.onerror = function() {
alert( '通信に失敗しました…。' ) ;
}
// 処理内容
xhr.onreadystatechange = function() {
// 通信が完了したら…
if ( xhr.readyState == 4 ) {
// リクエストが成功した場合
if ( xhr.status == 200 ) {
var count = xhr.response ; // 初期値
// [shares]プロパティの判定
if( !count ) {
count = 0 ;
}
// アラート表示
// alert( 'カウント数は' + count + 'です!' ) ;
// カウントをHTML([ID=result]の要素内)へ書き出す
document.getElementById( 'result' ).innerHTML = count ;
// リクエストが失敗した場合
} else {
alert( "リクエストに失敗しました…。ステータスコード [" + xhr.status + "]" ) ;
}
}
}
xhr.open( "GET", 'http://api.b.st-hatena.com/entry.count?url=' + encodeURIComponent( url ) ) ; // リクエスト内容
xhr.timeout = 15000 ; // タイムアウトの秒数 (15秒)
xhr.responseType = 'text'; // 取得するデータタイプの指定
xhr.send() ; // 通信開始
取得方法
続いて、PinterestのPINの数を取得する方法です。下記のURLにリクエストを送ると、「そのページに存在する全画像のピンの合計数」を取得することができます。
GET http://api.pinterest.com/v1/urls/count.json?url={目的のURL}
次のように、receiveCount(〜)
の中に入る形で、カウント数のJSONデータが返ってきます。PHPで取得する場合はこのreceiveCount()の部分は単純に邪魔なので、正規表現などで削除してやる必要がありますねー。
receiveCount( { "count": 68873, "url": "http://500px.com/popular" } )
カウント数が0の場合も0
というデータを返却してくれるので、条件分けは必要なさそうです。
receiveCount( { "count": 0, "url": "http://500hhkpx.com/popular" } )
PinterestのPIN数をどのように取得できるのか、確認したい人は、下記ボタンよりサンプルデモのページに移動して下さい。
PHPの場合
PHPを利用して、PinterestのPIN数を取得するためのサンプルコードです。
PHP
<?php
// チェックするURL
$url = 'https://500px.com/' ;
// リクエストURL
$request_url = 'https://api.pinterest.com/v1/urls/count.json?url=' . rawurlencode( $url ) ;
// データをJSON形式で取得する (cURLを使用)
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
curl_setopt( $curl, CURLOPT_HEADER, 1 ) ; // ヘッダーを取得する
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ; // 証明書の検証を行わない
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ; // curl_execの結果を文字列で返す
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ; // タイムアウトの秒数
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ; // リダイレクト先を追跡するか?
curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ; // 追跡する回数
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
// 取得したデータの整理
$json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど)
$header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ)
// receiveCount(〜)を削除
$json = rtrim( $json , ');' ) ;
$json = ltrim( $json , 'receiveCount(' ) ;
// JSONデータを連想配列に直す
$array = json_decode( $json , true ) ;
// カウントプロパティが存在する場合
if( isset($array['count']) ) {
$count = $array['count'] ;
// カウントプロパティが存在しない場合は0扱い
} else {
$count = 0 ;
}
// URLを表示用に整形 (検証用)
foreach( array( 'url', 'request_url' ) as $variable_name ) {
${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
}
// 表示用
$html = '' ;
// 出力
$html .= '<h2>実行結果</h2>' ;
$html .= '<dl>' ;
$html .= '<dt>調べたURL</dt>' ;
$html .= '<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
$html .= '<dt>リクエストURL</dt>' ;
$html .= '<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
$html .= '<dt>取得結果</dt>' ;
$html .= '<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
$html .= '</dl>' ;
// 検証用
$html .= '<h2>取得したデータ</h2>' ;
$html .= '<h3>JSONの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( ($json!='') ? $json : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( $header ? $header : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
// ブラウザに[$html]の内容を出力
// 運用時はHTMLのヘッダーとフッターを付けましょう。
echo $html ;
JavaScriptの場合
JavaScriptを利用して、PinterestのPIN数を取得するためのサンプルコードです。
HTML
HTML
<h2>実行結果</h2>
<dl>
<dt>取得した結果<dt>
<dd><mark id="result">0</mark></dd>
</dl>
jQueryを使用する場合
jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。JSONでデータを受け取る指定をすることで、receiveCount(〜)
部分は取り除かれるようです。
jQuery
// チェックするURL
var url = 'https://500px.com/' ;
// Ajax通信
$.ajax({
// オプションの指定
url: '//api.pinterest.com/v1/urls/count.json?url=' + encodeURIComponent( url ) ,
dataType: 'jsonp' ,
// 取得に成功した時の処理
success:function( obj ) {
var count = 0 ;
//データが存在する場合だけ代入
if( obj.count ) {
count = obj.count ;
}
// アラート表示
// alert( 'カウント数は' + count + 'です!' ) ;
// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
$('#result').html( count ) ;
} ,
//取得に失敗した時の処理
error:function() {
alert("通信に失敗しました…。");
} ,
//完了した時の処理
complete:function() {
return false ;
}
}) ;
jQueryを使用しない場合
jQueryを利用しません。古いブラウザ(IE8以前)には対応していません。サイト上で、jQueryを使っていない人に有用です。ピュアなJavaScriptの場合、PHPと同様に、receiveCount(〜)
部分の削除処理が必要です。
JavaScript
// チェックするURL
var url = 'https://500px.com/' ;
// インスタンスの作成
xhr = new XMLHttpRequest() ;
// タイムアウト時の処理
xhr.ontimeout = function () {
xhr.abort() ; // 通信中止
} ;
// 通信エラー時の処理
xhr.onerror = function() {
alert( '通信に失敗しました…。' ) ;
}
// 処理内容
xhr.onreadystatechange = function() {
// 通信が完了したら…
if ( xhr.readyState == 4 ) {
// リクエストが成功した場合
if ( xhr.status == 200 && xhr.response ) {
var text = xhr.response ; // JSONを代入
var count = 0 ; // 初期値
// receiveCount(〜)を削除
text = text.substr( 13 ) ;
text = text.substr( 0 , (text.length-1) ) ;
// JSONを解析
obj = JSON.parse( text ) ;
//データが存在する場合だけ代入
if( obj.count ) {
count = obj.count ;
}
// アラート表示
// alert( 'カウント数は' + count + 'です!' ) ;
// カウントをHTML([ID=result]の要素内)へ書き出す
document.getElementById( 'result' ).innerHTML = count ;
// リクエストが失敗した場合
} else {
alert( "リクエストに失敗しました…。ステータスコード [" + xhr.status + "]" ) ;
}
}
}
xhr.open( "GET", '//api.pinterest.com/v1/urls/count.json?url=' + encodeURIComponent( url ) ) ; // リクエスト内容
xhr.timeout = 15000 ; // タイムアウトの秒数 (15秒)
xhr.responseType = 'text'; // 取得するデータタイプの指定
xhr.send() ; // 通信開始
取得方法
日本のウェブサイトではなかなか見かけませんが、Linkedinのシェアカウント数を取得する方法も紹介しちゃいます。次のURLにリクエストを送って下さい。
GET http://www.linkedin.com/countserv/count/share?url={目的の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" } );
カウント数が0の場合も0
というデータを返却してくれます。
IN.Tags.Share.handleCount( { "count": 0, "fCnt": "1,109", "fCntPlusOne": "1,110", "url": "https:\/\/www.goregrth4ey5ogle.co.jp" } );
実際の動作を確認したい人は、下記のサンプルデモをご覧下さい。
PHPの場合
PHPを利用して、Linkedinのシェア数を取得するためのサンプルコードです。
PHP
<?php
// チェックするURL (デフォルト)
$url = 'https://www.yahoo.com/' ;
// パラメータによる指定がある場合は上書き
if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) && is_string( $_GET['url'] ) ) {
$url = $_GET['url'] ;
}
// リクエストURL
$request_url = 'http://www.linkedin.com/countserv/count/share?url=' . rawurlencode( $url ) ;
// データをJSON形式で取得する (cURLを使用)
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
curl_setopt( $curl, CURLOPT_HEADER, 1 ) ; // ヘッダーを取得する
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ; // 証明書の検証を行わない
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ; // curl_execの結果を文字列で返す
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ; // タイムアウトの秒数
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ; // リダイレクト先を追跡するか?
curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ; // 追跡する回数
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
// 取得したデータの整理
$json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど)
$header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ)
// IN.Tags.Share.handleCount(〜)を削除
$json = rtrim( $json , ');' ) ;
$json = ltrim( $json , 'IN.Tags.Share.handleCount(' ) ;
// JSONデータを配列に直す
$array = json_decode( $json , true ) ;
// カウント
$count = $array[ 'count' ] ;
// 出力用
$html = '' ;
// 出力
$html .= '<h2>実行結果</h2>' ;
$html .= '<dl>' ;
$html .= '<dt>調べたURL</dt>' ;
$html .= '<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
$html .= '<dt>リクエストURL</dt>' ;
$html .= '<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
$html .= '<dt>取得結果</dt>' ;
$html .= '<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
$html .= '</dl>' ;
// URLの指定
$html .= '<h2>URLの指定</h2>' ;
$html .= '<p>URLを入力して、プログラムを実行してみて下さい。</p>' ;
$html .= '<form>' ;
$html .= '<p><input name="url" type="url" value="' . $url . '"></p>' ;
$html .= '<p><button>チェックする</button></p>' ;
$html .= '</form>' ;
// 検証用
$html .= '<h2>取得したデータ</h2>' ;
$html .= '<h3>JSONの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( ($json!='') ? $json : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( $header ? $header : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
// ブラウザに[$html]の内容を出力
// 運用時はHTMLのヘッダーとフッターを付けましょう。
echo $html ;
JavaScriptの場合
JavaScriptを利用して、Linkedinのシェア数を取得するためのサンプルコードです。
HTML
HTML
<h2>実行結果</h2>
<dl>
<dt>取得した結果<dt>
<dd><mark id="result">0</mark></dd>
</dl>
jQueryを使用する場合
jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。JSONでデータを受け取る指定をすることで、IN.Tags.Share.handleCount(〜)
部分は取り除かれるようです。
jQuery
// チェックするURL
var url = 'https://www.google.com/' ;
// Ajax通信
$.ajax({
// オプションの指定
url: '//www.linkedin.com/countserv/count/share?url=' + encodeURIComponent( url ) ,
dataType: 'jsonp' ,
// 取得に成功した時の処理
success:function( obj ) {
var count = 0 ;
//データが存在する場合だけ代入
if( obj.count ) {
count = obj.count ;
}
// アラート表示
// alert( 'カウント数は' + count + 'です!' ) ;
// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
$('#result').html( count ) ;
} ,
//取得に失敗した時の処理
error:function() {
alert("通信に失敗しました…。");
} ,
//完了した時の処理
complete:function() {
return false ;
}
}) ;
jQueryを使用しない場合
LinkedInの場合、クロスオリジン制約(違うサーバーからの通信を受け付けない)があるため、jQueryを使わないで取得することができません。正確には、私の力不足で、取得方法が分かりません…。もし、「こうやればできるよ」という方がいらっしゃいましたら、教えていただければ幸いですm(__)m
Feedly
取得方法
Feedlyの購読者数を取得してみましょう!次のURLにリクエストを送ることで、購読者数を取得することができます。なお、指定する「フィードのURL」はURLエンコードをする必要があります。
GET http://cloud.feedly.com/v3/feeds/feed%2F{フィードのURL}
リクエストすると、フィードの情報を含んだJSONデータが返却されます。その中のsubscribers
というプロパティに、購読者数の情報があります。サンプルの場合だと、購読者数は5,717人ですねー。
JSON
{
"subscribers": 5717
}
購読者数が0人の場合、次のように空データが返るので、条件分けが必要になります。
[ ]
実際の動作を確認したい人は、下記のサンプルデモをご覧下さい。
PHPの場合
PHPを利用して、Feedlyの購読者数を取得するためのサンプルコードです。
PHP
<?php
// チェックするフィードのURL
$url = 'http://blog.evernote.com/jp/feed/' ;
// リクエストURL
$request_url = 'http://cloud.feedly.com/v3/feeds/feed%2F' . rawurlencode( $url ) ;
// データをJSON形式で取得する (cURLを使用)
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
curl_setopt( $curl, CURLOPT_HEADER, 1 ) ; // ヘッダーを取得する
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ; // 証明書の検証を行わない
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ; // curl_execの結果を文字列で返す
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ; // タイムアウトの秒数
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ; // リダイレクト先を追跡するか?
curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ; // 追跡する回数
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
// 取得したデータの整理
$json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど)
$header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ)
// JSONデータを連想配列に直す
$array = json_decode( $json , true ) ;
// カウントプロパティが存在する場合
if( isset($array['subscribers']) ) {
$count = $array['subscribers'] ;
// カウントプロパティが存在しない場合は0扱い
} else {
$count = 0 ;
}
// URLを表示用に整形 (検証用)
foreach( array( 'url', 'request_url' ) as $variable_name ) {
${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
}
// 表示用
$html = '' ;
// 出力
$html .= '<h2>実行結果</h2>' ;
$html .= '<dl>' ;
$html .= '<dt>調べたURL</dt>' ;
$html .= '<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
$html .= '<dt>リクエストURL</dt>' ;
$html .= '<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
$html .= '<dt>取得結果</dt>' ;
$html .= '<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
$html .= '</dl>' ;
// 検証用
$html .= '<h2>取得したデータ</h2>' ;
$html .= '<h3>JSONの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( ($json!='') ? $json : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( $header ? $header : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
// ブラウザに[$html]の内容を出力
// 運用時はHTMLのヘッダーとフッターを付けましょう。
echo $html ;
Buffer
取得方法
Bufferでのシェアカウントを取得する方法を紹介します。次のURLにGETメソッドでリクエストを送れば、シェアされた回数を取得できます。
GET https://api.bufferapp.com/1/links/shares.json?url={目的のURL}
取得できるJSONデータは次の通りです。このshare
というプロパティに含まれているのが、求めたいカウントです。サンプルの場合、Bufferを経由してシェアされた回数が5回ということになります。
JSON
{
"shares": 5
}
カウントが0の場合も、次のように0
というデータを返してくれます。
JSON
{
"shares": 0
}
Bufferのカウント数取得の動作確認をしたい人は、下記サンプルデモをご利用下さい。
PHPの場合
PHPを利用して、Bufferのシェア数を取得するためのサンプルコードです。
PHP
<?php
// チェックするURL
$url = 'https://www.google.com/' ;
// リクエストURL
$request_url = 'https://api.bufferapp.com/1/links/shares.json?url=' . rawurlencode( $url ) ;
// データをJSON形式で取得する (cURLを使用)
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
curl_setopt( $curl, CURLOPT_HEADER, 1 ) ; // ヘッダーを取得する
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ; // 証明書の検証を行わない
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ; // curl_execの結果を文字列で返す
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ; // タイムアウトの秒数
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ; // リダイレクト先を追跡するか?
curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ; // 追跡する回数
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
// 取得したデータの整理
$json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど)
$header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ)
// JSONデータを連想配列に直す
$array = json_decode( $json , true ) ;
// カウントプロパティが存在する場合
if( isset($array['shares']) ) {
$count = $array['shares'] ;
// カウントプロパティが存在しない場合は0扱い
} else {
$count = 0 ;
}
// URLを表示用に整形 (検証用)
foreach( array( 'url', 'request_url' ) as $variable_name ) {
${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
}
// 表示用
$html = '' ;
// 出力
$html .= '<h2>実行結果</h2>' ;
$html .= '<dl>' ;
$html .= '<dt>調べたURL</dt>' ;
$html .= '<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
$html .= '<dt>リクエストURL</dt>' ;
$html .= '<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
$html .= '<dt>取得結果</dt>' ;
$html .= '<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
$html .= '</dl>' ;
// 検証用
$html .= '<h2>取得したデータ</h2>' ;
$html .= '<h3>JSONの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( ($json!='') ? $json : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
$html .= '<textarea>' ;
$html .= ( $header ? $header : '取得できませんでした…。' ) ;
$html .= '</textarea>' ;
// ブラウザに[$html]の内容を出力
// 運用時はHTMLのヘッダーとフッターを付けましょう。
echo $html ;
JavaScriptの場合
JavaScriptを利用して、PinterestのPIN数を取得するためのサンプルコードです。
HTML
HTML
<h2>実行結果</h2>
<dl>
<dt>取得した結果<dt>
<dd><mark id="result">0</mark></dd>
</dl>
jQueryを使用する場合
jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。
jQuery
// チェックするURL
var url = 'https://www.yahoo.com/' ;
// Ajax通信
$.ajax({
// オプションの指定
url: '//api.bufferapp.com/1/links/shares.json?url=' + encodeURIComponent( url ) ,
dataType: 'jsonp' ,
// 取得に成功した時の処理
success:function( obj ) {
var count = 0 ;
//データが存在する場合だけ代入
if( obj.shares ) {
count = obj.shares ;
}
// アラート表示
// alert( 'カウント数は' + count + 'です!' ) ;
// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
$('#result').html( count ) ;
} ,
//取得に失敗した時の処理
error:function() {
alert("通信に失敗しました…。");
} ,
//完了した時の処理
complete:function() {
return false ;
}
}) ;
jQueryを使用しない場合
LinkedInの場合と同様、Bufferのカウント数取得用APIは、クロスオリジン制約があるため、私の知識では、jQueryを使わずに取得することができませんでした。取得方法を知っている方がいらっしゃいましたら、教えていただければ幸いですm(__)m
ダウンロード
この記事で紹介してきたサンプルプログラムを配布しています。よろしければ、自身のウェブサイトでカスタマイズしてご活用下さい。
ファイル一覧
- SYNCER000042
- facebook-custom.php Download
- facebook.php Download
- facebook.jquery.html Download
- facebook.jquery.js Download
- facebook.html Download
- facebook.js Download
- google_plus-custom.php Download
- google_plus.php Download
- hatena-custom.php Download
- hatena.php Download
- hatena.jquery.html Download
- hatena.jquery.js Download
- hatena.html Download
- hatena.js Download
- pinterest-custom.php Download
- pinterest.php Download
- pinterest.jquery.html Download
- pinterest.jquery.js Download
- pinterest.html Download
- pinterest.js Download
- linkedin-custom.php Download
- linkedin.php Download
- linkedin.jquery.html Download
- linkedin.jquery.js Download
- feedly-custom.php Download
- feedly.php Download
- buffer-custom.php Download
- buffer.php Download
- buffer.jquery.html Download
- buffer.jquery.js Download
- readme.txt Download
ファイル名をクリックすると内容を確認できます。「Download Zip」をクリックするとファイル一式をダウンロードできます。
ご利用の際は、付属のREADMEファイル(readme.txt)をご確認下さい。