Подсчет репостов сайта в социальных сетях с помощью php

Подсчет репостов сайта в социальных сетях с помощью php

Статья является продолжением прошлой публикации, где были реализованы кнопки шерингов социальных сетей. Чтобы оживить кнопки и сделать максимально похожими на стандартные виджеты, стоит добавить счетчики репостов. Получить нужные циферки можно записав количество кликов в базу данных, а потом сделать вывод на страницах сайта. Но такой способ имеет кучу недостатков: первый и самый весомый – это то, что пользователь, кликнув по кнопке, может закрыть окно с предложением сделать репост, а клик уже будет засчитан. Поэтому такой вариант сразу отпадает. Но есть возможность получать количество шерингов прямо от соц.сетей, для этого у них есть специальные api, воспользоваться ими будет самым правильным решением.

Количество репостов страницы в социальных сетях с помощью php

Как я уже сказал, у соц.сетей есть апи, которые любезно отдают информацию о количестве репостов конкретной страницы. Но тут есть ряд подводных камней. В первую очередь стоит обратить внимание на то, что facebook и одноклассники кешируют эти данные на которое короткое время. Поэтому если делать какой-то конкурс с подсчетом репостов, где необходимо быстро получить актуальную информацию по количеству шерингов, то это способ может устроить проблем. Но для обычных кнопок такой подход идеальный.
Еще один большой минус, это отсутствие api у google+ и twitter. В 2015 году твиттер закрыл api и даже перестал выводить счетчики на своих «родных» кнопках, которые предоставляет в виджетах. Гугл вообще ни когда не давал таких api, однако одно время был способ вытащить количество шерингов из виджета, который можно было получать и парсить. Но относительно недавно, google+ последовал примеру twitter и так же перестал выводить счетчик на кнопках.
Таким образом, сейчас без лишних ухищрений(хранения количества репостов в своей БД) можно получить данные о шерингах от таких соц.сетей, как ВКонтакте, Facebook и Одноклассники. Возможно, есть способы и для других сетей – Мой Мир, Pinterest и т.д., но популярность таких сайтов значительно ниже, и сталкиваться с ними по работе ни разу не приходилось, поэтому смысла разбираться с ними я пока не вижу.
Ниже приведена функция, для получения количества репостов во ВКонтакте, Facebook и Одноклассниках.

/**
* Получение количество репостов страницы в соцсетях
*
* @param string $url_share - url страницы
* @param string $social vk|fb|ok - соц.сеть
*
* @return int - количество репостов
*/
function getCountSharePage($url_share, $social){
	$result = 0;
	switch($social){
		case "vk":
			$result = file_get_contents("https://vk.com/share.php?act=count&index=1&url=" . $url_share);
			$result = str_replace("VK.Share.count(1, ", "", $result);
			$result = (int)str_replace(");", "", $result);
			break;
			
		case "fb":
			$result = file_get_contents("http://graph.facebook.com/" . $url_share);
			$result = json_decode($result);
			$result = (int)$result->share->share_count;
			break;
		
		case "ok":
			$result = file_get_contents("https://connect.ok.ru/dk?st.cmd=extLike&tp=json&ref=" . $url_share);
			$result = json_decode($result);
			$result = (int)$result->count;
			break;
			
		default:
			$result = 0;
			break;
		
	}
	return $result;
}

И пример использования:

// пример использования
// страница, для которой будут подсчитаны репосты
$url_share = urlencode("http://vk-book.ru/otpravka-pisem-cherez-smtp-s-avtorizaciej-po-protokolu-ssl-na-php/");
// в какой соц.сети считать репосты
$social = "vk";
//$social = "fb";
//$social = "ok";

// получение количество репостов
$count_share = getCountSharePage($url_share, $social);
// вывод результата
var_dump($count_share);

Послесловие

Если вы знаете какие-то еще способы для получения количества репостов, то сообщите мне об этом, буду весьма признателен. А также, если кто-нибудь сталкивался с использованием кнопок шерингов, от менее популярных, соц.сетей, тоже отпишитесь в комментариях или мне на почту – интересно узнать статистику, а то вполне возможно, что я отстал от, стремительно развивающегося, интернета.

Рассказать друзьям:


Оценить:
(5 оценок, среднее: 4,80 из 5)

Подсчет репостов сайта в социальных сетях с помощью php: 2 комментария

  1. А если кнопки стоят от какого-либо сервиса, например Яндекс, есть возможность подсчитать количество репостов страниц в социальные сети?

    1. Механизм репостов везде одинаковый, должно количество подсчитываться. Не важно через какой сервис были репосты сделаны

Добавить комментарий для admin Отменить ответ

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

*

code