Tôi đã làm việc với thư viện Tweepy cho python để truy cập luồng twitter công khai và gặp sự cố khi luồng đang chạy, nó không dừng lại. Bây giờ, điều đó có ý nghĩa với những gì nó làm, nhưng tôi muốn nó bắt đầu lọc với một danh sách ID người dùng trống và sau một thời gian, userID được thêm vào danh sách sau khi ai đó tweet một từ theo dõi cụ thể, để một khi họ tweet một từ , trình theo dõi bắt đầu theo dõi tất cả các tweet của họ. Vấn đề là một khi dòng được bắt đầu với các tùy chọn lọc ban đầu, việc thay đổi các biến không ảnh hưởng đến bộ lọc; nó chỉ tiếp tục sử dụng các đối số ban đầu.Bộ lọc luồng công cộng Tweepy bằng biến thay đổi
userIDs = []
trackWords = ["#Obama"]
def stream():
s = Stream(auth, StreamListener())
s.filter(follow = userIDs, track = trackWords)
tôi đã có thể để có được xung quanh trước này bằng cách nhắc lại định nghĩa dòng một lần nữa sau khi một từ khóa mới được thêm vào, nhưng tôi có nhiều luồng tìm kiếm và tôi đặt chúng trong chủ đề riêng biệt vì vậy tất cả chúng có thể chạy cùng một lúc. Tôi không thể tìm ra cách để làm mới các chủ đề, do đó, cố gắng làm mới bộ lọc mà không nhớ lại định nghĩa có vẻ dễ dàng hơn.
Tôi khá mới để lập trình, vì vậy có lẽ đây là một khái niệm cơ bản mà tôi chưa biết, nhưng hy vọng có một mẹo dễ dàng để làm cho nó làm mới.
Đây là tất cả các mã liên quan của tôi nếu điều đó giúp bất kỳ ai. Ở trên chỉ là một cách nhanh chóng để giúp hiển thị những gì tôi đang nói về:
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()