1

我是 twitter4j api 的新手,有没有什么方法可以使用 twitter4j 获取特定推文的最爱计数。我正在为 Twitter4j 使用 api 版本 3.0.3。

在文档中该方法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();
        }

 }
4

2 回答 2

1

不幸的是,链接到 3.0.3 版本旁边的 Twitter4J 站点上的 JavaDocs 似乎不正确。实际的文档在这里- 您可以看到这些文档中getFavoriteCount()不存在。

看起来Status#getFavoriteCount()在 3.0.4 中引入。所以是的,您需要从 3.0.3 升级才能使用此方法。

尽管请注意 3.0.4 版本看起来目前正在积极开发中。

于 2013-06-18T11:42:38.150 回答
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();
}
于 2013-08-12T10:57:27.390 回答