Получение количества реакций из русских соцсетей на php

Про то, что пресловутый вКонтакт дает немало трафика было известно давно. Апгрейд Одноклассников позволил делиться ссылками и прочим (ну хоть в 2011 году и то хорошо).

Все эти сервисы имеют свои кнопочки, надавив на которые можно схоронить понравившийся контент. В теории рядом с кнопочкой может быть показано число раз, которое её нажали.

На практике это использовать совершенно невозможно ибо кнопки разного размера, требуют подключения своих ява-скриптов, ну и на закуску выглядят совершенно мерзко (особенно желтая кнопка "Класс" от Одноклассников).

Тем не менее, вот вам способ учета таких реакций, написанный на чистом php (два часа чтения api c regexp и готово =). Осторожно, учитывая что там каждый раз используется file_get_contents, можно положить сервер на посещаемых ресурсах. Кеширование припилите сами.

function react_odnoklassniki($url) { $rq = file_get_contents('http://www.odnoklassniki.ru/dk?st.cmd=extOneClickLike&uid=odklocs0&ref='.urlencode($url)); if ( !$rq ) return 0; return preg_match("/^ODKL.updateCountOC\('[\d\w]+','(\d+)','(\d+)','(\d+)'\);$/i", $rq, $i) ? (int) $i[1] : 0; }

function react_vkontakt($url) { $rq = file_get_contents('http://vkontakte.ru/share.php?act=count&index=1&url='.urlencode($url)); if ( !$rq ) return 0; return preg_match('/^VK.Share.count\((\d+),\s+(\d+)\);$/i', $rq, $i) ? (int) $i[2] : 0; }

$react_url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $social_reactions = react_odnoklassniki($react_url) + react_vkontakt($react_url); echo 'Страница была упомянута в одноклассниках и вконтактах ' . $social_reactions . ' раз.';

Я не поэт, код прожорливый и грязный, но работает.