使用python和twitterApi将多个图像添加到推文中?

时间:2014-06-19 07:19:44

标签: python twitter tweets

您好我一直在尝试使用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)

3 个答案:

答案 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')