Форум сайта python.su
Есть пример в официальной документации библиотеки 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)
Использовать только если нужно загрузить все объекты в память.
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})Traceback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: VkApiMethod.__call__() takes 1 positional argument but 4 were given
Traceback (most recent call last):
File “C:\Python\proekt\vk\vk_api\main.py”, line 129, in main_vk
wall = tools.get_all('wall.get', 100, {'owner_id': acc})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: VkApiMethod.__call__() takes 1 positional argument but 4 were given
Офлайн
Тебе даже форум показывает что у тебя код синтаксичекие ошибки содержит ты пропустил символ екранировки
https://github.com/python273/vk_api/blob/master/examples/get_full_wall.py
вот попробуй скопировать и не удалять лишних строк
Офлайн
Вот так вот сразу - и глупый ответ????
А погуглить не судьба ошибку:
takes 1 positional argument but 4 were given
https://stackoverflow.com/questions/72614861/python-error-on-class-method-takes-1-positional-argument-but-2-were-given
По ссылки перейди и посмотри код.
https://github.com/python273/vk_api/blob/master/examples/get_full_wall.py
Я копировал пример из документации, а не свой рабочий код. У меня код проще.
def vk_auth(vid,acc_n): match vid: case "vk_api": # vk_session = vk_api.VkApi(token = acc[acc_n]['ACCESS_TOKEN']) vk_session = vk_api.VkApi(acc[acc_n]['ACCESS_TOKEN']) try: vk_session.auth(token_only=True) except vk_api.AuthError as error_msg: print(error_msg) return error_msg tools = vk_session.get_api() return tools case "vk": return 0 case "vkontakte": vk_session = vkontakte.API(token=acc[acc_n]['ACCESS_TOKEN']) tools = vkontakte.API(token=acc[acc_n]['ACCESS_TOKEN']) return tools case unknown_command: print(f"Unknown command'{unknown_command}'") def main_vk(): tools = vk_auth("vk_api",1) if (isinstance(tools, str)): print(tools) exit() # id_user = acc[1]['DOMAIN'] # print(id_user) try: wall = tools.get_all('wall.get', 100, {'owner_id': acc[1]['ID']}) except Exception as e: exception_traceback = traceback.format_exc() print(exception_traceback) exit() 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_vk() # main_req()
Офлайн
То есть ошибку выдает код написанный вами
но на форум вы выложили код из примера с гита
При этом как то так выложили что даже форум дает засвет из за пропущенных кавычек
(мы ведь предполагаем что вы выложили именно тот код который вы запускаете в том же виде где ошибка)
И мы в этой связке должны угадать что вы передаете в виде параметров в вашу функцию и соответствствует ли оно действительности?
При этом вы бросаете линк на овефлов который к вашей проблеме не имеет только косвенное отношение по общему названию ошибки
И мы тут все виноваты?
Вот для того что бы исключить человеческий фактор я вам и предложил
1. Возьмите полностью код из примера с гита
2. Измените в нем только логин пароль (айди если нужно)
(Не нужно создавать словарь список или класс для хранения паролей - просто замените в примере на свои)
3. Выполните код и предоставьте результаты - тогда можно смотреть в сторону библиотеки
Потому что как ваш код вобще работает а не вываливается в кору это уже большой вопрос.
Офлайн
vcomp71Учись копировать. Ты накопировал отовсюду из разных мест код в одну точку и потом её запускаешь. Конечно, она выдаёт какие-то ошибки непредсказуемые. Они вообще с методом не связаны.
Я копировал пример из документации
Офлайн
Are we all to blame when you included a link to an overflow error that is unrelated to your issue but shares the same name?
spacebar clicker
Офлайн