2013-09-23 2 views
4

Я использую twitter 4j для небольшого приложения Twitter и im, в настоящее время использую следующий код, чтобы получить идентификаторы последователей, что мне нужно для пользователя (пусть говорит ME) Мне нравится иметь верх 10 пользователей с наибольшим количеством последователей (следующий код получает идентификаторы профиля пользователя). в моем твиттере профиле я получил 80 последователей и я хотел бы принести последователей, которые имеют больше последователей (первый 10)Twitter4j получают подписчиков, у которых больше всего подписчиков

Twitter twitter = new TwitterFactory().getInstance(); 
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_KEY_SECRET); 
String accessToken = getSavedAccessToken(); 
String accessTokenSecret = getSavedAccessTokenSecret(); 
AccessToken oathAccessToken = new AccessToken(accessToken, accessTokenSecret); 

twitter.setOAuthAccessToken(oathAccessToken); 
User user = null; 
try { 
    user = twitter.showUser(username);// id = user.getId(); 
} catch (TwitterException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

ответ

4

Чтобы получить последователей данного пользователя, используя свое имя экрана, см Twitter#getFollowersList(), например:

long cursor = -1; 
PagableResponseList<User> followers; 
do { 
    followers = twitter.getFollowersList("screenName", cursor); 
    for (User follower : followers) { 
     // TODO: Collect top 10 followers here 
     System.out.println(follower.getName() + " has " + follower.getFollowersCount() + " follower(s)"); 
    } 
} while ((cursor = followers.getNextCursor()) != 0); 

Я использовал курсор для извлечения всех подписчиков, по умолчанию вызов api возвращает только двадцать - см. Руководство по Google на Using cursors to navigate для получения дополнительной информации.

В течение цикла вы можете собирать своих «лучших 10» последователей, проверяя количество подписчиков.

+0

thx для ответа, и я попытался, если условие внутри цикла, чтобы проверить, является ли последовательный счет более 1000, тогда напечатайте имя и идентификатор, но поскольку PagableResponseList извлекает 20 за раз, я не могу получить 10 лучших моих подписчиков, у которых больше подписчиков для себя, пожалуйста, сообщите мне, если я ошибаюсь. – optimus

+0

Нет проблем. Как насчет сохранения последователей, которые вы извлекаете в списке, а затем сортировки их 'followersCount'? Это должно привести к тому, что у ваших последователей больше всего последователей. – Jonathan

+0

Спасибо за ваш ответ и по вашему предложению я попытался создать массив с длиной подсчета пользователей (billgates - 13,554,291) и попытался получить только идентификаторы последователей и попытался сохранить идентификаторы в массиве сначала я получил java heap memory error, но увеличил память, но теперь получил ошибку ограничения скорости :('429: возвращен в API v1.1, когда запрос не может быть выполнен из-за того, что предел скорости приложения исчерпан для ресурса. См. ограничение скорости в API v1 .1. (Https://dev.twitter.com/docs/rate-limiting/1.1) сообщение - Прейскурант превышен код - 88 ' – optimus

Смежные вопросы