LinqToTwitter:如何 return 超过 20 个关注者?

LinqToTwitter: How to return more than 20 followers?

如何将此查询修改为 return 所有用户关注者,因为这只有 returns 20?

        var friendship = await twitterCtx.Friendship.Where(f => f.Type == FriendshipType.FollowersList)
                                                      .Where(f => f.ScreenName == "JoeBloggs")
                                                      .SingleOrDefaultAsync();

        if (friendship != null && friendship.Users != null)
            friendship.Users.ForEach(friend =>
                Console.WriteLine(
                    "ID: {0} Name: {1}",
                    friend.UserIDResponse, friend.ScreenNameResponse));

(我可以看到有一个 Cursor 属性,它是一个很长的分页结果,但我一直无法弄清楚如何使用它。)

通过四处搜索和阅读有关速率限制的 Twitter API 文档,我发现以下内容运行良好:

    public async Task<IEnumerable<ulong>> GetAllFollowers(string userID)
    {
        var allFollowerIds = new List<ulong>();
        Friendship followers;
        long cursor = -1;
        do
        {
            try
            {
                followers =
                await
                (from follower in twitterCtx.Friendship
                 where follower.Type == FriendshipType.FollowerIDs &&
                 follower.UserID == userID &&
                 follower.Cursor == cursor &&
                 follower.Count == 5000
                 select follower)
                .SingleOrDefaultAsync();
            }
            catch (TwitterQueryException tqe)
            {
                Console.WriteLine(tqe.ToString());
                break;
            }

            if (followers != null &&
            followers.IDInfo != null &&
            followers.IDInfo.IDs != null)
            {
                cursor = followers.CursorMovement.Next;

                allFollowerIds.AddRange(followers.IDInfo.IDs);
            }

        } while (cursor != 0);

        return allFollowerIds;
    }

这将 return 最多 75,000 个关注者用于用户授权的应用程序。这是因为此特定端点的请求上限为 15 个。您可以在 15 分钟后进行另一批请求。

我自己还没有尝试过,但是如果您需要拉下更多关注者,那么对于特定用户,您应该能够通过简单地再次调用此方法并以最后一个游标值作为起始输入来做到这一点值。