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?
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.
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.
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.
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.
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]
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With