मैं सार्वजनिक ट्विटर स्ट्रीम तक पहुंचने के लिए पायथन के लिए ट्वीपी लाइब्रेरी के साथ काम कर रहा था और एक बार समस्या में भाग गया जहां स्ट्रीम चलने के बाद, यह रुकता नहीं है। अब, यह समझ में आता है कि यह क्या करता है, लेकिन मैं चाहता था कि यह उपयोगकर्ता आईडी की खाली सूची के साथ फ़िल्टर करना शुरू कर दे और थोड़ी देर के बाद, किसी व्यक्ति को किसी विशेष ट्रैक शब्द को ट्वीट करने के बाद उपयोगकर्ता आईडी को सूची में जोड़ा जाता है, ताकि एक बार वे एक शब्द ट्वीट कर सकें , ट्रैकर अपनी सभी ट्वीट्स को ट्रैक करना शुरू कर देता है। समस्या यह है कि प्रारंभिक फ़िल्टर विकल्पों के साथ स्ट्रीम शुरू होने के बाद, चर बदलने से फ़िल्टर को प्रभावित नहीं होता है; यह केवल शुरुआती तर्कों का उपयोग करता रहता है।एक बदलती चर द्वारा ट्वीवी सार्वजनिक धारा फ़िल्टर
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()