Класс PHP для получения количества ссылок на страницу из социальных сетей.

13.04.2011 10:43

По мотивам предыдущего поста написал класс для PHP, с помощью которого можно получить количество ссылок на страницу в известных социальных сетях.
Поддерживает ВКонтакте, Facebook, Twitter, Google Buzz, Одноклассники, LinkedIn, Ya.ru, Мой Мир.

Подробности и примеры использования далее.

Скачать сам класс можно тут.

Использование выглядит вот так. Для получения количества ссылок из всех известных классу социальных сетей:

1
2
3
4
5
require('socialsharescount.php');
$soc = new SocialSharesCount('http://korrespondent.net/');
$social_data = $soc->get();
print("<pre>");
print_r($social_data);

Если необходимо получить только количества ссылок на страницу только из определенных социальных сетей:

1
2
3
4
5
require('socialsharescount.php');
$soc = new SocialSharesCount('http://korrespondent.net/',array('vkontakte','facebook','twitter'));
$social_data = $soc->get();
print("<pre>");
print_r($social_data);

Возвращаемое классом значение выглядит вот таким образом:

Array
(
    [odnoklassniki] => 1
    [yaru] => 4
    [buzz] => 25057
    [linkedin] => 2
    [twitter] => 86
    [facebook] => 107
    [vkontakte] => 29
    [moimir] => 18
    [plusone] => 38
)

Во втором параметре конструктора можно использовать такие элементы массива: ‘odnoklassniki’, ‘yaru’, ‘buzz’, ‘linkedin’, ‘twitter’, ‘facebook’, ‘vkontakte’,'moimir’,'plusone’.

В случае, если классу передать социальную сеть, о которой он не знает – будет сгенерирован warning.
Если у класса, по каким-то причинам, не получится получить ответ от социальной сети или разобрать его, в возвращаемом значении в элементе массива, ключ которого соответствует названию этой социальной сети, значение будет равно false.

UPDATE: В список поддерживаемых социальных сетей добавлен «Мой Мир» Mail.ru.
UPDATE2: В список поддерживаемых добавлен Google Plus Button.


Метки: ,


Каментов: 23

  1. Anton:

    Привет. Очень здорово.
    А «мой мир» мейловский можешь еще добавить?

  2. Привет! Большое спасибо!

    echo array_sum($social_data);

    Можно за суммировать общее количество.
    У меня вопрос на миллион. Как можно заставить запускаться этот класс в определенное время и результат вносить в текстовый файл, к примеру.
    Дабы не создавать нагрузки. Т.к. время генерации страницы 0.9 – 1 секунда, а это очень много

    • ar3b:

      Ну, вообще, это самый правильный вариант, которым пользуюсь и я.
      Только писать, конечно, надо не в текстовый файл, а в базу данных. :)

      А насчет расписания – cron (http://ru.wikipedia.org/wiki/Cron) вам в помощь. К сожалению есть его настройки не на всех shared-хостингах.
      Но если у Вас свой сервер – то это не проблема.

      Я обычно пользуюсь услугами хостинга Freehost – у них есть возможность управления расписаниями.

  3. Огромное вас спасибо) Очень помог ваш класс.
    А как быть с кнопкой гугл плюс? не подскажете как получить количество голосов с нее)

  4. Такой вопрос:
    $soc = new SocialSharesCount(‘http://korrespondent.net',array('vkontakte','facebook','twitter‘)); – так все работает
    А если $soc = new
    $blabla=’?tuda=suda&cuda’; SocialSharesCount(‘http://korrespondent.net'.$blabla,array('vkontakte','facebook','twitter‘)); – ни в какую. не отображает количество голосов.
    print_r($soc); выводит ссылку, я по ней перехожу на нужную страницу.
    Но если я пишу :
    $soc = new
    SocialSharesCount(‘http://korrespondent.net?tuda=suda&cuda',array('vkontakte','facebook','twitter‘));

    Где что не так? подскажите, пожалуйста.

  5. владимир:

    планируется ли добавить подсчет +1 гугла? или результаты Buzz сходны? спасибо

  6. Отличный пост. Я часа 2 провел в поисках всех ссылок на получение плюсов в различных соц сетях, а тут смотрю за меня уже все в кучу собрали =)
    Посмотрим как это будет работать в цикле по крону…
    думаю раз в день будет достаточно рейтинги забирать.

  7. А есть ли возможность для g+ получить не количество «лайков» а количество ссылок на страницу?

  8. Алексей:

    Евгений, а можно это за отдельную плату немного допилить для употребления в вордпрессе?
    Напишите мне, пожалуйста, на почту

    • ar3b:

      Так а че там пилить-то. WordPress на php, класс на php… Вставляйте в нужные шаблоны да и пользуйтесь :)

  9. Для G+ поправь регулярку. Видемо после написания скрипта что то поменялось.
    preg_match(‘/\(\d+)\/i’,$request,$tmp))

  10. Извиняюсь. забыл что CMS лишнее фильтрует. У дива в котором количество лайков класс другой стал.
    class=»t1″

  11. Андрей:

    Для facebook у вас по моему не верный url по нему для разных доменов возвращается разный результат. Вот более правильный url

    https://api.facebook.com/method/fql.query?query=select total_count from link_stat where%20url=»http://corx.ru»&format=json&callback=?

    Да, еще стоит в статье упомянуть что по всем сервисам стоит отправлять именно конкретную ссылку начиная от http:// так как от этого напрямую зависит количество найденных результатов.

    • Андрей:

      https://api.facebook.com/method/fql.query?query=select total_count from link_stat where url=»http://corx.ru»&format=json

      Вот чтобы было понятней. Домен должен быть в «», а

      P.S. Кстати параметры callback=? можно убрать во всех сервисах, тогда результат будет json и можно будет обойтись без регулярок.

  12. Андрей:

    Для однокласников есть как минимум три варианта ссылок:
    - http://www.odnoklassniki.ru/dk?st.cmd=shareData&cb=a&ref=YOUR_LINK (в кнопках используется этот вариант)
    - http://www.odnoklassniki.ru/dk?st.cmd=extLike&uid=odklcnt0&ref=YOUR_LINK
    - то что в коде

Оставить камент