Vk-selections Утилита для создания выборок пользователей на основе списков друзей и подписчиков групп. Язык: С++

Слайд 2

Содержание

Работа с API VK. Вызов методов и общение с ботом через

Содержание Работа с API VK. Вызов методов и общение с ботом через
диалог
Создание выборок. Сбор и хранение данных, обработка формулы запроса
Работа с ботом
TODO

Слайд 3

Работа с API VK

Для работы с API используется отправка GET запросов с

Работа с API VK Для работы с API используется отправка GET запросов
помощью функции.

apiRequest(method, parameters, token, version)

Отправка запроса осуществляется с помощью функций библиотеки CURL.
Результатом работы функции является json объект. Для работы с json используется header-only библиотека nlohmann/json.

Слайд 4

Работа с API VK

Для общения с ботом используется объект класса ChatBot, способный

Работа с API VK Для общения с ботом используется объект класса ChatBot,
ожидать сообщения и отвечать на них.
Ожидание сообщения реализовано в виде longpoll-запросов.

ChatBot bot(token, group_id);
bot.setOnlineStatus(true);
bot.start([&] (Message m, bool isOld) {
cout << (isOld ? "(Old message) " : "") <<
m.sender << " send message to " << m.receiver <<
" with id " << m.id << " at " << m.ts <<
". Content: " << endl << m.text << endl;
bot.markAsRead(m);
});

Слайд 5

Создание выборок

Каждая выборка представляет из себя набор пар type-id.
Для хранения используется бинарный

Создание выборок Каждая выборка представляет из себя набор пар type-id. Для хранения
файл. Каждый Unit в нём занимает 5 байт. Таким образом, выборка из 15 миллионов пользователей (самая крупная группа на данный момент) будет занимать в памяти порядка 75МБ.
Источником выборки служит множество друзей пользователя или множество подписчиков группы.

Unit user = Unit(123456, true, stoken);
Unit group = Unit("exclusive_muzic", gtoken);
Selection s = music.members(gtoken) &&
!user.friends(gtoken);

Слайд 6

Работа с ботом

Работа с ботом осуществляется через диалог сообщества.
Для запроса выборки надо

Работа с ботом Работа с ботом осуществляется через диалог сообщества. Для запроса
отправить сообщения вида
!selection (id123.friends || mmspbu.members) && habr.auto
В ответ бот пошлёт информацию о выборке и текстовый файл, содержащий id пользователей.