简体   繁体   中英

Fetching tweets for specific hash tag using twitter4j

I am using twitter4j stream api to get the tweets for specific hashtag ,but am getting only 10 tweets for my required hashtag and for other hashtags I am getting maximum of 5000 tweets.

Why I am getting only 10 tweets for some and 5000 for others?

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
  .setOAuthConsumerKey(" ")
  .setOAuthConsumerSecret(" ")
  .setOAuthAccessToken(" ")
  .setOAuthAccessTokenSecret(" ");
Twitter twitter = new TwitterFactory(cb.build()).getInstance();
Query query = new Query("hashtag");
int numberOfTweets = 7;
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"+"\n");
    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);
}
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 + "\n");
  } 
  //else 
    //System.out.println(i + " USER: " + user + " wrote: " + msg+"\n");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM