Sosyal Paylaşım Sayılarını PHP ile Çekmek

Sosyal paylaşım sitelerinin bir bir kapandığı bugün bu yazıyı yazmak ne kadar doğru, ne kadar ilgi çeker bilemiyorum. Ama olsun ben yine de paylaşacağım. Php ile içeriklerinizin sosyal paylaşım sitelerinde kaç kere paylaşıldığını/beğenildiğini çeken bir kod var aşağıda. Aslında bu kod daha fazla siteden kod çekebiliyordu ama sanırım zamanında ben bunu Facebook, Twitter ve Google Plus bilgilerini alabilecek şekilde sınırlandırmışım. Aracı bir site, kod kullanmadan direkt olarak sitelerin kendi sağladıkları API’ler yöntemiyle verileri getiriyor kod. Bu açıdan ek sitelerin yayın dururma, kısıtlamalarına takılmadan verinizi çekebiliyorsunuz.

Sosyal Paylaşım Sayılarını PHP ile çekmek

Aşağıdaki kod bir PHP class’ıdır. Bunu herhangi bir isimle kaydedip kullanabilirsiniz. Ben şimdilik sosyal_cek.php olarak adlandırdığımız farz edeceğim. Kod gösterim alanında bulunan kodları alıp sizde bu isimle kaydedebilirsiniz.

Kod;

<?php
class SosyalPaylasimCek

{
 private $url, $timeout;
 function __construct($url, $timeout = 10)
 {
  $this->url = rawurlencode($url);
  $this->timeout = $timeout;
 }

 function twitter_getir()
 {
  $json_string = $this->file_get_contents_curl('http://urls.api.twitter.com/1/urls/count.json?url=' . $this->url);
  $json = json_decode($json_string, true);
  return isset($json['count']) ? intval($json['count']) : 0;
 }

 function facebook_getir()
 {
  $json_string = $this->file_get_contents_curl('http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls=' . $this->url);
  $json = json_decode($json_string, true);
  return isset($json[0]['total_count']) ? intval($json[0]['total_count']) : 0;
 }

 function googleplus_getir()
 {
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, "https://clients6.google.com/rpc");
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . rawurldecode($this->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);
  return isset($json[0]['result']['metadata']['globalCounts']['count']) ? intval($json[0]['result']['metadata']['globalCounts']['count']) : 0;
 }

 private
 function file_get_contents_curl($url)
 {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  curl_setopt($ch, CURLOPT_FAILONERROR, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
  $cont = curl_exec($ch);
  if (curl_error($ch))
  {
   die(curl_error($ch));
  }

  return $cont;
 }
}
?>

Kodu buradan alıp kaydettiyseniz kullanımına geçebiliriz. Detayları kullanım alanında anlatacağım.

Kullanım;

Öncelikle bu kod bir class olduğu için dosyayı içeri aktarmalı ve sonrasında class tanımını yapmalıyız. Burada classın içine bulunan $url değişkenini de atamalıyız. Aşağıdaki tanımda $scek ile classı tanımlıyorum. Daha sonrasında class içindeki fonksiyonlarımızı kullanarak verileri getireceğiz. Fonksiyonlar aşağıdaki gibi işlem yaparlar;
twitter_getir() : Class tanımında verilen linkin Twitter içinde kaç kere paylaşıldığını gösterir.
facebook_getir() : Class tanımında verilen linkin Facebook içindeki paylaşım, beğeni ve yorum değerini gösterir.
googleplus_getir() : Class tanımında verilen linkin Google Plus içindeki paylaşım (+1) değerini gösterir.

<?php
include('sosyal_cek.php');
$scek=new SosyalPaylasimCek('http://wpadami.com');  //Website, sayfa linkiniz. http barındırmalıdır
echo "Twitter :".$scek->twitter_getir()." <br />"; //Twitter paylaşım sayısını getirir
echo "Facebook :".$scek->facebook_getir()." <br />"; //Facebook beğeni, paylaşım ve yorum sayısını getirir.
echo "Google Plus :".$scek->googleplus_getir()." <br />"; //Google Plusone (+1) sayısını getirir
?>

Umarım düzgün şekilde anlatabilmişimidir. Herhangi bir sıkıntı ya da sorunuz olursa lütfen iletiniz.
Selametle

Serkan Algur: WordPress ile uğraşan deli bir adam...

This website uses cookies.