2013-06-18 4 views
1

Я новичок в twitter4j api, есть ли способ получить ни одного любимого счета для конкретного твита с помощью twitter4j. Я использую api версии 3.0.3 для Twitter4j.Использование Twitter4j для получения одобренного счета для определенного твита

В документации имеется метод getFavoriteCount(), но тот же метод дает ошибку компиляции в коде. Должен ли я использовать другую версию jar-файла?

public static void main(String[] args) { 

    ConfigurationBuilder cb= new ConfigurationBuilder(); 
     cb.setDebugEnabled(true); 
     cb.setOAuthConsumerKey("**************************"); 
     cb.setOAuthConsumerSecret("**************************"); 
     cb.setOAuthAccessToken("*******************************"); 
     cb.setOAuthAccessTokenSecret("*****************************"); 
     Twitter twitter = new TwitterFactory(cb.build()).getInstance(); 
     User user = null; 
     try { 
      user = twitter.verifyCredentials(); 
     } catch (TwitterException e1) { 
      e1.printStackTrace(); 
     } 

     String[] test = new String[]{"teststr"}; 
     ResponseList<User> users; 
     try { 
      users = twitter.lookupUsers(test); 

     for (User user1 : users) { 
       if (user1.getStatus() != null) 
       { 
        Paging paging = new Paging(1, 40); 
        ResponseList<Status> statusess = twitter.getUserTimeline(user1.getName(),paging); 

       for (Status status3 : statusess) 
       { 
       long retweetCount = status3.getRetweetCount(); 
       long favoriteCount = status3.getFavoriteCount();/** this line gives compilation error saying the method getFavoriteCount() is undefined for the type Status**/ 

       } 
       } 
     } 
     } catch (TwitterException e) { 
      e.printStackTrace(); 
     } 

} 
+0

да, вы можете вызвать метод getFavouriteCount() на объекте состояния. Вы должны прочитать документацию, попробуйте что-нибудь и опубликуйте код, который вы пробовали, когда застряли. Гораздо легче людям помочь вам таким образом и избавит нас от поиска ответа для вас. http://twitter4j.org/javadoc/twitter4j/Status.html#getFavoriteCount() – robthewolf

+0

@robthewolf Я прочитал документацию, и я попробовал тоже одно и то же, но код не компилируется, говорит, что никакой сигнатуры метода getFavoriteCount() для конкретного объект, вот почему я запутался, я загрузил банку с сайта twitter4j. Я получил эту ошибку "Метод getFavoriteCount() не определен для типа Status". мне нужно использовать некоторую другую версию jar – gusaindpk

+0

@gusaindpk. Вы должны добавить подозрительный фрагмент кода, ошибку компиляции и соответствующие данные на свой вопрос, чтобы люди могли помочь. Вы не получите ответа на вопрос как есть. – Jonathan

ответ

1

К сожалению, похоже, что JavaDocs на сайте Twitter4J, связанном рядом с выпуском 3.0.3, неверны. Фактические документы: here - вы можете видеть, что getFavoriteCount() нет в них.

Похоже, Status#getFavoriteCount() был только introduced in 3.0.4. Так что да, вам нужно перейти с 3.0.3, чтобы использовать этот метод.

Хотя помните, что версия 3.0.4 выглядит так, как будто она находится в активной разработке на данный момент.

+0

спасибо, есть ли другой способ получить любимый счет? – gusaindpk

+0

@gusaindpk Нет проблем. Я бы попробовал самостоятельно использовать версию «3.0.4-SNAPSHOT». – Jonathan

+0

Кстати, я представил ошибку об этом проекту - надеюсь, скоро это исправит. – Jonathan

0

Хотя вы уже нашли и отметили ответ, позвольте мне предоставить альтернативу переключению версии Twitter4J.

При использовании метода, аналогичного тому, что вы используете, я много искал и, наконец, нашел решение в совершенно несвязанном сообщении. Вот как вы можете получить избранное количество твитов:

ПРИМЕЧАНИЕ:Это то, что я использую в приложении для Android.

Во-первых, в вашем ConfigurationBuilder cb, например, добавить одну строку:

cb.setJSONStoreEnabled(true); 

Это будет возвращать все результаты в формате JSON. Как ни странно, получение результата JSON дает вам это значение.

Теперь для извлечения твитов:

try { 
    Paging paging = new Paging(initPagingOffset, 200); 
    statuses = twitter.getHomeTimeline(paging); 

    String strTweets = DataObjectFactory.getRawJSON(statuses); 
    JSONArray JATweets = new JSONArray(strTweets); 

    for (int i = 0; i < JATweets.length(); i++) { 
     JSONObject JOTweets = JATweets.getJSONObject(i); 

     ..... // PARSE ANY OTHER DATA YOU MIGHT NEED FOR DISPLAYING THE TWEETS 

     String FAV_COUNT = JOTweet.getString("favorite_count"); 

    } 
} catch (TwitterException e) { 
    e.printStackTrace(); 
} catch (JSONException e) { 
    e.printStackTrace(); 
}