【问题标题】:Using Twitter4j to get favorited count for a particular tweet使用 Twitter4j 获取特定推文的收藏次数
【发布时间】:2013-08-12 18:57:27
【问题描述】:

我是 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();
        }

 }

【问题讨论】:

  • 是的,您可以在状态对象上调用方法 getFavouriteCount()。您应该阅读文档尝试一些东西,并在遇到困难时发布您尝试过的代码。人们以这种方式为您提供帮助要容易得多,并且无需我们为您搜索答案。 twitter4j.org/javadoc/twitter4j/Status.html#getFavoriteCount()
  • @robthewolf 我已经阅读了文档,我也尝试了同样的事情,但是代码无法编译说没有特定对象的 getFavoriteCount() 方法的签名,这就是为什么我很困惑我从下载了 jar twitter4j 网站。我收到此错误“未为状态类型定义方法 getFavoriteCount()”。我需要使用其他版本的 jar
  • @gusaindpk 您应该在您的问题中添加可疑代码、编译错误和相关详细信息,以便人们可以提供帮助。对于这个问题,您不会得到太多答复。
  • @Jonathan my bad 添加了代码并解释了问题...

标签: java twitter4j


【解决方案1】:

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

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

尽管请注意,3.0.4 版目前似乎正在积极开发中。

【讨论】:

  • 谢谢,有没有其他方法可以获得最喜欢的计数??
  • @gusaindpk 没问题。我会尝试自己使用3.0.4-SNAPSHOT 版本。
  • 顺便说一下,我已经向项目提交了一个关于此的错误 - 希望他们会尽快修复它。
【解决方案2】:

虽然您已经找到并标记了一个答案,但让我提供一个替代方式来切换 Twitter4J 版本。

当使用类似于您使用的方法时,我搜索了很多,最后在完全不相关的帖子中找到了解决方案。以下是获取推文收藏数量的方法:

注意: 这是我在我的 Android 应用中使用的。

首先,在您的 ConfigurationBuilder cb 实例中,添加这一行:

cb.setJSONStoreEnabled(true);

这将以 JSON 格式返回所有结果。奇怪的是,获得 JSON 结果它为您提供了该值。

现在,获取 Tweets

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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多