使用twitter4j发行

时间:2013-11-19 03:58:39

标签: java twitter4j

我试图找出给定用户的所有关注者。 我找到以下代码:

User u1 = null ;
    long cursor = -1;
    IDs ids;
    System.out.println("Listing followers's ids.");
    do {
        ids = twitter.getFollowersIDs("NZ_Football", cursor);
        for (long id : ids.getIDs()) {
            System.out.println(id);
            User user = twitter.showUser(id);
            System.out.println(user.getName());
        }
    } while ((cursor = ids.getNextCursor()) != 0);

这段代码非常适合我。但是,我有疑问:

  1. 什么是光标值?为什么它在这里-1?
  2. 如果用户的关注者列表很大,它将达到限制率。
  3. ids.getNextCursor()是什么?

2 个答案:

答案 0 :(得分:1)

光标允许将结果分解为“页面”或组或结果。如果一次获得所有结果是不可行的,这是有用的;例如,如果用户拥有数百万粉丝。

光标可以被认为是书中的页码。在请求中指定它会告诉Twitter您要返回的结果页面。但是,与页码不同,游标值是不连续的。这就是Twitter在响应中向您发送“下一个游标值”的原因:

cursor = ids.getNextCursor()

这是Twitter告诉您下一页的编号是什么,以便您可以在下一个请求中使用它来获取该页面的结果。

光标可以设置为任何值;但是,您应该注意两个保留值,-10

  • -1是起始值,它表示您希望对结果进行分页(某些API授权游标),Twitter将发送第一页结果。
  • 0表示Twitter没有更多页面要发送:您刚刚拥有最后一页,无需再提出任何请求。

关于速率限制,如果您没有明智地管理您的请求,那么对于拥有大量粉丝的用户来说,您会遇到问题。

getFollowersIDs API限制为最多返回5,000个结果,您只能在15分钟的窗口中发出15个这样的请求。因此,如果用户拥有超过75,000名粉丝,您需要确保以某种方式安排请求,例如每分钟提出一个请求。

更详细的信息可以在Twitter的文档中找到,具体来说,GET followers/idscursoringrate limiting

答案 1 :(得分:-1)

@ 1。如果它是-1,则游标值是一种标志,这意味着仍然存在特定用户的一些关注者。 twitter API使用此游标机制,因为它为每个循环返回一组跟随者ID。

@ 2。是的,但你可以弄清楚这个问题。您可以创建几个Twitter帐户来生成一些新的令牌。然后,您可以实施一种在速率限制出现时更新令牌的机制。

@ 3。它返回新的跟随者ID集的游标值。据我记忆,它每回路返回50000个ID。

我希望我回复你想知道的一切。