PHPで特定URLのGoogle+の+1数を取得する
PHPで特定URLのGoogle+の+1数を取得する
ブログなどでその記事がどれだけ+1されたのか。通常は公式ボタンを利用しますが、ランキングに利用したりオリジナルデザインボタンを使いたい場合は数値データを取得する必要があります。
Google+の場合はAPIが存在しないため、下記の非公式ライブラリを利用することで、簡単に数値を取得することができます。
Google+の+1カウントを取得するためのPHPライブラリです。
+1数を取得してみる
公開されているライブラリのソースコードをコピーして利用します。関数のgplus_shares()
に、取得したいURLアドレスを引数で渡せば、数値を取得できます。
//Twitterトップページの+1数を取得する
$url = "https://twitter.com/";
$data = gplus_shares($url);
//ライブラリをコピーしたもの
function gplus_shares($url){
// G+ DATA
$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);
return json_decode($result, true);
}
取得した$data
の中身は連想配列の形式で様々なデータが含まれています。その内のcount
に目的のデータが格納されています。下記はTwitterトップページの例です。
array(1) {
[0]=>
array(2) {
["id"]=>
string(1) "p"
["result"]=>
array(5) {
["kind"]=>
string(12) "pos#plusones"
["id"]=>
string(20) "https://twitter.com/"
["isSetByViewer"]=>
bool(false)
["metadata"]=>
array(2) {
["type"]=>
string(3) "URL"
["globalCounts"]=>
array(1) {
["count"]=>
float(34903)
}
}
["abtk"]=>
string(100) "AEIZW7SlV8YbuyLjN3HTnINU8ZbmEXZ0MohzqPt1BceyEbTQ0N+WnFL3LFQO1R7vmS2FryePyKwccgNc7xdDf3fR48W8CwKAnA=="
}
}
}
数値は階層の深いところにあります。アクセスパスは$data[0]['result']['metadata']['globalCounts']['count']
です。
$count = $data[0]['result']['metadata']['globalCounts']['count'];
echo $count;
//結果表示
34903
エクスプローラ
PHPで+1数を取得し、オリジナルボタンを表示するサンプルです。フォームに+1数を取得したいURLを入力してみて下さい。
プレビュー
???
調べたURLの+1数は???でした。
参考文献
この記事で紹介したライブラリをはじめ、ボタンのソースコードを読み込むなど、様々な方法でトライしています。
正規表現を用いて取得する方法が解説されています。