其他分享
首页 > 其他分享> > 推特开发者之 tweepy库输出省略号解决方法

推特开发者之 tweepy库输出省略号解决方法

作者:互联网

tweepy库输出twitter全文,而不是省略号

在使用tweepy库的时候可能有的人会遇到一个问题,明明已经使用了扩展模式,为什么打印出来的full_text还是有省略号?像下面这样:
在这里插入图片描述

说明:

标准API方法
任何tweepy.API返回Status对象的方法都接受一个新 tweet_mode参数。此参数的有效值为compat和 extended,分别提供兼容模式和扩展模式。默认模式(如果未提供任何参数)是兼容模式。

这同样适用于状态对象/有效负载,它们是来自流的转推。来自extended_tweet属性/字段的词典包含一个full_text子字段/键,该 子字段/键可能会被省略号省略。而是可以使用extended_tweet“转发状态”的retweeted_status属性/字段(来自属性/字段)。

例子
给定现有tweepy.API对象并id用于Tweet,以下内容可用于打印Tweet的全文,或者如果是Retweet,则打印Retweeted Tweet的全文:

status = api.get_status(id, tweet_mode="extended")
try:
    print(status.retweeted_status.full_text)
except AttributeError:  # Not a Retweet
    print(status.full_text)

如果status是Retweet,则status.full_text可能会被截断。

此状态事件处理程序用于StreamListener打印Tweet的全文,或者如果是Retweet,则打印Retweeted Tweet的全文:

def on_status(self, status):
    if hasattr(status, "retweeted_status"):  # Check if Retweet
        try:
            print(status.retweeted_status.extended_tweet["full_text"])
        except AttributeError:
            print(status.retweeted_status.text)
    else:
        try:
            print(status.extended_tweet["full_text"])
        except AttributeError:
            print(status.text)

如果status是Retweet,则它将没有extended_tweet属性,并且status.text可能被截断。
--------------------------------------------------------------------------------------------------------------------------------
所以可以写一个on_status函数,

def on_status(status):
    if hasattr(status, "retweeted_status"):  # Check if Retweet
        try:
            print(tweet.created_at, "->", status.retweeted_status.full_text)
        except AttributeError:
            print(tweet.created_at, "->", status.retweeted_status.text)
    else:
        try:
            print(tweet.created_at, "->", status.full_text)
        except AttributeError:
            print(tweet.created_at, "->", status.text)


public_tweets = api.user_timeline(id='LeoDiCaprio', count=100, tweet_mode='extended')
for tweet in public_tweets:
    print("--------------")
    print(tweet.created_at, "->", tweet.full_text)
    on_status(status=tweet)

效果对比:
在这里插入图片描述
在这里插入图片描述
就可以打印出全文了。
详细内容可参考:Extended Tweets

标签:status,推特,省略号,text,tweet,full,print,tweepy,属性
来源: https://blog.csdn.net/li123_123_/article/details/104892822