A little snippet of code I’m using to get share counts for a url from a number of services in one call. The idea is I pass a url and I get some json back with counts from Facebook, Twitter, Delicious, Pinterest and Google +1s (if it’s a bad url or nothing returned from the service then null value).
<?php $url = $_GET['url']; $finfo = json_decode(file_get_contents('http://api.ak.facebook.com/restserver.php?v=1.0&method=links.getStats&urls='.$url.'&format=json')); $tinfo = json_decode(file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url='.$url)); $dinfo = json_decode(file_get_contents('http://feeds.delicious.com/v2/json/urlinfo/data?url='.$url)); $pinfo = json_decode(preg_replace('/^receiveCount\((.*)\)$/', "\\1",file_get_contents('http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url='.$url))); $gplus = gplus_shares($url); //http://papermashup.com/google-plus-php-function/ 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); } $output = array( 'facebook'=> isset($finfo[0]) ? $finfo[0]->total_count : NULL, 'twitter'=> isset($tinfo->count) ? $tinfo->count : NULL, 'delicious'=> isset($dinfo[0]) ? $dinfo[0]->total_posts : NULL, 'pinterest'=> isset($pinfo->count) ? $pinfo->count : NULL, 'googlePlus'=> isset($gplus[0]['result']) ? $gplus[0]['result']['metadata']['globalCounts']['count'] : NULL ); header('Content-Type: text/javascript'); echo "[".json_encode($output)."]"; ?>
Usually I use sharedcount.com for this, but was worried that give over 15k urls to get data on I might trip their server (although I was given assurances that it was fine). I’ve deployed this code on a local webserver (XAMPP Lite) and it’s working well in parallel with Google Refine.
PHP code to bulk collect social share counts from Facebook, Twitter, Delicious, Pinterest and Google +1s and return json « Allah Hoo Akbar
[…] PHP code to bulk collect social share counts from Facebook, Twitter, Delicious, Pinterest and Google… […]
Sunny
i have added 2 more functions to get StumbleUpon count and Linkedin count
check this http://toolspot.org/script-to-get-shared-count.php