Youtube CommentThread не возвращает все комментарии

Я пытаюсь создать небольшое приложение, которое может извлечь все комментарии из видео YouTube. Я использую API данных Youtube v3, чтобы попытаться получить все комментарии, но по какой-то причине он дает мне только часть комментариев, которые есть на видео.

Идентификатор видео, на котором это тестируется, ozpqv1mYLcE

Это мой код, который я использую, чтобы просто посчитать количество комментариев прямо сейчас. При этом используется пакет Auth из примера кода, предоставленного Google.

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();
        }

    }
}

Выход из запуска это:

0
1
Total Number of Comments: 313

Однако на момент публикации этой темы в теме было 5049 комментариев (все можно посмотреть здесь: https://www.youtube.com/all_comments?v=ozpqv1mYLcE).

Я считаю, что в моем коде правильное разбиение на страницы, а также подсчет ответов из потоков. Это ограничение в API YouTube? Или я делаю что-то не так, о чем просто не знаю? Любая помощь в решении этой проблемы очень ценится

0 ответов

Другие вопросы по тегам