Java Youtube CommentThread未返回所有评论

Java Youtube CommentThread未返回所有评论,java,youtube,youtube-api,youtube-data-api,youtube-channels,Java,Youtube,Youtube Api,Youtube Data Api,Youtube Channels,我正在尝试创建一个小应用程序,可以从youtube视频中检索所有评论。我正在使用Youtube数据API v3尝试检索所有评论,但出于某种原因,它只提供视频中的一小部分评论 正在测试的视频的Thd ID是ozpqv1mYLcE 这是我的代码,我现在用它来计算评论的数量。这使用了来自谷歌提供的示例代码的Auth包 import com.google.api.client.auth.oauth2.Credential; import com.google.api.services.samples.y

我正在尝试创建一个小应用程序,可以从youtube视频中检索所有评论。我正在使用Youtube数据API v3尝试检索所有评论,但出于某种原因,它只提供视频中的一小部分评论

正在测试的视频的Thd ID是ozpqv1mYLcE

这是我的代码,我现在用它来计算评论的数量。这使用了来自谷歌提供的示例代码的Auth包

import com.google.api.client.auth.oauth2.Credential;
import com.google.api.services.samples.youtube.cmdline.Auth;
import com.google.api.services.youtube.YouTube;
import com.google.api.services.youtube.model.CommentThread;
import com.google.api.services.youtube.model.CommentThreadListResponse;
import com.google.common.collect.Lists;

import java.util.List;

public class YoutubeTest {

    public static void main(String args[]){

        List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube.force-ssl");

        try{
            Credential credential = Auth.authorize(scopes, "commentthreads");

            YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential)
                    .setApplicationName("YoutubeTest").build();

            String videoID = "ozpqv1mYLcE";
            int count = 0;
            String nextPage = null;

            CommentThreadListResponse response = youtube.commentThreads().list("snippet,replies")
                    .setVideoId(videoID).setTextFormat("plainText").setMaxResults(100L).execute();

            nextPage = response.getNextPageToken();
            count += response.getItems().size();
            for(CommentThread t : response.getItems()){
                if(t.getReplies() != null)
                    count += t.getReplies().size();
            }
            int i = 0;

            while(nextPage != null){
                response = youtube.commentThreads().list("snippet,replies")
                        .setVideoId(videoID).setTextFormat("plainText").setMaxResults(100L).setPageToken(nextPage).execute();

                nextPage = response.getNextPageToken();
                count += response.getItems().size();
                for(CommentThread t : response.getItems()){
                    if(t.getReplies() != null)
                        count += t.getReplies().size();
                }
                System.out.println(i++);
            }

            System.out.println("Total Number of Comments: " + count);



        } catch (Exception e){
            e.printStackTrace();
        }

    }
}
但是,在发布此线程时,该线程有5049条注释(可以在此处看到:)


我相信我的分页在我的代码中是正确的,并且计算线程的回复。这是youtube api中的限制吗?还是我做了一些我不知道的错事?出于兴趣,我们非常感谢您为解决此问题提供的任何帮助。如果您将MaxResults设置得更高,会发生什么?您不能。如果您这样做,YouTube将以错误响应。该值必须介于1和100之间。无论设置为什么,只要想到这一点,我仍然会收到相同数量的回复。这可能是youtube频道的所有者正在限制的吗?我在其他几个不同用户的视频上试用了我的代码,它似乎能够统计所有的评论。不确定。今天早上我试图发表评论,但网络放弃了。。。如果将MaxResults设置为较低值时得到相同的结果,那么可能您真的得到了所有结果,这就是您计算它们的方式?你有没有检查过你的结果,看看有什么东西掉了,如果有什么的话?我确实意识到我数错了,稍后我会用新的计数方法更新我的帖子。然而,在那个特定的视频上,它并没有改变多少数字(317是我现在得到的)。但是,如果你转到“所有评论”链接,你可以清楚地看到视频上有超过300条评论是出于兴趣,如果你将MaxResults设置得更高,会发生什么?你不能。如果您这样做,YouTube将以错误响应。该值必须介于1和100之间。无论设置为什么,只要想到这一点,我仍然会收到相同数量的回复。这可能是youtube频道的所有者正在限制的吗?我在其他几个不同用户的视频上试用了我的代码,它似乎能够统计所有的评论。不确定。今天早上我试图发表评论,但网络放弃了。。。如果将MaxResults设置为较低值时得到相同的结果,那么可能您真的得到了所有结果,这就是您计算它们的方式?你有没有检查过你的结果,看看有什么东西掉了,如果有什么的话?我确实意识到我数错了,稍后我会用新的计数方法更新我的帖子。然而,在那个特定的视频上,它并没有改变多少数字(317是我现在得到的)。但是如果你去“所有评论”链接,你可以清楚地看到视频上有超过300条评论
0
1
Total Number of Comments: 313