Использование Twitter4j для подсчета избранного для определенного твита

Я новичок в API twitter4j, есть ли способ не получать количество избранных для определенного твита с помощью twitter4j. Я использую API версии 3.0.3 для 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();
        }

 }

person gusaindpk    schedule 18.06.2013    source источник
comment
да, вы можете вызвать метод getFavouriteCount() для объекта состояния. Вы должны прочитать документацию, попробовать что-нибудь и опубликовать код, который вы пробовали, когда застряли. Таким образом людям будет намного проще помочь вам, и это избавит нас от поиска ответа в Google. twitter4j.org/javadoc/twitter4j/Status.html#getFavoriteCount()   -  person robthewolf    schedule 18.06.2013
comment
@robthewolf Я прочитал документацию и попробовал то же самое, но код не компилируется, говорит, что нет подписи метода getFavoriteCount() для конкретного объекта, поэтому я запутался, скачав банку с сайта twitter4j. Я получил эту ошибку. Метод getFavoriteCount() не определен для типа Status. мне нужно использовать какую-то другую версию jar   -  person gusaindpk    schedule 18.06.2013
comment
@gusaindpk Вы должны добавить подозрительный фрагмент кода, ошибку компиляции и соответствующие детали к своему вопросу, чтобы люди могли помочь. Вы не получите много ответов с вопросом, как это.   -  person Jonathan    schedule 18.06.2013
comment
@Jonathan my bad добавил код и объяснил проблему...   -  person gusaindpk    schedule 18.06.2013


Ответы (2)


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

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

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

person Jonathan    schedule 18.06.2013
comment
спасибо, есть ли другой способ получить количество любимых?? - person gusaindpk; 18.06.2013
comment
@gusaindpk Нет проблем. Я бы попробовал использовать версию 3.0.4-SNAPSHOT сам. - person Jonathan; 18.06.2013
comment
Кстати, я отправил сообщение об ошибке в проект — надеюсь, они скоро ее исправят. - person Jonathan; 18.06.2013

Хотя вы уже нашли и отметили ответ, позвольте мне предоставить альтернативу переключению версии 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();
}
person Siddharth Lele    schedule 12.08.2013