Подсчёт количества расшариваний в Twitter, Facebook, ВКонтакте и Google+ на PHP

10 декабря 2013 | Автор: | Категория: JQuery и PHP

Несколько лет назад покупал скрипт «Холиватор», основное предназначение которого — проведение онлайн голосований, где пользователи отдают свои голоса посредством нажатия на кнопки социальных сетей Vkontakte, Facebook, Мой Мир и Twitter. Тогда даже получилось создать пару опросов за которые в итоге проголосовало несколько сотен человек, причём временные затраты на привлечение первых проголосовавших были минимальные. Возможно, даже напишу в ближайшем будущем пост на тему привлечения юзеров на сайт с голосованиями, так как тема в принципе работает и сейчас, главное — это придумать интересную идею, ну а дальше остаётся дело за малым…

Twitter, Facebook, ВКонтакте и Google Plus

В прочем сегодня речь пойдёт не об этом. Я не зря начал свой пост с рассказа про «Холиватор», одна из основных функций этого скрипта — подсчёт количества расшариваний страницы в Twitter, Facebook, Мой Мир и ВКонтакте.

Есть одна главная страница на которой отображается результат и две или три (в зависимости от того сколько доступно вариантов для голосования) идентичные ей.

Выглядит это примерно так:

http://website.ru/golosovanie/vote/10/ — основная страница
http://website.ru/golosovanie/vote/10/vote1 — страница с голосованием за первый вариант
http://website.ru/golosovanie/vote/10/vote2 — страница с голосованием за второй вариант

Именно страницы vote1 и vote2 будут шарится по соц сетям, затем нужно получить значения всех кнопок доступных для голосования, подсчитать сумму голосов и сравнив данные выдать результат в процентном соотношении.

Писать сам с нуля подобный скрипт я не рискнул, тем более что у меня есть готовый рабочий вариант;). А вот с тем как получить значения социальных кнопок стало интересно разобраться.

Кнопки социальной сети Мой Мир на своих сайтах я не юзаю, поэтому заменил её на Google+.

Получаем количество твитов в Twitter:

1
2
3
4
5
<?
$twitter_request = file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url='.$url);
$twitter = json_decode($twitter_request);
echo $twitter->count;
?>

Получаем количество лайков в Facebook:

1
2
3
4
5
6
<?
$facebook_request = file_get_contents('http://graph.facebook.com/'.$url);
$fb = json_decode($facebook_request);
if(property_exists($fb,'shares'))
echo $fb->shares;
?>

Получаем количество расшариваний ВКонтакте:

1
2
3
4
5
6
<?
$vk_request = file_get_contents('http://vk.com/share.php?act=count&index=1&url='.$url2);
$temp = array();
preg_match('/^VK.Share.count\(1, (\d+)\);$/i',$vk_request,$temp);
echo $temp[1];
?>

Получаем количество плюсиков в Google Plus:

1
2
3
4
5
<?
$google_request = file_get_contents('https://plusone.google.com/u/0/_/+1/fastbutton?count=true&url='.$url);
$plusone_count = preg_replace('/(.*)<div id="aggregateCount" class="Oy">(([0-9])*)<\/div>(.*)/is','$2',$google_request);
echo $plusone_count;
?>

Полный рабочий вариант скрипта для подсчёта количества расшариваний текущей страницы в социальных сетях Twitter, Facebook, ВКонтакте и Google Plus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?
// Получаем url текущей страницы
$url = 'http://'.$_SERVER[SERVER_NAME].$_SERVER[REQUEST_URI];
echo $url;
echo '<br>';
// Устанавливаем начальное значение счётчика
$i=0;
// Получаем количество твитов в Twitter для текущей страницы
$twitter_request = file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url='.$url);
$twitter = json_decode($twitter_request);
echo $twitter->count;
$i+=$twitter->count;
echo '<br>';
// Получаем количество лайков в Facebook для текущей страницы
$facebook_request = file_get_contents('http://graph.facebook.com/'.$url);
$fb = json_decode($facebook_request);
if(property_exists($fb,'shares'))
$i += $fb->shares;
echo $fb->shares;
// Получаем количество расшариваний ВКонтакте для текущей страницы
$vk_request = file_get_contents('http://vk.com/share.php?act=count&index=1&url='.$url);
$temp = array();
preg_match('/^VK.Share.count\(1, (\d+)\);$/i',$vk_request,$temp);
echo '<br>';
echo $temp[1];
$i += $temp[1];
// Получаем количество плюсиков в Google Plus для текущей страницы
$google_request = file_get_contents('https://plusone.google.com/u/0/_/+1/fastbutton?count=true&url='.$url);
$plusone_count = preg_replace('/(.*)<div id="aggregateCount" class="Oy">(([0-9])*)<\/div>(.*)/is','$2',$google_request);
echo '<br>';
echo $plusone_count;
$i += $plusone_count;
echo '<br>';
echo $i;
?>

Как видите скрипт получился довольно простой. Вся работа сводится к тому, что нужно получить данные по каждой социальной сети с помощью функции file_get_contents, а затем вытянуть нужные значения посредством JSON либо с помощью регулярных выражений.

Метки: 

Комментарии к "Подсчёт количества расшариваний в Twitter, Facebook, ВКонтакте и Google+ на PHP"

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *