gpt4 book ai didi

python - Tweepy 公共(public)流过滤器通过变化的变量

转载 作者:太空狗 更新时间:2023-10-30 01:23:27 25 4
gpt4 key购买 nike

我在使用 python 的 Tweepy 库访问公共(public) 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()

最佳答案

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

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

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

关于python - Tweepy 公共(public)流过滤器通过变化的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com