Using Twitter with Python and Tweepy

Twitter is a popular social network that people use to communicate with each other. Python has several packages that you can use to interact with Twitter. These packages can be useful for creating Twitter bots or for downloading lots of data for offline analysis. One of the more popular Python Twitter packages is called Tweepy. You will learn how to use Tweepy with Twitter in this article.

Tweepy gives you access to Twitter’s API, which exposes the following (plus lots more!):

  • Tweets
  • Retweets
  • Likes
  • Direct messages
  • Followers

This allows you to do a lot with Tweepy. Let’s find out how to get started!


Getting Started

The first thing that you need to do is create a Twitter account and get the credentials you will need to access Twitter. To do that, you will need to apply for a developer account here.

Once that is created, you can get or generate the following:

  • Consumer API Key
  • Consumer API Secret
  • Access token
  • Access secret

If you ever lose these items, you can go back to your developer account and regenerate new ones. You can also revoke the old ones.

Note: By default, the access token you receive is read-only. If you would like to send tweets with Tweepy, then you will need to make sure you set the Application Type to “Read and Write”.


Installing Tweepy

Next you will need to install the Tweepy package. This is accomplished by using pip:

pip install tweepy

Now that you have Tweepy installed, you can start using it!


Using Tweepy

You can use Tweepy to do pretty much anything on Twitter programmatically. For example, you can use Tweepy to get and send tweets. You can use it to access information about a user. You can retweet, follow/unfollow, post, and much more.

Let’s look at an example of getting your user’s home timeline:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)

tweets = api.home_timeline()
for tweet in tweets:
    print('{real_name} (@{name}) said {tweet}\n\n'.format(
        real_name=tweet.author.name, name=tweet.author.screen_name,
        tweet=tweet.text))

The first few lines of code here are where you would put your credentials that you found on your Twitter developer profile page. It is not actually recommended to hard-code these values in your code, but I am doing that here for simplicity. If you were to create code to be shared, you would want to have the user’s of your code export their credentials to their environment and use Python’s os.getenv() or via command line arguments using argparse.

Next you login to Twitter by creating a OAuthHandler()

object and setting the access token with the aptly named set_access_token()

function. Then you can create an API()

instance that will allow you to access Twitter.

In this case, you call home_timeline()

which returns the first twenty tweets in your home timeline. These are tweets from your friends or followers or could be random tweets that Twitter has decided to promote in your timeline. Here you print out the the author’s name, Twitter handle and the text of their tweet.

Let’s find out how you get information about yourself using the api

object you created earlier:

>>> me = api.me()
>>> me.screen_name
'driscollis'
>>> me.name
'Mike Driscoll'
>>> me.description
('Author of books, blogger @mousevspython and Python enthusiast. Also part of '
 'the tutorial team @realpython')

You can use the api

to get information about yourself. The code above demonstrates getting your screen name, actual name and the description you have set on Twitter. You can get much more then this. For example, you can get your followers, timeline, etc.


Getting Tweets

Getting tweets is also quite easy to do using Tweepy. You can get your own tweets or someone else’s if you know their username.

Let’s start by getting your tweets:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)
my_tweets = api.user_timeline()
for t in my_tweets:
    print(t.text)

Here you connect to Twitter as you did in the previous section. Then you call user_timeline()

to get a list of object that you then iterate over. In this case, you end up printing out only the text of the tweet.

Let’s try getting a specific user. In this case, we will use a fairly popular programmer, Kelly Vaughn:

>>> user = api.get_user('kvlly')
>>> user.screen_name
'kvlly'
>>> user.name
'Kelly Vaughn 🐞'
>>> for t in tweets:
        print(t.text)

She tweets a LOT, so I won’t be reproducing her tweet here. However as you can see, it’s quite easy to get a user. All you need to do is pass get_user()

a valid Twitter user name and then you’ll have access to anything that is publicly available about that user.


Sending Tweets

Reading tweets is fun, but what about sending them? Tweepy can do this task for you as well.

Let’s find out how:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)

api.update_status("This is your tweet message")

The main bit of code you should focus on here is the very last line: update_status()

. Here you pass in a string, which is the tweet message itself. As long as there are no errors, you should see the tweet in your Twitter timeline.

Now let’s learn how to send a tweet with a photo attached to it:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)

api.update_with_media('/path/to/an/image.jpg',
                      "This is your tweet message")

In this case, you need to use the update_with_media()

method, which takes a path to the image you want to upload and a string, which is the tweet message.

Note that while update_with_media() is easy to use, it is also deprecated.

So let’s update this example to use media_upload instead!

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)

media_list = []
response = api.media_upload('/home/mdriscoll/Downloads/sebst.png')
media_list.append(response.media_id_string)
api.update_status("This is your tweet message", media_ids=media_list)

Here you upload the media to Twitter and get its id string from the response that is returned. Then you add that string to a Python list. Finally you use update_status() to tweet something, but you also set the media_ids parameter to your list of images.


Listing Followers

The last topic that I am going to cover is how to list your followers on Twitter.

Let’s take a look:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)

followers = api.followers()
for follower in followers:
    print(follower.screen_name)

This code will list the latest 20 followers for your account. All you need to do is call followers()

to get the list. If you need to get more than just the latest 20, you can use the count

parameter to specify how many results you want.


Wrapping Up

There is much more that you can do with Tweepy. For example, you can get likes, send and read direct messages and upload media, among other things. It’s a quite nice and easy to use package. You can also use Tweepy to read and write to Twitter in real-time, which allows you to create a Twitter bots. If you haven’t given Tweepy a try yet, you should definitely give it a go. It’s a lot of fun!


Related Reading


1 thought on “Using Twitter with Python and Tweepy”

  1. Pingback: Links 6/8/2019: RPCS3 Update and KDevelop 5.4 Release | Techrights

Comments are closed.