Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to post image to twitter with Twython?

I had this small script working perfectly for the last month

from twython import Twython
import glob
import random

app_key = "XXX"
app_secret = "XXX"
oauth_token = "XXX"
oauth_token_secret = "XXX"
twitter = Twython(app_key, app_secret, oauth_token, oauth_token_secret)

    def RandomImageTwitt(folder):
        #Takes the folder where your images are as the input
        images = glob.glob(folder + "*")
        image_open = open(images[random.randint(0,len(images))-1])
        twitter.update_status_with_media(media=image_open)

RandomImageTwitt("/home/XXX/.reddit-twitter-image/XXX/")

But now Twitter has deprecated this method. Twython tells me I should use Twython.upload_media, but I can't find any doc on its use. Even Twython official sites still lists an example with update_status_with_media.

Anyone knows how to do it or where to find some examples / info?

like image 346
joaquinlpereyra Avatar asked Nov 23 '14 21:11

joaquinlpereyra


2 Answers

Ok i had the same problem and I messed about with it and got it working.

I have put it into your code below (not tested it though)

from twython import Twython
import glob
import random

app_key = "XXX"
app_secret = "XXX"
oauth_token = "XXX"
oauth_token_secret = "XXX"
twitter = Twython(app_key, app_secret, oauth_token, oauth_token_secret)

    def RandomImageTwitt(folder):
        #Takes the folder where your images are as the input
        images = glob.glob(folder + "*")
        image_open = open(images[random.randint(0,len(images))-1])
        #new code starts here 
        image_ids = twitter.upload_media(media=image_open)
        twitter.update_status('hello this is a status',image_ids['media_id'])


RandomImageTwitt("/home/XXX/.reddit-twitter-image/XXX/")
like image 75
duckdivesurvive Avatar answered Oct 29 '22 16:10

duckdivesurvive


When you do twitter.update_status, is mandatory status and media_ids

twitter.update_status(status='hello this is a status', media_ids=image_ids['media_id'])
like image 27
Dmitriy Avatar answered Oct 29 '22 14:10

Dmitriy