2012-11-26 6 views
7

मैं स्ट्रीम एपीआई से कनेक्ट करने के लिए twitter4j का उपयोग कर रहा हूं।twitter4j का उपयोग कर ट्विटर स्ट्रीम एपीआई पर कीवर्ड कैसे बदलें?

मैं समझता हूं कि इस पोस्ट से, Change Twitter stream filter keywords without re-opening stream, कनेक्शन खुला होने पर कीवर्ड बदलने का कोई तरीका नहीं है। मुझे फ़िल्टर को पूर्ववत करने और बदलने और इसे फिर से कनेक्ट करना होगा।

मैं जानना चाहता हूं कि कोई कोड नमूना है जो मुझे इसे डिस्कनेक्ट करने, कीवर्ड बदलने और इसे फिर से कनेक्ट करने की अनुमति देगा?

वर्तमान में, मैंने स्टेटस लिस्टर में ऑनस्टैटस() के तहत ऐसा करने की कोशिश की, जहां एक्स एक्स समय बीतने के बाद, यह कीवर्ड को "रस" में बदल देगा। लेकिन कनेक्शन बंद करने और स्ट्रीम एपीआई से पुनः कनेक्ट करने के लिए मेरे पास कोई तरीका नहीं है।

if (diff>=timeLapse) { 
    StatusListener listener = createStatusListener(); 
    track = "juice"; 
    twitterStream = new TwitterStreamFactory().getInstance(); 
    twitterStream.addListener(listener); 
    FilterQuery fq = new FilterQuery(); 
    fq.track(new String[] {track}); 
    startTime=System.currentTimeMillis(); 
    twitterStream.filter(fq); 
} 

उत्तर

4

आप सफाई की जरूरत है() धारा पहले और उसके बाद फिल्टर (FilterQuery) विधि के साथ एक नया स्ट्रीम को खोलने ट्रैक शर्तों को बदलने के लिए।

1

आप Filter(query) को फिर से कॉल करके ऐसा कर सकते हैं, cleanUp() पर कॉल करने की आवश्यकता नहीं है क्योंकि filter(query) आपके लिए यह करता है। यहां बताया गया है कि मैं यह कैसे करता हूं, और स्ट्रीम को रोकने/पुनरारंभ करने की कोई आवश्यकता नहीं है!

private TwitterStream twitterStream; 

private void filterTwitterStream() { 

    if (conditionToStopStreaming) { 
     if (null != twitterStream) { 
      twitterStream.shutdown(); 
      twitterStream = null; 
     } 
    } else { 
     if (twitterStream == null) { 
      twitterStream = new TwitterStreamFactory(getConfiguration()).getInstance(); 
      twitterStream.addListener(getListener()); 
     } 

     FilterQuery qry = new FilterQuery(); 

     String[] keywords = {......} 
     qry.track(keywords); 

     twitterStream.filter(qry); 
    } 
} 

getConfiguration() रिटर्न मेरी Configuration वस्तु और getListener() रिटर्न मेरी कहाँ परिभाषित StatusListener() वस्तु

+0

किसी को भी इस दृष्टिकोण की कोशिश की है? :) – syfantid

+0

यह मेरे लिए काम करता है। – Savvas

+0

क्या यह सही दृष्टिकोण है? –

संबंधित मुद्दे