gpt4 book ai didi

android - 如何使用 twitter4j 获取所有推特关注者的列表?

转载 作者:行者123 更新时间:2023-11-29 14:19:03 24 4
gpt4 key购买 nike

我一直在想是否有一种方法可以访问所有 Twitter 关注者列表。

我们已尝试调用 REST API通过 twitter4j:

  public List<User> getFriendList() {
List<User> friendList = null;
try {
friendList = mTwitter.getFollowersList(mTwitter.getId(), -1);

} catch (IllegalStateException e) {
e.printStackTrace();
} catch (TwitterException e) {
e.printStackTrace();
}
return friendList;
}

但它只返回一个包含 20 个关注者的列表。

我尝试使用相同的 call in loop , 但它会导致速率限制异常 - 表示我们不允许在一小段时间间隔内发出太多请求。

我们有办法解决这个问题吗?

最佳答案

您绝对应该使用 getFollowersIDs。如文档所述,这将返回 IDs 对象的数组(列表)。请注意,它会导致列表一次被分成大约 5000 个 ID 的页面。要开始分页,请提供值 -1 作为光标。来自 API 的响应将包含一个 previous_cursor 和 next_cursor 以允许来回分页。

棘手的部分是处理光标。如果你能做到这一点,那么你就不会有只有 20 个粉丝的问题。

第一次调用 getFollowersIDs 需要给定一个 -1 的游标。对于后续调用,您需要通过获取下一个游标来更新游标值,就像在循环的 while 部分中所做的那样。

        long cursor =-1L;
IDs ids;
do {
ids = twitter.getFollowersIDs(cursor);
for(long userID : ids.getIDs()){
friendList.add(userID);
}
} while((cursor = ids.getNextCursor())!=0 );

这是一个很好的引用: https://github.com/yusuke/twitter4j/blob/master/twitter4j-examples/src/main/java/twitter4j/examples/friendsandfollowers/GetFriendsIDs.java

现在,如果用户的关注者超过 75000 人,您将需要等待一段时间(请参阅 Vishal 的回答)。前 15 个调用将为您提供大约 75000 个 ID。然后你将不得不睡15分钟。然后再打 15 个电话,依此类推,直到获得所有关注者。这可以在 for 循环之外使用一个简单的 Thread.sleep(time_in_milliseconds) 来完成。

关于android - 如何使用 twitter4j 获取所有推特关注者的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21569169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com