SonnySP
@SonnySP
Very Junior Java

VK Api запрос groups.getMembers. Как работает?

Доброго времени суток.

Пишу парсер для вконтакте, один из блоков вытягивает id участников группы, вот код.

ArrayList<String> getLinksList() throws IOException, ClientException, ApiException {
        ArrayList<String> linksList = new ArrayList<>();

        List<Integer> linkList = vkApiClient.groups().getMembers(actor).groupId(getGroupLink()).offset(getOffset()).execute().getItems();


        for (Integer friend : linkList) {
            linksList.add("https://vk.com/id"+friend+"\r\n");
        }
        return linksList;
    }

    Integer getMembersCount() throws ClientException, ApiException {
        actor = AuthorizationOnVkCom.getActor();
        return vkApiClient.groups().getMembers(actor).groupId(getGroupLink()).execute().getCount();
    }


Сначала контроллер запрашивает количество участников группы, на основе этого числа идёт прогресс бар, и запрашивается следующая порция участников(максимальное количество объектов в ответе == 1000).

Изначально тестировал на группе в 3к пользователей, всё хорошо работает. Потом стало интересно, как сделать парсинг закрытых групп. Ну а так как мне нужны только id участников, а эта информация общедоступна, то просто забил в свой парсер ссылку на одну закрытую группу. Он сразу же схватил и пошёл парсить.

Собственно проблема в чём. При парсинге группы с количеством участников больше 8 000, парсер встаёт как раз на этих 8 тысячах. Пробовал добавить задержку, не помогло.

Есть какие нибудь идеи?
  • Вопрос задан
  • 1315 просмотров
Решения вопроса 1
SonnySP
@SonnySP Автор вопроса
Very Junior Java
Каюсь. Я ставил задержку в 100мс, ничего не сработало.

Экспериментальным путем выяснил минимально возможную задержку в 221мс(больше можно, но зачем?), меньше задержку уже не воспринимает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы