您好我一直在尝试使用python中的twitterAPI模块向推文添加四张图片 - 不幸的是,下面的代码只会从推文中的数据中呈现其中一张图片。有人能指出我正确的方向将四个图像附加到推文上吗?我的代码在下面(减去导入和密钥)
api = TwitterAPI(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET)
output_message = "Four Cool Images:"
data = ""
for x in range(0, 4):`enter code here`
filename = "/temp/images/image" + x + ".jpg" # file name of image.
file = open(filename, 'rb')
stream = file.read()
data = data + stream
r = api.request('statuses/update_with_media', {'status':output_message}, {'media[]':data})
print(r.status_code)
答案 0 :(得分:3)
参数列表media_ids
必须是以逗号分隔media_ids
的字符串。
答案 1 :(得分:1)
'statuses / update_with_media'已弃用。以下是首选方法。
from TwitterAPI import TwitterAPI
TWEET_TEXT = 'some tweet text'
IMAGE_PATH = './some_image.png'
api = TwitterAPI(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN_KEY,ACCESS_TOKEN_SECRET)
# STEP 1 - upload image
file = open(IMAGE_PATH, 'rb')
data = file.read()
r = api.request('media/upload', None, {'media': data})
print('UPLOAD MEDIA SUCCESS' if r.status_code == 200 else 'UPLOAD MEDIA FAILURE')
# STEP 2 - post tweet with a reference to uploaded image
if r.status_code == 200:
media_id = r.json()['media_id']
r = api.request('statuses/update', {'status':TWEET_TEXT, 'media_ids':media_id})
print('UPDATE STATUS SUCCESS' if r.status_code == 200 else 'UPDATE STATUS FAILURE')
答案 2 :(得分:1)
我遇到了同样的问题,所以我在那里修改了一些代码,它可以正常工作(如果不是很清楚,请问一下...)我的图像仅被命名为1.jpg,2.jpg ... >
from TwitterAPI import TwitterAPI
api = TwitterAPI(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN_KEY,ACCESS_TOKEN_SECRET)
media_ids = ''
for i in range(2): #Set 1 to 4 images (exemple with 2)
TWEET_TEXT = 'some tweet text'
IMAGE_PATH = f'{i}.jpg'
file = open(IMAGE_PATH, 'rb')
data = file.read()
r = api.request('media/upload', None, {'media': data})
print('UPLOAD MEDIA SUCCESS' if r.status_code == 200 else 'UPLOAD MEDIA FAILURE')
if r.status_code == 200:
if i == 0:
media_ids += str(r.json()['media_id'])
else:
media_ids = media_ids + ',' + str(r.json()['media_id'])
#POST IMAGES
r = api.request('statuses/update', {'status':TWEET_TEXT, 'media_ids':media_ids})
print('UPDATE STATUS SUCCESS' if r.status_code == 200 else 'UPDATE STATUS FAILURE')