gpt4 book ai didi

python - 将 tweepy 流限制为特定数量

转载 作者:行者123 更新时间:2023-11-28 18:37:51 26 4
gpt4 key购买 nike

class listener(StreamListener):

def on_status(self, status):
try:
userid = status.user.id_str
geo = str(status.coordinates)
if geo != "None":
print(userid + ',' + geo)
else:
print("No coordinates")
return True
except BaseException as e:
print('failed on_status,',str(e))
time.sleep(5)

def on_error(self, status):
print(status)


auth = OAuthHandler(ckey, csecret)
auth.set_access_token(atoken, asecret)

twitterStream = Stream(auth, listener())
twitterStream.filter(locations=[-97.54,32.55,-97.03,33.04])

我的 tweepy 流有这个脚本,它运行良好。但是,它会一直运行,直到我使用“ctrl+c”终止它。我尝试向“on_status”添加一个计数器,但它不会递增:

 class listener(StreamListener):

def on_status(self, status):
i = 0
while i < 10:
userid = status.user.id_str
geo = str(status.coordinates)
if geo != "None":
print(userid + ',' + geo)
i += 1

无论我把增量放在哪里,它都会重复自己。如果我在类(class)前添加“i=0”,我会收到错误消息:

RuntimeError: No active exception to reraise

知道如何让计数器与流媒体一起工作吗?至少据我所知,tweepy 附带的 Cursor 不适用于流媒体。

最佳答案

您的 while 逻辑无法正常工作,因为 Tweepy 在收到数据时会在内部调用 on_status() 方法。因此,您无法通过在已经运行的无限循环中引入条件来控制流程,最好的方法是在类中创建一个新变量,该变量在创建 listener 对象时实例化。并在 on_data() 方法中增加该变量。

class listener(StreamListener):

def __init__(self):
super().__init__()
self.counter = 0
self.limit = 10

def on_status(self, status):
try:
userid = status.user.id_str
geo = str(status.coordinates)
if geo != "None":
print(userid + ',' + geo)
else:
print("No coordinates")
self.counter += 1
if self.counter < self.limit:
return True
else:
twitterStream.disconnect()
except BaseException as e:
print('failed on_status,',str(e))
time.sleep(5)

关于python - 将 tweepy 流限制为特定数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30721567/

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