gpt4 book ai didi

c# - 使用 Linq To Twitter 获取所有关注者

转载 作者:行者123 更新时间:2023-11-30 22:08:27 25 4
gpt4 key购买 nike

我正在尝试使用以下代码片段获取所有关注者列表。每个电话都有 200 个关注者,所以我在循环中结束以获取所有关注者。用户有 23,100 名关注者,但当达到 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;
}
}

最佳答案

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

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

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

  1. 执行查询
  2. 如果您获得所需的所有结果,则中断循环。
  3. 检查速率限制
  4. 如果超过速率限制,请等待 15 分钟的间隔到期。
  5. 如果没有超过速率限制,继续循环。

关于c# - 使用 Linq To Twitter 获取所有关注者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22268889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com