vk_api
vk_api copied to clipboard
stop_fn в get_all_iter не работает
Ситуация такая: в 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
Вы передаете параметр stop_fn как параметр для вызова API функции, правильно будеть:
wall_it = tools.get_all_iter('wall.get', 100, {'owner_id': owner_id}, stop_fn=checkDate)