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