Помогите с кодом для vk execute

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
549
Благодарностей
304
Баллы
63
Есть задача спарсить информацию о пользователях. Лимит метода АПИ users.get = 1000 id, через execute можно обработать сразу 25000 id

Код execute:
C#:
var userId = {UserId()}; //{UserId()} передает 25000 id;
var i = 1;
var result = {};
while(i <= 25)
{
    i = i + 1;
    var id = userId; //(как разбить userId по 1000?)
    var a=API.users.get({\"user_ids\":\"id\",\"fields\":\"bdate\"});
    result = result + a;
}
return result ;
Через метод UserId(); передаются в код user id в string формате (1,2,3,4,5) - вопрос как лучше их передать в код execute чтобы легче с ними было работать?
UserId() в код execute передает сразу 25000 id, как мне внутри execute через while разбить эти 25000 id по 1000 id, чтобы потом одним запросом спарсить данные о всех 25000 id.
 
Последнее редактирование:

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
179
Баллы
43
Есть задача спарсить информацию о пользователях. Лимит метода АПИ users.get = 1000 id, через execute можно обработать сразу 25000 id

Код execute:
C#:
var userId = {UserId()}; //{UserId()} передает 25000 id;
var i = 1;
var result = {};
while(i <= 25)
{
    i = i + 1;
    var id = userId; //(как разбить userId по 1000?)
    var a=API.users.get({\"user_ids\":\"id\",\"fields\":\"bdate\"});
    result = result + a;
}
return result ;
Через метод UserId(); передаются в код user id в string формате (1,2,3,4,5) - вопрос как лучше их передать в код execute чтобы легче с ними было работать?
UserId() в код execute передает сразу 25000 id, как мне внутри execute через while разбить эти 25000 id по 1000 id, чтобы потом одним запросом спарсить данные о всех 25000 id.
C#:
var userId = {UserId()}; //{UserId()} передает 25000 id;
var i = 1;
var result = {};

var list = userId.ToList();
int startIndex = 0;
int count = 1000;

while(i <= 25)
{
    
    i++;
   // var id = userId; //(как разбить userId по 1000?)
    var id = list.GetRange(startIndex,count);
    var a=API.users.get({\"user_ids\":\"id\",\"fields\":\"bdate\"});
    result = result + a;
    startIndex+=count;
}
return result ;
Примерно так
 
  • Спасибо
Реакции: Dmitriy Ka

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
549
Благодарностей
304
Баллы
63
cod execute не умеет работать с ToList()

Проблема в том что cod execute работает не через C#, а через VKScript
код алгоритма в VKScript - формате, похожем на JavaSсript или ActionScript (предполагается совместимость с ECMAScript). Алгоритм должен завершаться командой return %выражение%. Операторы должны быть разделены точкой с запятой.
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
549
Благодарностей
304
Баллы
63
Вроде получилось через массив

C#:
var userId = $"{UserId()}";
var result = {};
var i = 1;
var arrId = userId.split(',');

var begin = 0;
var end = 10;
var count = 10;

while(i <= 25)
{
    i = i + 1;
    begin = begin + count;
    end = end + count;
    var a = API.users.get({"user_ids":arrId.slice(begin, end),"fields":"can_write_private_message,sex,last_seen"}); // тут был косяк "user_ids":"arrId.slice(begin, end)" с кавычками
    result = result + a;
}
return result;
Правда обработать 25000 id одним запросом не получается)) слишком много контента видимо, но 22000 вроде работает)
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)