2011-09-28 1 views
1

팔로워리스트의 각 사용자로부터 최근 상태 목록을 얻으려고합니다. 나는Twitter4J : 사용자로부터 트윗 이상을 받으십시오.

IDs list = twitter.getFriendsIDs(0); 
    for(long ID : list.getIDs()){ 
     twitter4j.User TW_user = twitter.showUser(ID); 
} 

이 모든 가장 최근 상태입니다 getStatus()입니다에서 내가 얻을 수 있습니다 ... 사용자를 얻을 수있는 다음을 가지고있다. getHomeTimeline() 또한 각 사용자의 최근 트윗 목록이 필요하기 때문에 충분하지 않습니다. 어쨌든 Twitter4J를 사용하여이 작업을 수행 할 수 있습니까?

답변

2

나는이 답변을 직접 찾으려고했습니다. 나는 getUserTimeline 메서드를 사용하여 성공했다. 사용자가 친구 ID 목록을 검색하는 것처럼 보이므로 아래의이 메소드는 길게 []를 사용하고 모든 사용자 상태를 뱉어 내야합니다. lookupUsers는 사용자를 그렇게 보일 경우 화면 이름의 String []을 허용합니다.

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(); 
    } 
} 
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]); 
}