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

Nat*_*han 2 python twitter python-3.x

使用 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)
Run Code Online (Sandbox Code Playgroud)

我展示的代码使用 on_data 覆盖流式传输推文并输出推文,但它无法返回完整的推文。

Nat*_*han 5

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

data = json.loads(data)

try:
    tweetStr = data['extended_tweet']['full_text']
except Exception as e:
    tweetStr = data['text']
Run Code Online (Sandbox Code Playgroud)

然后你可以将 tweetStr 输出到打印函数、文件或任何你想要的东西中。