【问题标题】:Get All User timeline tweets using twitter4j and java使用 twitter4j 和 java 获取所有用户时间线推文
【发布时间】:2018-11-23 05:40:36
【问题描述】:

如果有人可以提供帮助,我有一个问题, 我正在尝试让特定用户完成推文,这是我的代码:

    Paging pg = new Paging();
    String userName = "Obama";
    pg.setCount(200);
    ConfigurationBuilder cb = new ConfigurationBuilder();
  cb.setOAuthConsumerKey("");
  cb.setOAuthConsumerSecret("");
  cb.setOAuthAccessToken("");
  cb.setOAuthAccessTokenSecret("");


  Twitter twitter = new TwitterFactory(cb.build()).getInstance();
  int numberOfTweets = 1000000;
  long lastID = Long.MAX_VALUE;
  ArrayList<Status> tweets = new ArrayList<Status>();
  while (tweets.size () < numberOfTweets) {


  tweets.addAll(twitter.getUserTimeline(userName,pg));
  //System.out.println("Gathered " + tweets.size() + " tweets");
  for (Status t: tweets) {
    System.out.println(t.getUser().getName() + ": " + t.getText()+ " " );


}; 
    pg.setMaxId(lastID-1);
  }
        System.out.println(tweets.size());

    }

问题是结果只是相同的结果,算法只从时间线中取出前几条推文,并使其成为 X 次,而个人资料有一百万条推文。 有人可以告诉我如何解决这个问题吗? 谢谢

【问题讨论】:

    标签: java twitter twitter4j


    【解决方案1】:

    这是一种方法:

    ArrayList<Status> statuses = new ArrayList<>();
    int pageno = 1;
    while(true) {
        try {
            System.out.println("getting tweets");
            int size = statuses.size(); // actual tweets count we got
            Paging page = new Paging(pageno, 200);
            statuses.addAll(twitter.getUserTimeline(screenName, page));
            System.out.println("total got : " + statuses.size());
            if (statuses.size() == size) { break; } // we did not get new tweets so we have done the job
            pageno++;
            sleep(1000); // 900 rqt / 15 mn <=> 1 rqt/s
            }
        catch (TwitterException e) {
            System.out.println(e.getErrorMessage());
            }
        } // while(true)
    

    你需要一个睡眠功能来遵守速率限制:

    static void sleep(long ms) {
        try { Thread.sleep(ms); }
        catch(InterruptedException ex) { Thread.currentThread().interrupt(); }
        }
    

    参考:https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-user_timeline.html

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多