Закрытые титры в 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