首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用twitter4j和java获取所有用户时间线推文

使用twitter4j和java获取所有用户时间线推文
EN

Stack Overflow用户
提问于 2018-06-13 23:10:32
回答 1查看 847关注 0票数 0

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

代码语言:javascript
复制
    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());

    }

问题是,结果只是相同的结果,算法只从时间线中提取前几条tweet,并将它们设置为X次,而配置文件有一百万条tweet。有人能告诉我怎么才能解决这个问题吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-16 03:31:34

以下是一种方法:

代码语言:javascript
复制
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)

而且你需要一个睡眠函数来遵守速率限制:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50840633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档