我正在尝试从关注者列表中获取每个用户的最新状态列表。我有以下内容来吸引用户......
IDs list = twitter.getFriendsIDs(0);
for(long ID : list.getIDs()){
twitter4j.User TW_user = twitter.showUser(ID);
}
我所能得到的只是getStatus()
,这是他们最近的状态。 getHomeTimeline()
也不够,因为我需要每个用户的最新推文列表。无论如何我可以用Twitter4J实现这个目标吗?
答案 0 :(得分:2)
我只是想自己找到这个答案。我使用getUserTimeline方法取得了不错的成功。看起来您正在尝试查找朋友ID列表,因此下面的方法应该使用long []并吐出所有用户状态。如果你想以这种方式查看用户,lookupUsers也接受一个字符串[]的屏幕名称。
public static void lookupUsers(long[] usersList) {
try {
Twitter twitter = new TwitterFactory().getInstance();
ResponseList<User> users = twitter.lookupUsers(usersList);
Paging paging = new Paging(1, 100);
List<Status> statuses;
for (User user : users) {
statuses = twitter.getUserTimeline(user.getScreenName(), paging);
System.out.println("\nUser: @" + user.getScreenName());
for (Status s : statuses) {
System.out.println(s.getText());
}
}
} catch (TwitterException e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
亚历克斯的答案很接近,但每个用户只会得到100条推文。以下内容将为您提供所有(或至少API的最大限制):
IDs list = twitter.getFriendsIDs(0);
for(long ID : list.getIDs()) {
Status[] tweets = getAllTweets(twitter, ID);
System.out.println(ID + ": " + tweets.length);
}
Status[] getAllTweets(Twitter twitter, long userId)
{
int pageno = 1;
List statuses = new ArrayList();
while (true)
{
try
{
int size = statuses.size();
Paging page = new Paging(pageno++, 100);
statuses.addAll(twitter.getUserTimeline(userId, page));
if (statuses.size() == size)
break;
}
catch (TwitterException e)
{
e.printStackTrace();
}
}
return (Status[]) statuses.toArray(new Status[0]);
}