Skip to content

Instantly share code, notes, and snippets.

@andrewginns
Forked from yanofsky/LICENSE
Last active February 16, 2017 12:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrewginns/97a43fe6c4c1cfe2dd8895fa82cb94fc to your computer and use it in GitHub Desktop.
Save andrewginns/97a43fe6c4c1cfe2dd8895fa82cb94fc to your computer and use it in GitHub Desktop.
A script to download all of a user's tweets into a csv
#!/usr/bin/env python
# encoding: utf-8
import tweepy #https://github.com/tweepy/tweepy
import csv
#Twitter API credentials
consumer_key = ""
consumer_secret = ""
access_key = ""
access_secret = ""
def get_all_tweets(screen_name):
#Twitter only allows access to a users most recent 3240 tweets with this method
#authorize twitter, initialize tweepy
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
#initialize a list to hold all the tweepy Tweets
alltweets = []
#make initial request for most recent tweets (200 is the maximum allowed count)
new_tweets = api.user_timeline(screen_name = screen_name,count=200)
#save most recent tweets
alltweets.extend(new_tweets)
#save the id of the oldest tweet less one
oldest = alltweets[-1].id - 1
#keep grabbing tweets until there are no tweets left to grab
while len(new_tweets) > 0:
print "getting tweets before %s" % (oldest)
#all subsiquent requests use the max_id param to prevent duplicates
new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest)
#save most recent tweets
alltweets.extend(new_tweets)
#update the id of the oldest tweet less one
oldest = alltweets[-1].id - 1
print "...%s tweets downloaded so far" % (len(alltweets))
#transform the tweepy tweets into a 2D array that will populate the csv
outtweets = []
for tweet in alltweets:
text = tweet.text
text = text.encode("utf-8")
text = text.replace('|', ' ')
text = text.replace('\n', ' ')
temp = [tweet.id_str, tweet.created_at, text, tweet.retweet_count, tweet.favorite_count]
outtweets.append(temp)
#write the csv
with open('%s_tweets.csv' % screen_name, 'wb') as f:
writer = csv.writer(f, delimiter=';')
writer.writerow(["id","created_at","text","retweet_count","favorite_count"])
writer.writerows(outtweets)
pass
if __name__ == '__main__':
#pass in the username of the account you want to download
get_all_tweets("")
@andrewginns
Copy link
Author

Modified lines 53 to 59 so that line breaks are removed from tweets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment