Rechercher les partages d'une URL
A partir d'une URL, la class SocialShareChecker interroge les 3 API et retourne le nombre de partage détectés sur FaceBook, Twitter et Google Plus.<?php
/**
* Rechercher les partages d'une URL sur les reseaux sociaux
*
* @author Fobec 11/2012
* @copyright http://www.fobec.com/php5/1118/trouver-partages-sur-reseaux-sociaux.html
*/
class SocialShareChecker {
//URL des API
const API_FB='http://api.facebook.com/restserver.php?method=links.getStats&urls=';
const API_TW='http://urls.api.twitter.com/1/urls/count.json?url=';
const API_GP="https://clients6.google.com/rpc";
//propriétés publique Facebook
public $fb_share=0;
public $fb_like=0;
public $fb_comment=0;
//propriétés publique twitter
public $tw_tweet=0;
//propriétés publique Google
public $gp_count=0;
/**
* Requetes sur les API des réseaux sociaux
* @param string $url
*/
public function query($url) {
$this->parse_fb($url);
$this->parse_tw($url);
$this->parse_gp($url);
}
/**
* Extraire les partages FaceBook
* @param string $url
*/
private function parse_fb($url) {
$url = self::API_FB.urlencode($url);
$xml_buf = file_get_contents($url);
$xml = simplexml_load_string($xml_buf);
if ($xml) {
$this->fb_share=intval($xml->link_stat->share_count);
$this->fb_like=intval($xml->link_stat->like_count);
$this->fb_comment=intval($xml->link_stat->comment_count);
}
}
/**
* Extraire les partages Twitter
* @param string $url
*/
private function parse_tw($url) {
$url = self::API_TW.urlencode($url);
$json_string = file_get_contents($url);
$json = json_decode($json_string, true);
$this->tw_tweet= intval( $json['count'] );
}
/**
* Extraire les partages Google
* @param string $url
*/
private function parse_gp($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, self::API_GP);
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_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
$curl_results = curl_exec ($curl);
curl_close ($curl);
$json = json_decode($curl_results, true);
$this->gp_count= intval( $json[0]['result']['metadata']['globalCounts']['count'] );
}
}
?>
Exemple de partage sur les réseaux sociaux
Comment utiliser la class SocialShareChecker. Il suffit de renseigner l'url à tester et de lancer la requête. Dans l'exemple, la class SocialShareChecker recherche le nombre de partage Facebook, Twitter et GooglePlus pour l'url http://www.fobec.com/apps/localiser-ip/.<?php
//URL à tester
$url = "http://www.fobec.com/apps/localiser-ip/";
$checker=new SocialShareChecker();
$checker->query($url);
echo 'URL: '.$url;
echo '<br>'.$checker->fb_share.' Partages FaceBook';
echo '<br>'.$checker->tw_tweet.' Tweets';
echo '<br>'.$checker->gp_count.' Google Plus';
?>
Résultat
16 Partages FaceBook
6 Tweets
2 Google Plus