Итак, моё решение. Корявое, но работает.
1.
vk.com/dev/execute
Вводим код:
var group_id = <id группы>;
var users = [];
var count = API.groups.getMembers({group_id: group_id}).count;
var offset = 0;
while (offset < count && offset <= 23000) {
users = users + API.groups.getMembers({group_id: group_id, offset: offset, count: 1000}).users;
offset = offset + 1000;
}
return users;
Полученный массив сохраняем в txt, заботливо заменив через Ctrl+H все запятые на ничего, чтобы было легче скормить будующей программке.
2.
vk.com/dev.php?method=likes.getList
Здесь получаем массив id пользователей, оценивших запись, и записываем его в новый txt.
3. Мой корявый код программки, выводящей общие элементы этих массивов в новый файл.
#include #include #include <assert.h>
using namespace std;
int main()
{
//
int a[10000];
int i=0;
int j=0;
int s=0;
int b[200];
ifstream in;
ofstream out;
in.open(«input_1.txt»);
while (!in.eof()) {
i++;
in>>a[i];
}
in.close();
i=0;
in.open(«input_2.txt»);
while (!in.eof()) {
i++;
in>>b[i];
}
in.close();
out.open(«output_1.txt»);
for (i=0;i<9380;++i)
{
for (j=0;j<171;++j)
{
if (a[i]==b[j])
{
out<<a[i]<<", ";
cout<<j<<endl;
s++;
};
};
};
out<<endl<<«Total: „<<s;
out.close();
cin.get();
//
return 0;
}
Параметры a,b и условия циклов изменяются в зависимости от условий :)
Делал всё прямо в отладчике, поэтому изменяется всё прямо в коде.
Дальше чистим output_1 от возможно появившихся там нулей (так что Total не такую уж и правду говорит), запятые оставляем, потому что нам это потом скармливать VK…
4.
vk.com/dev/users.get
Скармливаем сюда список полученных в третьем пункте id. На выходе получаем список id уже с именами и фамилиями (если fields оставить пустым).
5. Ну, этот список загоняем в txt и уже через Ctrl+H можно его привести в более-менее адекватный вид.
В общем, всё. Уверен, кто-то может сделать гораздо лучше, но и такой вот вариант с задачей справился.