web-dev-qa-db-fra.com

Obtenir le texte intégral du Tweet depuis "user_timeline" avec tweepy

J'utilise tweepy pour récupérer les tweets de la chronologie d'un utilisateur en utilisant le script inclus ici . Cependant, les tweets arrivent tronqués:

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)

Retour:

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, 
          ...

Autrement dit, pour certains i, new_tweets[i].text.encode("utf-8") apparaît comme

#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

Où le ... Dans ce dernier remplace le texte qui serait normalement affiché sur Twitter.

Est-ce que quelqu'un sait comment je peux remplacer truncated=True Pour obtenir le texte complet de ma demande?

16
atkat12

Au lieu de full_text = True, vous avez besoin de Tweet_mode = "extended"

Ensuite, au lieu du texte, vous devez utiliser full_text pour obtenir le texte complet du Tweet.

Votre code devrait ressembler à:

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

Ensuite, pour obtenir le texte complet des tweets:

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

22

La réponse de Manolis est bonne mais incomplète. Pour obtenir la version étendue d'un Tweet (comme dans la version de Manoli), vous devez faire:

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'

Cependant, si ce Tweet est un retweet, vous voudrez utiliser le texte intégral des retweets:

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!'

Cela a été testé avec Python 3.6 et tweepy-3.6.0.

2