vcomp71
@vcomp71
Системный администратор и программист

Метод get_all из библиотеки vk_api не работает — почему?

Есть пример в официальной документации библиотеки vk_api
https://pypi.org/project/vk-api/
get_all(method, max_count, values=None, key='items', limit=None, stop_fn=None, negative_offset=False)[source]¶
Использовать только если нужно загрузить все объекты в память.
Eсли вы можете обрабатывать объекты по частям, то лучше использовать get_all_iter
Например если вы записываете объекты в БД, то нет смысла загружать все данные в память


def main():
    """ Пример получения всех постов со стены """

    login, password = 'python@vk.com', 'mypassword'
    vk_session = vk_api.VkApi(login, password)

    try:
        vk_session.auth(token_only=True)
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return
    tools = vk_api.VkTools(vk_session)
        При использовании get_all сокращается количество запросов к API
        за счет метода execute в 25 раз.

        Например за раз со стены можно получить 100 * 25 = 2500, где
        100 - максимальное количество постов, которое можно получить за один
        запрос (обычно написано на странице с описанием метода)
    """

    wall = tools.get_all('wall.get', 100, {'owner_id': 1})

    print('Posts count:', wall['count'])

    if wall['count']:
        print('First post:', wall['items'][0], '\n')

    if wall['count'] > 1:
        print('Last post:', wall['items'][-1])
if __name__ == '__main__':
    main()


При запуске метода пишет ошибку:

wall = tools.get_all('wall.get', 100, {'owner_id': 1})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: VkApiMethod.__call__() takes 1 positional argument but 4 were given


Странно, пример взят прямо из документации. Что изменилось? Метод нужен, чтобы получить все посты со стены без ограничений.
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽