Есть пример в официальной документации библиотеки 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)
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
Странно, пример взят прямо из документации. Что изменилось? Метод нужен, чтобы получить все посты со стены без ограничений.