为什么 Youtube/Google API 没有 return 超过 5 个回复?

Why does the Youtube/Google API not return more than 5 replies?

这几天我一直在使用 Youtube 的 (Google's) API 3.0 (.NET Google API 库) 一切都很顺利,直到我偶然发现了一个问题。我尝试了很多方法来弄清楚为什么我从结果中得到的信息很少。

我在下面的代码中尝试的是请求对视频的第一条评论。 然后使用第一条评论 (CommentThread),我试图检索对此评论做出反应的所有用户回复。

我之前尝试过获取信息,效果很好。我可以加载整个评论部分。每个 CommentThread 超过 5 个回复除外。 (CommentThread基本就是视频下的评论,有的有回复。)

这是我的代码,我修改了很多次,但从它的外观来看。这个应该可以。

        private static void searchReplies()
        {
            int count = 0;
            YouTubeService youtube = new YouTubeService(new BaseClientService.Initializer() { ApiKey = Youtube.API.KEY });
            List<string[]> comments = new List<string[]>();


            var commentThreadsListRequest = youtube.CommentThreads.List("snippet,replies");
            commentThreadsListRequest.VideoId = Youtube.Video.ID;
            commentThreadsListRequest.Order = CommentThreadsResource.ListRequest.OrderEnum.Relevance;
            commentThreadsListRequest.MaxResults = 1;
            var commentThreadsListResult = commentThreadsListRequest.Execute();
            foreach (var CommentThread in commentThreadsListResult.Items)
            {
                var commentListRequest = youtube.Comments.List("snippet");
                commentListRequest.Id = CommentThread.Id;
                var commentListResult = commentListRequest.Execute();


                foreach (var Item in commentListResult.Items)
                {
                    CommentThreadIDs.Add(Item.Id);
                }
                MessageBox.Show("COUNT:" + CommentThread.Replies.Comments.Count);
                foreach (var Reply in CommentThread.Replies.Comments)
                {
                    CommentThreadIDs.Add(Reply.Id);
                }
            }
        }

我检查了我的 API 和视频 ID。他们都很好,因为我可以请求很多其他信息。 我已经用几个视频对此进行了测试,但是所有第一个评论有超过 5 个回复的视频,都无法全部回复。

我得到的结果(带有 "Count:" 的消息框)(我在 CommentThread.Replies.Comments 中得到的回复数量是 5。无论我做什么。使用令牌转到下一页不会要么在它为空时工作。

有谁知道为什么只有 returns 5 条评论而不是更多?

我在某人的帮助下找到了答案。 问题是我将 commentThread 的 ID 设置为评论 ID。 相反,我必须将 commentThread ID 设置为父 ID。

如果有人需要,以下代码将完全替换我的旧代码。

YouTubeService yts = new YouTubeService(new BaseClientService.Initializer() { ApiKey = "12345" });

var commentThreadsListRequest = yts.CommentThreads.List("snippet,replies");
commentThreadsListRequest.VideoId = "uywOqrvxsUo";
commentThreadsListRequest.Order = CommentThreadsResource.ListRequest.OrderEnum.Relevance;
commentThreadsListRequest.MaxResults = 1;
var commentThreadResult = commentThreadsListRequest.Execute().Items.First();

var commentListRequest = yts.Comments.List("snippet");
commentListRequest.Id = commentThreadResult.Id;
commentListRequest.MaxResults = 100;

var commentListResult = commentListRequest.Execute();
var comments = commentListResult.Items.Select(x => x.Snippet.TextOriginal).ToList();