2013-08-28 35 views
0

我正在使用twitter4j twitter流API以獲取特定標記的推文。 我有一些關鍵字。我想搜索包含標籤 目前我在做什麼是我寫的代碼用於獲取鳴叫單字Twitter流API獲取100狀態並停止優化

public class StreamAPI { 

    public static void main(String[] args) { 

     ConfigurationBuilder cb = new ConfigurationBuilder(); 
     cb.setDebugEnabled(true); 
     cb.setOAuthConsumerKey("xxxx"); 
     cb.setOAuthConsumerSecret("xxxxx"); 
     cb.setOAuthAccessToken("xxxx"); 
     cb.setOAuthAccessTokenSecret("xxxx"); 
     cb.setUseSSL(true); 
     cb.setUserStreamRepliesAllEnabled(true); 


     TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance(); 


     twitterStream.setOAuthAccessToken(accestoken); 
     StatusListener listener = new StatusListener() { 
      int countTweets = 0; 

      public void onStatus(Status status) { 
       System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText()); 
       countTweets++; 
       System.out.println(countTweets); 
      } 

      public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) { 
       System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId()); 
      } 

      public void onTrackLimitationNotice(int numberOfLimitedStatuses) { 
       System.out.println("Got track limitation notice:" + numberOfLimitedStatuses); 
      } 

      public void onScrubGeo(long userId, long upToStatusId) { 
       System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId); 
      } 

      @Override 
      public void onStallWarning(StallWarning stallWarning) { 
       //To change body of implemented methods use File | Settings | File Templates. 
      } 

      public void onException(Exception ex) { 
       ex.printStackTrace(); 
      } 
     }; 

     FilterQuery fq = new FilterQuery(); 
     String keywords[] = {"ipl"}; 

     fq.track(keywords); 

     twitterStream.addListener(listener); 
     twitterStream.filter(fq); 

    } 

} 

100鳴叫這就是如何將我停止進程到達數100後應該返回那100條推文列表。

請幫幫我。

回答

1

看到下面的代碼也許有幫助你

String token= "Key Word"; 
Query query = new Query(token); 
FileWriter outFile = new FileWriter(token.replaceAll("^#","").concat(".txt"), true); 
int numberOfTweets = 1500; 
long lastID = Long.MAX_VALUE; 
ArrayList<Status> tweets = new ArrayList<Status>(); 
while (tweets.size() < numberOfTweets) { 
if (numberOfTweets - tweets.size() > 100) 
    query.setCount(100); 
else 
query.setCount(numberOfTweets - tweets.size()); 
try { 
    QueryResult result = twitter.search(query); 
tweets.addAll(result.getTweets()); 
System.out.println("Gathered " + tweets.size() + " tweets"); 
for (Status t: tweets) 
    if(t.getId() < lastID) lastID = t.getId(); } 
catch (TwitterException te) { 
    System.out.println("Couldn't connect: " + te); }; 
query.setMaxId(lastID-1); 
} 
PrintWriter out1 = new PrintWriter(outFile); 
for (int i = 0; i < tweets.size(); i++) { 
Status t = (Status) tweets.get(i); 

GeoLocation loc = t.getGeoLocation(); 

String user = t.getUser().getScreenName(); 
String msg = t.getText(); 
String time = ""; 
if (loc!=null) { 
Double lat = t.getGeoLocation().getLatitude(); 
Double lon = t.getGeoLocation().getLongitude(); 

System.out.println(i + " USER: " + user + " wrote: " + msg + " located at " + lat + ", " + lon);} 
else 
// System.out.println(i + " USER: " + user + " wrote: " + msg.replaceAll("\n","")); 
    out1.append(i + " USER: " + user + " wrote: " +msg.replaceAll("\n"," ") ); 
    out1.print("\n"); 
} 
System.out.println("file write succefully");