我正在用python编写一些机器人程序,并认为一切正常。我偶然发现了一个非常奇怪的错误:
Traceback (most recent call last):
File "/home/kali/PycharmProjects/instabotv4_TEMPLATE/main.py", line 104, in <module>
schedule.every().hour().do(post)
TypeError: 'Job' object is not callable
我在使用schedule时从未遇到过此错误。搜索其他问题时
关于“XXX对象不可调用”,这总是有道理的,因为人们试图调用的对象是整数和列表。但是当我运行print(type(post))
时,我得到了以下输出:
<class 'function'>
我查看了最近是否对软件包进行了更新,但最后一次更新是在2019年。 以下是源代码:
from instagrapi import Client
from PIL import Image
from pathlib import Path
from time import sleep
import requests
import praw
import json
import schedule
import random
import os
import io
record = "post_ids.txt"
secret = "info.json"
# turn any picture into a square
def make_square(im, min_size=256, fill_color=(0, 0, 0, 0)):
x, y = im.size
size = max(min_size, x, y)
new_im = Image.new('RGB', (size, size), fill_color)
new_im.paste(im, (int((size - x) / 2), int((size - y) / 2)))
return new_im
def square_and_save(name, image_link):
image = requests.get(image_link)
image_bytes = io.BytesIO(image.content)
image_pil = Image.open(image_bytes)
image_pil = make_square(image_pil)
image_pil.save(name)
# reading secret information regarding instagram and reddit client
with open(secret) as json_file:
info = json.load(json_file)
reddit_info = info["RedditInfo"]
instagram_info = info["InstagramInfo"]
reddit = praw.Reddit(
client_id=reddit_info["client_id"],
client_secret=reddit_info["client_secret"],
user_agent=reddit_info["user_agent"],
username=reddit_info["username"],
password=reddit_info["password"]
)
subreddit = reddit.subreddit(reddit_info["subreddit"])
instagram_client = Client()
instagram_client.login(instagram_info["username"], instagram_info["password"])
def post():
feed = subreddit.hot(limit=10)
for submission in feed:
if submission.is_video:
continue
if submission.pinned:
continue
if submission.over_18:
continue
submission_info = vars(submission)
try:
post_id = str(submission_info['id'])
lines = []
with open(record, 'r+') as history:
for line in history:
lines.append(line.rstrip('\n'))
if post_id not in lines:
history.write(post_id)
history.write('\n')
if post_id in lines:
continue
title = str(submission_info['title'])
author = str(submission_info['author'])
image_link = str(submission_info['url'])
permalink = str(submission_info['permalink'])
name = post_id + '.jpg'
square_and_save(name=name, image_link=image_link)
try:
tags = open("tags/" + random.choice(os.listdir("tags"))).read()
except:
tags = ""
caption = '"{title}"\n posted by: {author} (on reddit)\n https://reddit.com{permalink} \n*\n*\n*\n {tags}'\
.format(title=title, author=author, permalink=permalink, tags=tags)
instagram_client.photo_upload(path=Path(name), caption=caption)
os.remove(Path(name))
break
except KeyError as e:
print(e.args[0] + " key missing")
print(type(post))
schedule.every().hour().do(post)
while True:
schedule.run_pending()
sleep(5)
不要打电话给
hour
,一定要打基于:https://github.com/dbader/schedule/issues/45#issuecomment-118030275
相关问题 更多 >
编程相关推荐