Я хочу получить ретвиты твита и знаю идентификатор твита, но всегда получаю 0 (размер статусов списка всегда равен 0). Я проверил твит, который я ищу, имеет ретвиты, но возврат равен 0. Может ли кто-нибудь сказать, почему? Большое спасибо. Вот мой код:

public class getRetweets {

public static void main(String[] args) {

    try {
        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true)
              .setOAuthConsumerKey("key")
              .setOAuthConsumerSecret("keysecret")
              .setOAuthAccessToken("token")
              .setOAuthAccessTokenSecret("tokensecret");
        TwitterFactory tf = new TwitterFactory(cb.build());
        Twitter twitter = tf.getInstance();
        List<Status> statuses = twitter.getRetweets(Long.parseLong("523516722331271169"));
        for (Status status : statuses) {
            System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
        }
        System.out.println("done.");
        System.exit(0);
    } catch (TwitterException te) {
        te.printStackTrace();
        System.out.println("Failed to get retweets: " + te.getMessage());
        System.exit(-1);
    }
}

}

0
王梦迪 18 Окт 2014 в 21:15
Я не знаком с вашей библиотекой, но почему вы используете Long.parseLong(.... - вы должны просто передать ей строку "523516722331271169".
 – 
Terence Eden
19 Окт 2014 в 13:17
Большое спасибо! Эта проблема была решена.
 – 
王梦迪
1 Ноя 2014 в 20:55

2 ответа

Пожалуйста, сделайте следующее и проверьте, есть ли у вас какие-либо ретвиты для данного tweetID.

        Status statusTemp = twitter.showStatus(Long.parseLong("523516722331271169"));
        System.out.println(statusTemp.getText());
        System.out.println(statusTemp.getRetweetCount());

Вы уверены, что ищете правильный tweetID?

0
mbaxi 20 Окт 2014 в 11:52

У твита с указанным вами идентификатором 0 ретвитов. Ваш код, кажется, в порядке. Я только что проверил твиты, у которых определенно есть ретвиты.

public void test(){
    TwitterFactory tf = new TwitterFactory(conf);
    Twitter twitter = tf.getInstance();

    Query query = new Query("from:BBCBreaking Lynda Bellingham");
    query.setLang("en");
    QueryResult result = null;
    try {
        result = twitter.search(query);
    } catch (TwitterException e) {
        e.printStackTrace();
    }


    for(Status status : result.getTweets()){
        if(status.getRetweetCount() > 0){

            long id = status.getId();

            List<Status> statuses = null;
            try {
                statuses = twitter.getRetweets(id);
            } catch (TwitterException e) {
                e.printStackTrace();
            }

            System.out.println("Start Retweet Section------------------");
            for (Status retweet : statuses) {
                System.out.println("@" + retweet.getUser().getScreenName() + " - " + status.getText());
            }
            System.out.println("End Retweet Section------------------");

        }
    }
}

Вывод выглядит следующим образом:

Начать ретвит раздела--------------------------------

@PattenAdam - Линда Беллингем, которая умерла после борьбы с раком...

@brunoappr - Линда Беллингем, которая умерла после борьбы с раком...

@poguesfan4ever — Линда Беллингем, которая умерла после борьбы с раком...

Конец раздела ретвитов--------------------------------

Начать ретвит раздела--------------------------------

@holdbxcktherain — британская актриса и ведущая Линда Беллингхэм, которая болела раком...

@Dusty_Milo — британская актриса и ведущая Линда Беллингхэм, которая болела раком...

@_aaaamy - британская актриса и ведущая Линда Беллингем, у которой был рак...

Конец раздела ретвитов--------------------------------

0
n0daft 20 Окт 2014 в 16:46