Tweepy Streamer 将推文限制为 140 个字符

Tweepy Streamer Limiting Tweets to 140 Characters

在第一次总统辩论期间,我创建了一个 tweepy 侦听器来将推文收集到本地 MongoDB,但我意识到我一直在收集的推文被限制在 140 个字符以内,而且很多都在 140 时被截断字数限制。在我的流中,我定义了 tweet_mode='extended',我认为这可以解决这个问题,但是,我仍然无法检索超过 140 个字符的推文的完整长度。下面是我的代码:

auth.set_access_token(twitter_credentials.ACCESS_TOKEN, twitter_credentials.ACCESS_TOKEN_SECRET)

api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

# Create a listener MyListener that streams and stores tweets to a local MongoDB

class MyListener(StreamListener):
    
    def __init__(self):
        super().__init__()
        self.list_of_tweets = deque([], maxlen=5)
        
    def on_data(self, data):
        try:
            tweet_text = json.loads(data)
            self.list_of_tweets.append(tweet_text)
            self.print_list_of_tweets()
            db['09292020'].insert_one(tweet_text)
        except:
            None
          
    def on_error(self, status):
        print(status)

    def print_list_of_tweets(self):
        display.clear_output(wait=True)
        for index, tweet_text in enumerate(self.list_of_tweets):
            m='{}. {}\n\n'.format(index, tweet_text)
            print(m)  

debate_stream = Stream(auth, MyListener(), tweet_mode='extended')
debate_stream = debate_stream.filter(track=['insert', 'debate', 'keywords', 'here'])

任何有关如何通过此侦听器获取完整扩展推文的意见都将不胜感激!

您可以尝试将倒数第二行更改为

debate_stream = Stream(auth, MyListener()).extended_tweet["full_text"]

不确定这是否有效,但请尝试一下。

tweet_mode=extended 对旧版标准流 API 没有影响,因为推文默认以截断 (140) 和扩展 (280) 形式传送。

因此您需要像这样设置您的 Stream Listener:

debate_stream = Stream(auth, MyListener())

你应该看到的是,较长推文的 JSON 对象有一个 140 个字符的 text 字段,但包含一个名为 extended_tweet 的附加字典,它又包含一个full_text 包含完整推文文本的字段。