我正试图从一个拥有约150,000名粉丝的Twitter帐户中获取所有关注者ID。我后来想要映射他们的位置,但首先我需要所有这些ID。
目前我正在使用此代码:
long lCursorIDs = -1;
long[] fArray = new long[100];
do
{
fArray = twitter.getFollowersIDs(name, lCursorIDs).getIDs();
} while (twitter.getFollowersIDs(name, lCursorIDs).hasNext ());
try
{
PrintWriter pr = new PrintWriter(filenameOutput);
for (int i=0; i<fArray.length ; i++)
{
pr.println(fArray[i]);
}
pr.close();
System.out.println("Follower IDs collected and saved to file: " + filenameOutput );
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("No such file exists.");
}
这适用于拥有较少关注者的用户。但有很多它总是返回一条错误信息 - 超出了速率限制。 我在考虑每小时只获得一定数量的关注者ID,但我不知道该如何做到这一点,而不是从第一个关注者开始每小时开始。另外,我不确定我可以通过一个请求获得多少粉丝。也许它是100,与“lookupUser”方法一样,但我不确定..任何想法/建议?
编辑:好的,我只是试图获得一个拥有2700个粉丝的帐户的关注者ID,并将其正确存储在文本文件中。它也只“花费”一个请求。我将帐户名称更改为具有15500个关注者的帐户,并且在超出速率限制的情况下再次崩溃。我不明白为什么因为它只有大约6倍的粉丝,但剩下的所有请求都会花费...任何关于我做错的想法?
答案 0 :(得分:1)
答案:
int numberOfFollowers;
numberOfFollowers = user.getFollowersCount();
//CREATE ARRAYS FOR FOLLOWER IDS
long cursor = -1;
long[] fArray = new long[numberOfFollowers];
long[] local = new long[5000];
IDs ids = twitter.getFollowersIDs(name, cursor);
int j = 0;
int x = 5000;
int durchgang = 1;
int d_anzahl = 1 + numberOfFollowers / 5000;
//STROE FOLLOWER IDS IN ARRAYS
do
{
ids = twitter.getFollowersIDs(name, cursor);
local = twitter.getFollowersIDs(name, cursor).getIDs();
System.out.println("Durchgang: " + durchgang + " / " + d_anzahl );
System.arraycopy(local, 0, fArray, j * x , local.length);
j++;
durchgang++;
cursor = ids.getNextCursor();
} while (ids.hasNext());
这将获得一个包含任何Twitter用户的所有关注者ID的数组。它计算获取所有跟随者ID所需的循环次数,并将每个5000个ID的数组复制到新阵列中,该阵列最后都包含所有ID。