Как получить количество лайков, твитов, google +1 для URL с помощью PHP?

Социальные сети для большинства людей являются неотъемлемой частью их повседневной жизни. На данный момент самыми популярными социальными сетями в мире являются: Facebook, Twitter, Вконтакте и Google +1. Рядовой пользователь по статистическим данным в сети Facebook проводит в среднем около 7 часов в месяц. В остальных соцсетях проведенное время также исчисляется часами. Нам, как веб-разработчикам и интернет-маркетологам, для решения своих задач нужно знать максимум параметров, которые используются в современных «пожирателях времени». И в этом посте я хочу привести примеры кода, которые позволят получать количество лайков, твитов, google +1 для веб страницы.
Начнем с сервиса микроблогов Twitter. Получить количество твитов веб-страницы можно с помощью следующего кода. Используется API Twitter.

function get_tweets($url) {
 
    $json_string = file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url=' . $url);
    $json = json_decode($json_string, true);
 
    return intval( $json['count'] );
}

Теперь рассмотрим функцию, которая возвращает количество +1 социальной сети Google. Обратите внимание, что на вашем сервере должен быть установлен CURL для работы этой функции.

function get_plusones($url) {
 
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "https://clients6.google.com/rpc");
    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);
 
    return intval( $json[0]['result']['metadata']['globalCounts']['count'] );
}

Для Facebook количество лайков можно получить так:

function get_likes($url) {
    $json_string = file_get_contents('http://graph.facebook.com/?ids='.$url);
    $json = json_decode($json_string, true);
 
    if($json){
        foreach($json as $key => $value){
            if(isset($value['shares'])){
                return intval( @$value['shares']);
            }
            else{
                return 0;
            }
        }
    }
    else{
        return 0;
    }
}

Вы, наверное, спросите «А что насчет социальной сети № 1 в Рунете?». Как всегда, нормальных официальных методов получить количество «мне нравится» для страницы нет. Как все-таки сделать это — можете посмотреть тут.
Для чего вам может пригодиться этот функционал? Например, для всевозможных голосований с помощью соцсетей. Либо для сортировки материалов сайта по общему количеству like в соцсетях. А какие Вы видите варианты использования?

Запись опубликована в рубрике php с метками , , , . Добавьте в закладки постоянную ссылку.
  • Alexey Smargunov

    А как на счет получения данных для нескольких адресов в одном запросе? Интересует twitter и google +1.

    А вообще — спасибо за статью.