在 LinqToTwitter 中获取给定用户正在关注(而非关注者)的用户

Get users that a given user is FOLLOWING (not followers) in LinqToTwitter

如何在 LinqToTwitter 中获取给定用户正在关注(而非关注者)的用户的 UserId 和 ScreenName?

??

Twitter API 使用术语 follower 表示关注某个用户的人,使用 friends 表示关注某个用户的人用户关注,LINQ to Twitter 继续这种方法。因此,您将使用 Friendship/FriendshipType.FriendsList 查询,如下所示:

    static async Task FriendsListAsync(TwitterContext twitterCtx)
    {
        Friendship friendship;
        long cursor = -1;
        do
        {
            friendship =
                await
                (from friend in twitterCtx.Friendship
                 where friend.Type == FriendshipType.FriendsList &&
                       friend.ScreenName == "JoeMayo" &&
                       friend.Cursor == cursor &&
                       friend.Count == 200
                 select friend)
                .SingleOrDefaultAsync();

            if (friendship != null && 
                friendship.Users != null && 
                friendship.CursorMovement != null)
            {
                cursor = friendship.CursorMovement.Next;

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

        } while (cursor != 0);
    }

此示例在 do/while 循环中对结果进行分页。请注意,cursor 设置为 -1,它在没有 Twitter API 游标的情况下开始查询。每个查询分配 cursor,它获取下一页用户。在 if 块中,第一条语句读取 friendship.CursorMovement.Next 以获取下一页用户的 cursor。当下一个 cursor0 时,您已阅读所有关注者。

查询执行后,Users属性有一个List<User>可以获取用户信息。此演示打印列表的每个成员。

您可能 运行 遇到大型朋友列表的其中一件事是 Twitter 会 return 超过速率限制的错误。您将能够在 try/catch 块中通过捕获 TwitterQueryException 并检查超出速率限制的属性来捕获它。要最大程度地减少速率限制问题,请将 count 设置为 200,最大值。否则计数默认为 20。

您可以在 LINQ to Twitter 网站上为此下载 samples and view documentation