是否可以使用Tweepy on_data函数流式传输完整推文

时间:2019-04-12 21:13:04

标签: python python-3.x twitter

使用Tweepy流推Twitter提要时,是否可以在on_data函数中返回完整的推文文本?

我已经尝试过并看到on_status函数用于流传输的解决方案。 on_status函数可以通过按照status.extended_tweet [“ full_text”]的方式执行操作来返回全文。但是,这似乎不适用于on_data函数,而且我还没有看到有人专门针对on_data询问此问题(除非我以某种方式错过了它)。那么,这里有人知道是否有任何方法可以使用on_data流式传输全文推文?

我已经看到有人说tweet_mode ='extended'可以工作,但是我注意到这种解决方案不适用于流推文。

类TwitterListener(StreamListener):

def __init__(self, fetchedFeedsFile):
    self.fetchedFeedsFile = fetchedFeedsFile

def on_data(self, data):
    try:
            print(data)
            with open(self.fetchedFeedsFile, 'a') as tf:
                tf.write(data)
            return True

    except BaseException as e:
        print("Error on_data: %s" % str(e))
        return True

def on_error(self, status):
    if status == 420:
        return False
    print(status)

我显示的代码使用on_data替代流推文并输出推文,但是它无法返回完整的推文。

1 个答案:

答案 0 :(得分:1)

由于没有人回答我的问题,所以我自己做了一些进一步的研究和实验。我可以确认可以使用on_data获取全文。如果有人想使用on_data流式传输完整的tweet,则必须首先访问on_data函数返回的JSON。通常,JSON将包含一个名为“ text”的字符串,其中包含该推文,但是,如果一条推文太长(我相信超过140个字符?不确定),将有一个名为“ extended_tweet”的字段,其中包含一个名为“ full_text”的字符串。下面是我使用的on_data覆盖的摘录,它成功将完整尺寸的推文流式传输到文件。

ifelse(Race == 'Neither', Ethnicity, Race)

[1] "Hispanic or Latino"     "Asian"                 
[3] "Not Hispanic or Latino" "Asian"                 
[5] "Neither"

然后,您可以将tweetStr输出到打印功能,文件或所需的任何内容中。