使用Twitter4j获取特定推文的收藏数量

时间:2013-06-18 09:55:33

标签: java twitter4j

我是twitter4j api的新手,有没有办法使用twitter4j获取特定推文的最爱数。我正在使用api版本3.0.3 for 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();
        }

 }

2 个答案:

答案 0 :(得分:1)

不幸的是,似乎在3.0.4版本旁边链接的Twitter4J网站上的JavaDocs是不正确的。实际文档为here - 您可以看到getFavoriteCount()不在其中。

Status#getFavoriteCount()似乎只有introduced in 3.0.4。所以是的,您需要从3.0.3升级才能使用此方法。

虽然知道版本3.0.4目前正处于积极开发状态。

答案 1 :(得分: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();
}