为啥 Youtube/Google API 不返回超过 5 个回复?
Posted
技术标签:
【中文标题】为啥 Youtube/Google API 不返回超过 5 个回复?【英文标题】:Why does the Youtube/Google API not return more than 5 replies?为什么 Youtube/Google API 不返回超过 5 个回复? 【发布时间】:2020-09-26 21:12:59 【问题描述】:几天以来,我一直在使用 Youtube 的(Google 的)API 3.0(.NET Google API 库) 一切都很顺利,直到我偶然发现了一个问题。我尝试了很多方法来弄清楚为什么我从结果中得到的信息量很少。
我在下面的代码中尝试的是请求对视频的第一条评论。 然后使用第一个评论 (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 条回复的所有视频都无法全部回复。
我得到的结果(带有“计数:”的消息框)(我在CommentThread.Replies.Comments
中得到的回复数量是 5。无论我做什么。使用令牌转到下一页也无法正常工作空。
有谁知道为什么它只返回 5 个 cmets 而不是更多?
【问题讨论】:
commentThreadsListRequest.MaxResults = 1;
这是做什么的?
@mjwills 来自我选择的视频的所有评论线程,由于commentThreadsListRequest.Order = CommentThreadsResource.ListRequest.OrderEnum.Relevance;
,它只会返回一个结果(即顶部评论)
如果您解决了问题,请等待一天左右,然后单击答案左上角的绿色复选标记。这标志着您的问题在 UI 中已解决。在标题中添加“已解决”并不会将其标记为已解决。
maxResults 参数指定结果集中应返回的最大项目数。您真的应该将其保留为默认值 20
【参考方案1】:
我在某人的帮助下找到了答案。 问题是我将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();
【讨论】:
以上是关于为啥 Youtube/Google API 不返回超过 5 个回复?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Wikipedia API 获取图像 URL,但有些图像不返回 URL,为啥?