1

如何在 twitter getmentiontime 行中使用时间/计数

我能够获得用户的时间线,但现在 我想获得最近 30 分钟的时间线。

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true).setOAuthConsumerKey(CONSUMER_KEY)
                .setOAuthConsumerSecret(CONSUMER_SECRET)
                .setOAuthAccessToken(ACCESS_TOKEN)
                .setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET);
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();

User user = twitter.verifyCredentials();
List<Status> statuses = twitter.getMentionsTimeline();
System.out.println("Showing @" + user.getScreenName() + "'s mentions.");

请建议我需要进行哪些更改。

4

2 回答 2

2

您可以使用Paging对象的max_id参数来回退您正在处理的时间线:

max_id

返回 ID 小于(即早于)或等于指定 ID 的结果。

例如,选择合理数量的状态来获取(最多一次为 200 次提及),例如:

Paging paging = new Paging();
paging.count(100);

获取提及:

final List<Status> statuses = twitter.getMentions(paging);

然后记录id最早的Status,然后将其id用于max_id下一次调用的属性:

paging.maxId(id - 1); // subtract one to make max_id exclusive
final List<Status> statuses = twitter.getMentions(paging);

依此类推,直到你达到三十分钟的门槛。

有关更多信息,请参阅 Twitter 关于使用时间线的文档。此外,请注意,您可能会通过此 API 调用达到速率限制。

于 2013-09-10T12:03:35.320 回答
0

我通过使用 getCreatedAt 作为状态找到了方法,根据需要在循环中获取状态持续 30 分钟,然后从中中断。

        List<Status> statuses = twitter.getMentionsTimeline();
        System.out.println("Showing @" + user.getScreenName()
                + "'s mentions.");
        for (Status status : statuses) {

            // setting 30 min from now to date
            Calendar c = Calendar.getInstance();
            c.setTime(new java.util.Date());
            c.add(Calendar.MINUTE, -30);
            System.out.println(c.getTime());

            // setting created date of status to date
            Date createdDate = status.getCreatedAt();
            Calendar now = Calendar.getInstance();
            now.setTime(createdDate);
            System.out.println(now.getTime());

            if (now.compareTo(c) == -1) {
                System.out.println(" in zero");
                break;
            }


                            // User is class with getter setter methods 
            user2 = User();
            user2.setUsername(status.getUser().getScreenName());
            user2.setMessage(status.getText());

            list.add(user2);
            System.out.println(status.getUser().getScreenName());
        }

我可以使用此代码获得最近 30 分钟的提及时间线。

于 2013-09-11T05:56:43.990 回答