【问题标题】:Getting All followers with Linq To Twitter使用 Linq To Twitter 获取所有关注者
【发布时间】:2014-03-21 09:47:44
【问题描述】:

我正在尝试使用以下代码 sn-p 获取所有关注者列表。每个电话都会获得 200 个关注者,所以我在循环中结束以获得所有关注者。用户有 23.1K 关注者,但当关注者达到 2800 时,我收到“速率限制”超出错误。我发现 twitter 允许每个用户 15 个请求,有什么方法可以修复以下代码以获取所有关注者?

private static async Task<List<User>> GetTwitterFollowersAsync(
         ulong twitterUserId, SingleUserAuthorizer auth, int? maxFollowers)
{
    var followerss = maxFollowers ?? 15000;
    long nextCursor = -1;
    var users = new List<User>();

    try
    {
        while (nextCursor != 0)
        {
            var twitterCtx = new TwitterContext(auth);              
            var friends = await twitterCtx.Friendship
                .Where(f => f.Type == FriendshipType.Show
                     && f.SourceScreenName == "John_Papa"
                     && f.Count == followerss && f.Cursor == nextCursor)
                .Select(f => new TwitterData()
                {
                     NewCursor = f.CursorMovement.Next,
                     Followers = f.Users.Where(t => !t.Protected)
                            .Take(followerss).Select(s => s).ToList()
                })
                .SingleOrDefaultAsync();

            nextCursor = friends.NewCursor;
            users.AddRange(friends.Followers);
        }
        return users;
    }
    catch (Exception ex)
    {
        return null;
    }
}

【问题讨论】:

  • 为什么需要所有关注者?也许你只需要他们的身份证?然后,您可以批量获得 1000 个它们(至少使用 REST api)。 dev.twitter.com/docs/api/1.1/get/followers/ids
  • 实际上我需要一个用户最多 15000 个关注者。稍后我将为每个关注者提取 200 条推文。不可能吗?我想,应该有办法
  • 我可以通过 Linq To Twitter 获得 15000 个关注者 ID 吗?怎么可能?

标签: c# linq-to-twitter


【解决方案1】:

LINQ to Twitter 在 TwitterContext 上有 RateLimitXxx 属性,每次查询后都会更新。它们反映了 Twitter 上的速率限制文档中描述的信息:

https://dev.twitter.com/docs/rate-limiting/1

对于每种查询的速率限制,您有一个 15 分钟的窗口来处理每种查询。您可以使用以下逻辑将代码包含在循环中:

  1. 执行查询
  2. 如果你有你需要的所有结果,请打破循环。
  3. 检查速率限制
  4. 如果超出速率限制,请等待 15 分钟间隔到期。
  5. 如果未超过速率限制,则继续循环。

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2014-03-01
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多