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

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

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

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

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

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

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

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

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

// 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 = ???????

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

Спасибо,

Грег.

2 ответа

Решение

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

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

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

https://developers.google.com/youtube/v3/docs/captions
Другие вопросы по тегам