Закрытые титры в API YouTube v3

Мне нужно прочитать текст закрытого субтитра от сторонних, общедоступных видео YouTube в моем java webapp, т.е. я НЕ загружал контент.

В то время как v2 API данных YouTube ограничивал доступ к информации о титрах тому, кто загрузил видео, кажется, это очень странное ограничение на предоставить доступ ко всему, кроме этой части данных. Я ожидал, что это ограничение будет удалено в v3 API, но теперь единственной ссылкой на закрытую подпись является логический метод, подтверждающий, что CC привязан к видео. Даже владелец не может сейчас загрузить его. (Google собирается добавить его, по крайней мере?)

Boolean hasCaptions = video.getContentDetails().getCaption()

Использование API данных YouTube v3 (с помощью Google API Java API). Я смог найти, проверить подлинность и получить ресурсы YouTube (видео, плейлисты, каналы и т.д.). Я могу сделать почти все, что предоставил API. Я просто не могу прочитать текст субтитров.

Я также пробовал неопубликованное временное решение для временной ссылки, но это противоречиво, не работает для более нового контента и имеет много ошибок в кодировке в содержимом, который он охватывает.

Мне интересно, знает ли кто-нибудь о способе получения текста субтитров из видео YouTube из java (а не плагина .js)?

[В худшем случае, кто-нибудь знает библиотеку, которая позволяет мне программно взаимодействовать с YouTube, как браузер, и позволяет мне щелкнуть кнопку транскрипции на экране, и я могу вытащить транскрипт оттуда? Prowser не разрешает взаимодействие с кликом и JxBrowser $1,300 +]

Нижеприведенный код отлично работает и доставляет мне все видеоданные, поэтому мне нужен последний шаг, на который мне нужна помощь. Я включил его здесь, если это будет полезно для всех, кому нужно зайти так далеко.

// Build a YouTube resource
YouTube youtube = new YouTube.Builder(new NetHttpTransport(),
                            new JacksonFactory(), 
                            new HttpRequestInitializer())
                    .setApplicationName("caption-retrieval")
                    .build();

// Create the video list request, it should only return one
// result
YouTube.Videos.List listVideosRequest = youtube.videos().list("id, snippet, contentDetails");
listVideosRequest.setKey(API_KEY));
listVideosRequest.setId(VIDEO_ID);

// Request is executed and video list response is returned
VideoListResponse listVideosResponse = listVideosRequest.execute();

List<Video> videos = listVideosResponse.getItems();

// Since a unique video id is given, it will only return
// one video. Would check if video has been removed in 
// production code.
Video video = videos.get(0);

// Read the remaining meta information
title = video.getSnippet().getTitle().trim();
author = video.getSnippet().getChannelTitle();

captionText = ???????

Любая помощь с благодарностью получена.

Спасибо,

Greg.

Ответ 1

В скором времени мы надеемся на поддержку Captions в Data API v3. Вам не нужно очищать веб-сайт.

Обновление: теперь это реализовано. Документы можно найти здесь.

Ответ 2

Наконец, они представили эту функцию:

https://developers.google.com/youtube/v3/docs/captions