我正在使用InstagramAPI module from this github创建一个在特定时间发布图片的脚本。下面的代码段显示了部分代码:
Insta = InstagramAPI(account_name, password)
Insta.login()
InstagramAPI.uploadPhoto(post_path, caption)
InstagramAPI.logout()
这样可以正常工作,除非图片格式错误。如果格式错误,则不会发布任何内容并打印出来:
Request return 400 error!
{u'status': u'fail', u'message': u"Uploaded image isn't in the right format"}
我有一个函数,如果格式不正确,将重新调整大小。 但是,它只是打印而不是错误。因此,我不能把它放在试试/除外。因此,如果文件格式不正确,则只会跳过并发布任何内容。
有没有人知道我可以让我的代码将打印输出保存到变量的方式,以便我可以检查它是否包含“上传的图像格式不正确”并且如果是这样会引发错误?
答案 0 :(得分:1)
InstagramAPI.uploadPhoto()
如果尝试发布您的照片失败,则会返回False
。你可以这样做:
Insta = InstagramAPI(account_name, password)
Insta.login()
success = Insta.uploadPhoto(post_path, caption)
if not success:
resizeImage() # your resize image logic
else:
Insta.logout()
这将检查是否已成功上传,如果没有,您可以调整图片大小并尝试重新上传。
在你的评论中,你说它无论成功与否都会返回False,但我觉得很难相信。在uploadPhoto()
我们看到了这一点:
response = self.s.post(self.API_URL + "upload/photo/", data=m.to_string())
if response.status_code == 200:
if self.configure(upload_id, photo, caption):
self.expose()
return False
如果响应代码不等于200或者self.configure()
返回falsey值,则只返回False。
self.configure()
仅生成请求正文并调用:
return self.SendRequest('media/configure/?', self.generateSignature(data))
如果您对Instagram API的请求成功,将返回true:
if response.status_code == 200:
self.LastResponse = response
self.LastJson = json.loads(response.text)
return True