/s', $data, $shares );
if (count($shares) > 0) {
$current_result = $shares[1];
$second_parse = array();
preg_match( '/
(.*?)<\/div>/s', $current_result, $second_parse );
$value = $second_parse[1];
$value = str_replace("", "", $value);
$value = str_replace("", "", $value);
$count = $value;
}
return $count;
}
function getXingCount($url) {
//- Get Xing Shares counter from this https://www.xing-share.com/app/share?op=get_share_button;url=https://blog.xing.com/2012/01/the-shiny-new-xing-share-button-how-to-implement-it-in-your-blog-or-website/;counter=top;lang=en;type=iframe;hovercard_position=2;shape=rectangle
$buttonURL = sprintf('https://www.xing-share.com/app/share?op=get_share_button;url=%s;counter=top;lang=en;type=iframe;hovercard_position=2;shape=rectangle', urlencode($url));
$data = parse($buttonURL);
$shares = array();
$count = 0;
preg_match( '/(.*?)<\/span>/s', $data, $shares );
if (count($shares) > 0) {
$current_result = $shares[1];
$count = $current_result;
}
return $count;
}
function getPocketCount($url) {
//- Get Xing Shares counter from this https://www.xing-share.com/app/share?op=get_share_button;url=https://blog.xing.com/2012/01/the-shiny-new-xing-share-button-how-to-implement-it-in-your-blog-or-website/;counter=top;lang=en;type=iframe;hovercard_position=2;shape=rectangle
$buttonURL = sprintf('https://widgets.getpocket.com/v1/button?align=center&count=vertical&label=pocket&url=%s', urlencode($url));
$data = parse($buttonURL);
$shares = array();
$count = 0;
preg_match( '/(.*?)<\/em>/s', $data, $shares );
if (count($shares) > 0) {
$current_result = $shares[1];
$count = $current_result;
}
return $count;
}
function getGplusShares($url) {
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
//CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'essb', // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 5, // timeout on connect
CURLOPT_TIMEOUT => 10, // timeout on response
CURLOPT_MAXREDIRS => 3, // stop after 3 redirects
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_FAILONERROR => false,
CURLOPT_NOSIGNAL => 1,
);
$ch = curl_init();
if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) {
$options[CURLOPT_FOLLOWLOCATION] = true;
}
$options[CURLOPT_URL] = 'https://clients6.google.com/rpc';
$options[CURLOPT_POST] = true;
$options[CURLOPT_POSTFIELDS] = '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . rawurldecode( $url ) . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]';
$options[CURLOPT_HTTPHEADER] = array( 'Content-type: application/json' );
curl_setopt_array($ch, $options);
// force ip v4 - uncomment this
try {
curl_setopt( $ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
catch (Exception $e) {
}
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
curl_close( $ch );
if ($errmsg != '' || $err != '') {
print_r($errmsg);
}
$result = 0;
try {
$response = json_decode( $content, true );
$result = isset( $response[0]['result']['metadata']['globalCounts']['count'] )?intval( $response[0]['result']['metadata']['globalCounts']['count'] ):0;
}
catch (Exception $e) {
$result = 0;
}
return $result;
}
function getGplusShares1($url)
{
$buttonUrl = sprintf('https://plusone.google.com/u/0/_/+1/fastbutton?url=%s', urlencode($url));
//$htmlData = file_get_contents($buttonUrl);
$htmlData = parse($buttonUrl);
@preg_match_all('#{c: (.*?),#si', $htmlData, $matches);
$ret = isset($matches[1][0]) && strlen($matches[1][0]) > 0 ? trim($matches[1][0]) : 0;
if(0 != $ret) {
$ret = str_replace('.0', '', $ret);
}
return ($ret);
}
function get_counter_number_odnoklassniki( $url ) {
$CHECK_URL_PREFIX = 'http://www.odnoklassniki.ru/dk?st.cmd=extLike&uid=odklcnt0&ref=';
$check_url = $CHECK_URL_PREFIX . $url;
$data = parse( $check_url );
$shares = array();
//print $check_url . ' = ' .$data;
preg_match( '/^ODKL\.updateCount\(\'odklcnt0\',\'(\d+)\'\);$/i', $data, $shares );
return (int)$shares[ 1 ];
}
function getRedditScore($url) {
$reddit_url = 'http://www.reddit.com/api/info.json?url='.$url;
$format = "json";
$score = $ups = $downs = 0; //initialize
/* action */
$content = parse( $reddit_url );
if($content) {
if($format == 'json') {
$json = json_decode($content,true);
foreach($json['data']['children'] as $child) { // we want all children for this example
$ups+= (int) $child['data']['ups'];
$downs+= (int) $child['data']['downs'];
//$score+= (int) $child['data']['score']; //if you just want to grab the score directly
}
$score = $ups - $downs;
}
}
return $score;
}
function get_counter_number__vk( $url ) {
$CHECK_URL_PREFIX = 'https://vk.com/share.php?act=count&url=';
$check_url = $CHECK_URL_PREFIX . $url;
$data = parse( $check_url );
$shares = array();
preg_match( '/^VK\.Share\.count\(\d, (\d+)\);$/i', $data, $shares );
return $shares[ 1 ];
}
function get_linkedin($url) {
$json_string = parse ( "https://www.linkedin.com/countserv/count/share?url=$url&format=json" );
$json = json_decode ( $json_string, true );
$result = isset ( $json ['count'] ) ? intval ( $json ['count'] ) : 0;
return $result;
}
function parse( $encUrl ) {
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
//CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => 'essb', // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 5, // timeout on connect
CURLOPT_TIMEOUT => 10, // timeout on response
CURLOPT_MAXREDIRS => 3, // stop after 3 redirects
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => false,
);
$ch = curl_init();
if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) {
$options[CURLOPT_FOLLOWLOCATION] = true;
}
$options[CURLOPT_URL] = $encUrl;
curl_setopt_array($ch, $options);
// force usage of v4
try {
curl_setopt( $ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
catch (Exception $e) {
}
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
curl_close( $ch );
if ($errmsg != '' || $err != '') {
print_r($errmsg);
}
return $content;
}
// get counters
$json = array('url'=>'','count'=>0, 'network'=>'', 'instance' => '');
$url = isset($_GET['url']) ? $_GET['url'] : '';
$json['url'] = $url;
$network = isset($_GET['nw']) ? $_GET['nw'] : '';;
$instance = isset($_GET['instance']) ? $_GET['instance'] : '';
if ($url == '' && $network == '') { echo str_replace('\\/','/',json_encode($json)); die();}
$json['network'] = $network;
$json['instance'] = $instance;
if ( filter_var($url, FILTER_VALIDATE_URL) ) {
if ( $network == 'google2' ) {
// http://www.helmutgranda.com/2011/11/01/get-a-url-google-count-via-php/
$content = parse("https://plusone.google.com/u/0/_/+1/fastbutton?url=".$url."&count=true");
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
@$dom->loadHTML($content);
$domxpath = new DOMXPath($dom);
$newDom = new DOMDocument;
$newDom->formatOutput = true;
$filtered = $domxpath->query("//div[@id='aggregateCount']");
if ( isset( $filtered->item(0)->nodeValue ) ) {
$cars = array("u00c2", "u00a", ' ', 'ÂÂ', 'Ã', ',', 'Â', ' ');
$count = str_replace($cars, '', $filtered->item(0)->nodeValue );
$json['count'] = preg_replace( '#([0-9])#', '$1', $count );
}
}
elseif ( $network == 'stumble' || $network == 'stumbleupon' ) {
$content = parse("http://www.stumbleupon.com/services/1.01/badge.getinfo?url=$url");
$result = json_decode($content);
if ( isset($result->result->views )) {
$json['count'] = $result->result->views;
}
}
elseif ($network == "ok") {
$json['count'] = get_counter_number_odnoklassniki($url);
}
elseif ($network == "google") {
$json['count'] = getGplusShares($url);
}
elseif ($network == "reddit") {
$json['count'] = getRedditScore($url);
}
elseif ($network == 'vk') {
$json['count'] = get_counter_number__vk($url);
}
elseif ($network == "mwp") {
$json['count'] = getManagedWPUpVote($url);
}
elseif ($network == "xing") {
$json['count'] = getXingCount($url);
}
elseif ($network == "pocket") {
$json['count'] = getPocketCount($url);
}
elseif ($network == "linkedin") {
$json['count'] = get_linkedin($url);
}
}
echo str_replace('\\/','/',json_encode($json));
?>