我使用Tweepy在python中编写了一个twitterbot。这是我的代码:
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
filename = open ('Shakespeare.txt', 'r')
tweettext = filename.readlines()
filename.close()
randomChoice = random.randrange(len(tweettext))
print (tweettext[randomChoice])
api.update_status(status=tweettext[randomChoice])
每当我在我的覆盆子pi上使用SSH运行它时,这都很有效 - 我的推文更新了我的推特。我的问题是:我想在每条随机推文中添加莎士比亚的图片(总是相同的图片)。
一个解决方案是:
file = open('Your_image.png', 'rb')
data = file.read()
r = api.request('statuses/update_with_media', {'status':'Your tweet'}, {'media[]':data})
print(r.status_code)
但是,我不知道如何将其合并到我现有的代码中。任何建议都将非常感谢。
我也想随机上传我的照片。以下是我从/ home / pi中选择随机图像的代码:
'def get_random_image_from_folder(folder):
media_list = list()
for dirpath, dirnames, files in os.walk(folder):
for f in files:
media_list.append(os.path.join(dirpath, f))
media = random.choice(media_list)
return media, len(media_list)'
我的问题是:如何编写api状态更新代码?我输入的代码在这里:
'api.update_status(status=tweettext[randomChoice], media=random.choice(media_list))'
但是,这会产生以下错误:
'Traceback(最近一次调用最后一次): 文件“Shakebot.py”,第30行,in api.update_status(status = tweettext [randomChoice],media = random.choice(media_list)) NameError:名称'media_list'未定义'
我不明白,因为'media_list'是在图片位置定义的。
答案 0 :(得分:2)
update_with_media
欠记录。
您应该使用media_upload
(Twitter Developers; Tweepy文档已过时,但您可以检查Twitter docs处的代码),这将返回media_id_string作为上传响应的一部分,然后您可以使用media_id_string(或字符串,最多可以附加4个图像)发送包含文本和列表的推文。
以下是使用media_upload
的代码:
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
filename = open ('Shakespeare.txt', 'r')
tweettext = filename.readlines()
filename.close()
media_list = list()
response = api.media_upload('Your_image.png')
media_list.append(response.media_id_string)
randomChoice = random.randrange(len(tweettext))
print (tweettext[randomChoice])
api.update_status(status=tweettext[randomChoice], media_ids=media_list)
答案 1 :(得分:0)
如果您想在代码中合并图片上传部分。你可以这样做:
file = open('Your_image.png', 'rb')
data = file.read()
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
filename = open ('Shakespeare.txt', 'r')
tweettext = filename.readlines()
filename.close()
randomChoice = random.randrange(len(tweettext))
print (tweettext[randomChoice])
r = api.request('statuses/update_with_media', {'status':tweettext[randomChoice]}, {'media[]':data})
print(r.status_code)