gpt4 book ai didi

java - 查看对 YouTube 视频的所有评论

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:25 25 4
gpt4 key购买 nike

我正在尝试使用 Java 程序获取 YouTube 视频的所有评论。我无法得到它们,因为它有“显示更多”而不是所有评论。我正在寻找一种方法来获取我可以浏览的所有评论或评论页面。我有一个视频 ID 和其他东西,只需要评论。

我已经尝试在 URL 中使用 all_comments 而不是 watch,但它仍然不显示所有评论并重定向以再次观看。

我也看过 YouTube api,只能找到如何使用他们的 ID 获取评论,但我需要从视频 ID 获取所有评论。

如果有人知道如何做到这一点,请告诉我。

我已经为任何能给我一个好的答案的人增加了 50 个代表的赏金。

最佳答案

您需要为您的视频获取评论线程列表请求,然后使用上次响应中的下一页标记向前滚动:

private static int counter = 0;
private static YouTube youtube;

public static void main(String[] args) throws Exception {
// For Auth details consider:
// https://github.com/youtube/api-samples/blob/master/java/src/main/java/com/google/api/services/samples/youtube/cmdline/Auth.java
// Also don't forget secrets https://github.com/youtube/api-samples/blob/master/java/src/main/resources/client_secrets.json
List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube.force-ssl");
Credential credential = Auth.authorize(scopes, "commentthreads");
youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential).build();

String videoId = "video_id";

// Get video comments threads
CommentThreadListResponse commentsPage = prepareListRequest(videoId).execute();

while (true) {
handleCommentsThreads(commentsPage.getItems());

String nextPageToken = commentsPage.getNextPageToken();
if (nextPageToken == null)
break;

// Get next page of video comments threads
commentsPage = prepareListRequest(videoId).setPageToken(nextPageToken).execute();
}

System.out.println("Total: " + counter);
}

private static YouTube.CommentThreads.List prepareListRequest(String videoId) throws Exception {

return youtube.commentThreads()
.list("snippet,replies")
.setVideoId(videoId)
.setMaxResults(100L)
.setModerationStatus("published")
.setTextFormat("plainText");
}

private static void handleCommentsThreads(List<CommentThread> commentThreads) {

for (CommentThread commentThread : commentThreads) {
List<Comment> comments = Lists.newArrayList();
comments.add(commentThread.getSnippet().getTopLevelComment());

CommentThreadReplies replies = commentThread.getReplies();
if (replies != null)
comments.addAll(replies.getComments());

System.out.println("Found " + comments.size() + " comments.");

// Do your comments logic here
counter += comments.size();
}
}

考虑 api-samples ,如果您需要示例框架项目。


更新

无法获取所有评论的情况也可能是由quota limits引起的(至少我面对过):

  • 单位/ 50,000,000
  • 单位/100 秒/用户 300,000

这不是 java、python、js 或任何语言的特定规则。如果你想超过配额,你不能尝试 apply for higher quota .不过,我将从控制您的吞吐量开始。超过 100 秒/用户 配额非常容易。

关于java - 查看对 YouTube 视频的所有评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441093/

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