我正在尝试找出给定用户的所有关注者。 我找到以下代码:
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?
- 如果用户的关注者列表很大,就会达到限制率。
- ids.getNextCursor() 的用途是什么?
最佳答案
光标允许将结果分为“页面”或组或结果。当无法立即获得所有结果时,这非常有用;例如,如果用户拥有数百万关注者。
光标可以被认为是书中的页码。在请求中指定它会告诉 Twitter 您想要返回哪一页结果。但是,与页码不同,光标值是不连续的。这就是 Twitter 在响应中向您发送“下一个光标值”的原因:
cursor = ids.getNextCursor()
这是 Twitter,告诉您下一页的页码是什么,以便您可以在下一个请求中使用它来获取该页的结果。
光标可以设置为任意值;但是,您应该注意两个保留值,-1
和 0
:
-1
是起始值,它表示您希望对结果进行分页(某些 API 要求使用光标),并且 Twitter 将发送结果的第一页。0
表示 Twitter 没有更多页面要发送:您刚刚发送了最后一个页面,无需再发出任何请求。
关于速率限制,如果您不明智地管理您的请求,那么对于拥有大量关注者的用户来说,您将会遇到问题。
getFollowersIDs
API 最多只能返回 5,000 个结果,并且您只能在 15 分钟内发出其中 15 个请求。因此,如果用户拥有超过 75,000 名关注者,您将需要确保以某种方式安排请求,例如每分钟发出一个请求。
更详细的信息可以在 Twitter 的文档中找到,具体来说,GET followers/ids
, cursoring和 rate limiting .
关于java - 使用 twitter4j 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20062901/