Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting full tweet text from "user_timeline" with tweepy

I am using tweepy to fetch tweets from a user's timeline using the script included here. However, the tweets are coming in truncated:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth) new_tweets = api.user_timeline(screen_name = screen_name,count=200, full_text=True) 

Returns:

Status(contributors=None,       truncated=True,       text=u"#Hungary's new bill allows the detention of asylum seekers            & push backs to #Serbia. We've seen push backs before so\u2026 https://            t.co/iDswEs3qYR",            is_quote_status=False,            ... 

That is, for some i, new_tweets[i].text.encode("utf-8") appears like

#Hungary's new bill allows the detention of asylum seekers &  push backs to #Serbia. We've seen push backs before so…https://t.co/ iDswEs3qYR 

Where the ... in the latter replaces text that would normally be displayed on Twitter.

Does anyone know how I can override truncated=True to get the full text on my request?

like image 233
atkat12 Avatar asked Mar 09 '17 21:03

atkat12


People also ask

How do I get full text on Tweepy?

If we want to get the complete text, pass another parameter tweet_mode = "extended" . From this object, fetch the text attribute present in it. If we want to get the complete text, fetch the attribute full_text.

How do I extract tweets using Tweepy?

Steps to obtain keys: – For access token, click ” Create my access token”. The page will refresh and generate access token. Tweepy is one of the library that should be installed using pip. Now in order to authorize our app to access Twitter on our behalf, we need to use the OAuth Interface.

How can I get more than 200 tweets on Tweepy?

To get more then 200, you need to use the cursor on user_timeline and then iterate over the pages. Show activity on this post. From the definition of the count parameter: Specifies the number of Tweets to try and retrieve, up to a maximum of 200 per distinct request.

Does Tweepy have a limit?

But keep in mind that Twitter levies a rate limit on the number of requests made to the Twitter API. To be precise, 900 requests/15 minutes are allowed; Twitter feeds anything above that an error.


2 Answers

Instead of full_text=True you need tweet_mode="extended"

Then, instead of text you should use full_text to get the full tweet text.

Your code should look like:

new_tweets = api.user_timeline(screen_name = screen_name,count=200, tweet_mode="extended") 

Then in order to get the full tweets text:

tweets = [[tweet.full_text] for tweet in new_tweets]

like image 124
Manolis Kyriakakis Avatar answered Oct 17 '22 21:10

Manolis Kyriakakis


Manolis's answer is good but not complete. To get the extended version of a tweet (as in Manoli's version), you would do :

tweetL = api.user_timeline(screen_name='sdrumm', tweet_mode="extended") tweetL[8].full_text 'Statement of the day at #WholeChildSummit2019 - “‘SOME’ is not a number, and ‘SOON’ is not a time!” IMO, this is why educational systems get stuck. Who in your system will initiate change? TODAY! #HSEFutureReady' 

However, if this tweet is a retweet, you'll want to use the retweets' full text:

tweetL = api.user_timeline(id=2271808427, tweet_mode="extended") # This is still truncated tweetL[6].full_text 'RT @blawson_lcsw: So proud of these amazing @HSESchools students who presented their ideas on how to help their peers manage stress in mean…' # Use retweeted_status to get the actual full text tweetL[6].retweeted_status.full_text 'So proud of these amazing @HSESchools students who presented their ideas on how to help their peers manage stress in meaningful ways! Thanks @HSEPrincipal for giving us your time!' 

This was tested with Python 3.6 and tweepy-3.6.0.

like image 43
irritable_phd_syndrome Avatar answered Oct 17 '22 21:10

irritable_phd_syndrome