vk_api icon indicating copy to clipboard operation
vk_api copied to clipboard

stop_fn в get_all_iter не работает

Open Kaiftsm opened this issue 3 years ago • 1 comments

Ситуация такая: в get_all_iter прописываю фунцию stop_fn, а она выдаёт ошибку "TypeError: Object of type function is not JSON serializable"

# -*- coding: utf-8 -*-
import vk_api
import json



login, password = '***', '***'
def captcha_handler(captcha):
    key = input("Enter captcha code {0}: ".format(captcha.get_url())).strip()
    return captcha.try_again(key)

vk_session = vk_api.VkApi(login, password, captcha_handler=captcha_handler)
try:
	vk_session.auth(token_only=True)
except vk_api.AuthError as error_msg:
	print(error_msg)
	exit()

vk = vk_session.get_api()


tools = vk_api.VkTools(vk_session)

def checkDate(items):
	return True

def getPostsFromWall(owner_id, farthestDate):
	wall_it = tools.get_all_iter('wall.get', 100, {'owner_id': owner_id, 'stop_fn': checkDate})
	return(wall_it)

wall_it = getPostsFromWall(-***, ***)
for i, item in enumerate(wall_it, 1):
      pass

^ этого достаточно для репродукции ошибки, но в реальности, вот функция checkDate которую я пытаюсь использовать, с передачей ей items от get_all_iter и farthestDate от getPostsFromWall:

def checkDate(items, farthestDate):
 if items[-1]['date'] < farthestDate: #проверка если последний скаченный пост был опубликован раньше заданной даты по unix timestamp 
  return True
 else:
  return False

Kaiftsm avatar Apr 27 '22 10:04 Kaiftsm

Вы передаете параметр stop_fn как параметр для вызова API функции, правильно будеть: wall_it = tools.get_all_iter('wall.get', 100, {'owner_id': owner_id}, stop_fn=checkDate)

SPRAVEDLIVO avatar Jun 01 '22 10:06 SPRAVEDLIVO