我在Twitter上有一个用户名列表,其个人资料是公开的。我希望从他们形成个人资料的那一天开始发布他们发布的“所有推文”。我检查了Twitter4J的示例 github.
根据Twitter API文档,仅返回了20个最新推文。无论如何我可以执行我的任务吗?

有帮助吗?

解决方案

要使用Twitter4J从用户那里获取所有帖子,您必须在多个页面上提出您的请求。

以下基于示例的代码 在github上

Twitter unauthenticatedTwitter = new TwitterFactory().getInstance();
//First param of Paging() is the page number, second is the number per page (this is capped around 200 I think.
Paging paging = new Paging(1, 100);
List<Status> statuses = unauthenticatedTwitter.getUserTimeline("google",paging);

只需循环并继续抓住新页面,直到没有新的帖子应起作用为止。

其他提示

这是为用户获取所有推文的方法(或至少最多〜3200):

import java.util.*;
import twitter4j.*;
import twitter4j.conf.*;

public static void main(String[] a) {

    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setOAuthConsumerKey("YOUR KEYS HERE");
    cb.setOAuthConsumerSecret("YOUR KEYS HERE");
    cb.setOAuthAccessToken("YOUR KEYS HERE");
    cb.setOAuthAccessTokenSecret("YOUR KEYS HERE");

    Twitter twitter = new TwitterFactory(cb.build()).getInstance();

    int pageno = 1;
    String user = "cnn";
    List statuses = new ArrayList();

    while (true) {

      try {

        int size = statuses.size(); 
        Paging page = new Paging(pageno++, 100);
        statuses.addAll(twitter.getUserTimeline(user, page));
        if (statuses.size() == size)
          break;
      }
      catch(TwitterException e) {

        e.printStackTrace();
      }
    }

    System.out.println("Total: "+statuses.size());
}

如果您阅读 Twitter的文档, ,如果您在API请求中指定“ Count = 200”,则可以一次检索最多200条推文。

您还可以使用“ page = x”来获得不同的分页结果;您可以继续执行此操作,直到您检索用户发布的每条推文为止。

我不确定您的Java应用程序将如何创建此功能,但是您的请求可能看起来像:

http://api.twitter.com/1/statuses/user_timeline.xml?id=SomeUsername&count=200&page=1
http://api.twitter.com/1/statuses/user_timeline.xml?id=SomeUsername&count=200&page=2
http://api.twitter.com/1/statuses/user_timeline.xml?id=SomeUsername&count=200&page=3

... ETC。

请记住,这些请求是限制的,因此您需要小心不要超过限制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top