【问题标题】:Friends list of a friend using Twitter4J使用 Twitter4J 的朋友的朋友列表
【发布时间】:2012-02-12 02:25:26
【问题描述】:

如何使用Twitter4J获取好友或关注者的好友列表?

使用getFriendsId(),我只能检索经过身份验证的当前用户的朋友/关注者列表。我想要的是获取经过身份验证的用户的关注者或朋友的朋友列表。

【问题讨论】:

    标签: java twitter4j


    【解决方案1】:

    这将显示您朋友的关注者的姓名。

          User u1 = null ;
          long cursor = -1;
          IDs ids;
          System.out.println("Listing followers's ids.");
          do {
                  ids = twitter.getFollowersIDs("username", cursor);
              for (long id : ids.getIDs()) {
                  System.out.println(id);
                  User user = twitter.showUser(id);
                  System.out.println(user.getName());
              }
          } while ((cursor = ids.getNextCursor()) != 0);
    

    【讨论】:

    • 警告:这很有可能会在您第一次尝试时限制您的费率。
    • 我不明白你为什么一直调用getFollowersIds 方法。是为了响应的分页吗?所以 Sandeepsharat 之前的回答只会返回所有朋友的一个子集?
    • @rcompton 我们不能克服这个限制问题吗?
    【解决方案2】:

    你只需要这样做:

    Twitter twitter = mTwitterApp.getTwitterInstance();
    long cursor = -1;
    List<User> users=twitter.getFriendsList(mTwitterApp.getUserID(), cursor);
    

    这里的 users 是一个列表用户,他们是你的朋友(你正在关注他们)。 mTwitterApp.getUserID() 是您的登录用户名,它是一个长值。

    【讨论】:

    • 这只会列出前 5000 个用户,因为光标值为 -1。
    【解决方案3】:
    long lCursor = -1;
    IDs friendsIDs = twitter.getFriendsIDs(userID, lCursor);
    System.out.println(twitter.showUser(userID).getName());
    System.out.println("==========================");
    do
    {
      for (long i : friendsIDs.getIDs())
       {
           System.out.println("follower ID #" + i);
           System.out.println(twitter.showUser(i).getName());
       }
    }while(friendsIDs.hasNext());
    

    【讨论】:

    • 这段代码不是对API重复攻击,你可能会被超过速率限制被禁止吗?
    • 这将很容易超过速率限制(dev.twitter.com/rest/public/rate-limiting)。使用 getFriendsList 而不是 getFriendsIDs。在此页面上查看我的答案。
    【解决方案4】:

    此代码有效!(不超过速率限制)。参考 twitter4j documentation 和 StackOverflow 上的其他答案。

        try {
                // get friends
                long cursor = -1;
                PagableResponseList<User> pagableFollowings;
                do {
                    pagableFollowings = twitter.getFriendsList(twitter.getId(), cursor);
                    for (User user : pagableFollowings) {
                        listFriends.add(user); // ArrayList<User>
                    }
                } while ((cursor = pagableFollowings.getNextCursor()) != 0);
    
                // get followers
                cursor = -1;
                PagableResponseList<User> pagableFollowers;
                do {
                    pagableFollowers = twitter.getFollowersList(twitter.getId(), cursor);
                    for (User user : pagableFollowers) {
                        listFollowers.add(user); // ArrayList<User>
                    }
                } while ((cursor = pagableFollowers.getNextCursor()) != 0);
    
            } catch (TwitterException e) {
                printError(e);
            }
    

    【讨论】:

      【解决方案5】:

      你可以使用

      twitter.getFollowersIDs("username", cursor);
      

      http://twitter4j.org/javadoc/twitter4j/api/FriendsFollowersResources.html#getFollowersIDs-java.lang.String-long- 它只返回 5000 个用户而不是所有用户。 15分钟内限15次。(https://dev.twitter.com/rest/reference/get/friends/ids)

      另外,你可以使用,

      twitter.getFollowersList("username", cursor);
      

      http://twitter4j.org/javadoc/twitter4j/api/FriendsFollowersResources.html#getFollowersList-java.lang.String-long- 也限制为 20 个用户。用户认证15分钟内限制15次,应用认证15分钟内限制30次(https://dev.twitter.com/rest/reference/get/friends/list

      对于无限制访问,您可以查看https://gnip.com/ 或推特的白名单用户访问。

      【讨论】:

        【解决方案6】:
                 PagableResponseList<User> friendlist= twitter.getFriendsList(user.getScreenName(), -1);
        
                 int sizeoffreindlist= friendlist.size();
        
                 for(int i=0;i<sizeoffreindlist;i++)
                 {
                     System.out.println(friendlist.get(i));
                 }
        

        它将为您提供 20 个朋友的列表,默认限制为 20 个

        【讨论】:

          【解决方案7】:

          获取好友列表之类的呢? https://dev.twitter.com/docs/api/1.1/get/friends/list

          根据文档:

          为每个用户返回一个用户对象的游标集合 指定的用户正在关注(也称为他们的“朋友”)。

          twitter4j.api 中有这个接口,但是我不知道怎么用:

          PagableResponseList<User> getFriendsList(String screenName, long cursor) throws TwitterException;
          

          【讨论】:

          • 注意:2018年网址坏了。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-21
          • 1970-01-01
          • 1970-01-01
          • 2011-08-10
          • 2013-08-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多