Не так давно возникла необходимость узнать количество пользователей социальной сети Вконтакте, которые поделились записью со своими друзьями, иными словами сделали репост. Для этих целей есть приложение «Вирусоанализатор», однако подсчет в нем ограничен 100 репостами. Полоса прокрутки при этом доходит до самого низа страницы, а затем останавливается. А поскольку все уже были оповещены о начале конкурса за самое большое количество репостов на названную запись, то требовался альтернативный вариант для подсчета. Такого варианта не было.
Статистика репостов ВК — Разрешение вопроса
Для разрешения проблемы потребовалось обратиться к API Вконтакте и поискать способы решения. Для этого не понадобилось разрабатывать standalone-приложение. Для этого нужно немного разбираться в компьютерах. Могу порекомендовать ремонт компьютеров в Долгопрудном — как профессионалов своего дела и хороших программистов. Проблема была решена с применением методов, которые не требуют access_token. Далее размещен ряд способов API, которые были использованы для разрешения проблемы:
- likes.getList – позволяет получить конкретный ряд юзеров, разместивших запись у себя на странице или нажимали кнопку «Мне нравится»;
- users.get – при помощи id или кратких имен юзеров дается информация о них;
- wall.get – позволяет получать новости конкретного юзера.
Положительные и отрицательные стороны репостов
Положительная сторона в том, что нет необходимости разрабатывать новое приложение.
А вот при детальном изучении вышеперечисленных методов API выявляется следующий недостаток – неудобство поиска конкретного репоста у пользователя. Способ wall.get позволяет получить лишь сто постов. Конечно такая функция имеет поддержку параметра offset, которые отвечает за смещение по новостям. Однако ограничимся обработкой 500 записей.
Возникающие проблемы
Требовалось извлечь информацию о записях и самих пользователях, которые разместили у себя в профиле нашу запись. Для того, чтобы вывести данный список применяется метод API likes.getList, обладающий параметром filter, а он в свою очередь принимает два вида:
- likes – юзеры, кликнувшие кнопку «Мне нравится»;
- copies – юзеры, разместившие требуемую запись у себя на странице.
Интересовал как раз последний параметр. Однако после некоторых операций выяснилось, что информация, которую удалось получить с помощью API, имеет расхождения с реальной.
К примеру, юзер, который разместил у себя запись не выявлялся при помощи метода likes.getList?filter=copies, однако присутствовал в списке тех, которые просто нажимали кнопку «Мне нравится». Затем был случай подобный этому, только наоборот.
Так что для большей точности выводимых результатов потребовалось обработать полный список – пользователей, которые лайкали запись, а также тех, которые жали кнопку «Поделиться».
В этой связи для показательных результатов необходимо обрабатывать полный список (те юзеры, которые кликнули и «Мне нравится», и «Поделиться»).
Использование данного класса дает возможность подсчитать количество репостов с пользовательской информацией. Этим же способом возможно подсчитывать лайки, однако потребуется применить ?filter=likes.
Это решение один из самых оптимальных вариантов подсчета данных, а также ведения статистики на сайтах, которые посвящены различным конкурсам и викторинам.