【问题标题】:Tweepy public stream filter by a changing variableTweepy 公共流过滤器由一个变化的变量
【发布时间】:2012-10-24 06:46:23
【问题描述】:

我正在使用 Python 的 Tweepy 库来访问公共 twitter 流,但遇到了一个问题,即一旦流运行,它就不会停止。现在,这对它的作用是有意义的,但我希望它开始使用一个空的用户 ID 列表进行过滤,一段时间后,用户 ID 会在有人发布特定跟踪词后添加到列表中,这样一旦他们发布了一个词,跟踪器开始跟踪他们所有的推文。问题在于,一旦使用初始过滤器选项启动流,更改变量不会影响过滤器;它只是继续使用初始参数。

userIDs = []

trackWords = ["#Obama"]

def stream():

    s = Stream(auth, StreamListener())

    s.filter(follow = userIDs, track = trackWords)

我能够通过在添加新关键字后再次调用流定义来解决这个问题,但是我有多个流搜索并且我将它们放在单独的线程中,以便它们可以同时运行。我不知道如何刷新线程,因此尝试刷新过滤器而不调用定义似乎更容易。

我对编程很陌生,所以也许这是一个我还不知道的基本概念,但希望有一个简单的技巧可以让它刷新。

如果对任何人有帮助,这是我所有的相关代码。以上只是帮助说明我在说什么的快速内容:

userIDs = []
userNames = []

account = ['@DMS_423']

publicKeyWords = ['the','be','to','of','and','are','is','were','was']

class AStreamListener(StreamListener):
    def on_status(self, status):
        if status.author.screen_name not in userNames:
            userNames.append(str(status.author.screen_name))
            userIDs.append(str(api.get_user(str(status.author.screen_name)).id))
            print status.author.screen_name, "has joined the game."

def uStream():
    s = Stream(auth, StreamListener())
    s.filter(follow = userIDs)

def pStream():
    ps = PStream(pAuth, PStreamListener())
    ps.filter(track = publicKeyWords)

def aStream():
    adds = Stream(auth, AStreamListener())
    adds.filter(track = account)

t1 = Thread(target = aStream)
t2 = Thread(target = uStream)
t3 = Thread(target = pStream)

def run():
    t1.start()
    t2.start()
    t3.start()

run()

【问题讨论】:

    标签: python twitter filter stream tweepy


    【解决方案1】:

    Tweepy python 库 API 不支持您正在寻找的行为。无法修改与正在订阅的流相关的参数。

    事实上,Twitter API 本身不支持在中途更改参数。他们甚至警告不要这样做。这并不是说不可能让它工作(只是要小心并避免超出速率限制)。

    我会调整您的方法以使用新的查询参数初始化第二个流,使用推文 ID 来避免两次传递/保留相同的推文,然后一旦建立了第二个流,您将关闭初始流。

    【讨论】:

      【解决方案2】:

      如果您想在推文数量的特定条件/要求下停止推文,请编辑 self.num_tweets = 0 并记录它。您可以将其用作限制器,在def on_status

      【讨论】:

        猜你喜欢
        • 2017-05-06
        • 2021-12-16
        • 2018-06-02
        • 2016-11-11
        • 2012-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        相关资源
        最近更新 更多