Answers:
到目前为止,答案最多只会给您100条转发。不过,有一个API方法可返回最多100个游标集合的条目(因此您可以对其进行分页以获得更多信息)。
尽管您还希望阅读其有关使用游标导航集合的页面,但Twitter Developers网站上的GET statuss / retweeters / ids上有更多信息。
编辑添加: 也就是说,开发人员站点上第一个出现在快速谷歌上的线程有@episod,Twitter员工说:
您不可能全部都使用。数据散开。最好的选择是使用REST API确定执行转推的许多用户,但是数据仍然会受到限制。
跟踪转发发生的最简单方法,而不是尝试从过去查找转发。为此使用流API。
如果您愿意做一些编码,这就是它在java中的工作方式...
package twitone;
import java.util.ArrayList;
import java.util.Map;
import twitone.structure.BaseTwitterClass;
import twitone.structure.TwitApplicationFactory;
import twitter4j.Paging;
import twitter4j.RateLimitStatus;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
public class MyRetweeters extends BaseTwitterClass {
private Twitter twitter;
public MyRetweeters(Twitter twitter) {
this.twitter = twitter;
}
public static void main(String[] args) throws TwitterException {
Twitter twitter = TwitApplicationFactory.getjoereddingtonTwitter();
MyRetweeters unit = new MyRetweeters(twitter);
String temp[] = unit.get();
for (String string : temp) {
System.out.println(string);
}
}
public String[] get() {
ArrayList<String> names = new ArrayList<String>();
try {
for (Status status : twitter.getUserTimeline(new Paging(1, 200))) {
System.out.println(status.getText());
if (status.getText().startsWith("RT")) {
// skip
} else if (status.getRetweetCount() > 0) {
// Because I don't want to breach
// Twitter's rate limits
// okay the below has been added to keep within the rate
// limited.
waitUntilICanMakeAnotherCall();
// end keeping within rate limit code.
for (Status rt : twitter.getRetweets(status.getId())) {
names.add(rt.getUser().getScreenName());
System.out.println("---"+rt.getUser().getScreenName());
}
}
}
} catch (TwitterException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return names.toArray(new String[names.size()]);
}
/**
* @throws TwitterException
* @throws InterruptedException
*/
protected void waitUntilICanMakeAnotherCall() throws TwitterException, InterruptedException {
{
Map<String, RateLimitStatus> temp = twitter.getRateLimitStatus();
RateLimitStatus temp2 = temp.get("/statuses/retweets/:id");
System.out.println(temp2.getRemaining());
if (temp2.getRemaining() == 0) {
Thread.sleep((temp2.getSecondsUntilReset() + 5) * 1000);
return;
}
System.out.println(temp2.getSecondsUntilReset());
int secondstosleep =1+ temp2.getSecondsUntilReset() / temp2.getRemaining();
System.out.println(secondstosleep);
Thread.sleep(secondstosleep * 1000);
}
}
}
该代码将打印出您最近进行的每条推文,以及转发该推文的人的ID。需要注意的几个快速事项-主要是这一行:
Twitter twitter = TwitApplicationFactory.getjoereddingtonTwitter();
不会为您工作-那是我得到自己的API密钥,依此类推,您必须编写自己的API密钥...