YouTube API v3 中的隐藏式字幕

我需要在我的java webapp中阅读来自第三方,公开可用的YouTube视频的隐藏式字幕文本,即我没有上传内容。

虽然YouTube数据API的v2将字幕信息的访问权限限制为上传视频的人,但除了这一条数据之外,授予对所有内容的访问权限似乎是一个非常奇怪的限制。我期望在API的v3中删除此限制,但现在对隐藏字幕的唯一引用是用于确认CC是否附加到视频的布尔方法。即使所有者现在似乎也无法下载它。(谷歌至少会把它加回来吗?

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

使用YouTube Data API v3(使用Google Java API客户端),我已经能够查找,验证和检索YouTube资源(视频,播放列表,频道等)。我几乎可以做API提供的所有事情,我只是无法阅读实际的标题文本。

我还尝试了未发布的定时文本链接解决方法,但这不一致,不适用于较新的内容,并且在它所涵盖的内容中存在许多编码错误。

我想知道是否有人知道从java(不是.js插件)从YouTube视频中检索字幕文本的方法?

[最坏的情况是,有没有人知道一个库,它允许我像浏览器一样以编程方式与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 = ???????

任何帮助都是感激的。

谢谢

格雷格。


答案 1

我们希望尽快在数据 API v3 上获得字幕支持。您无需抓取网站。

更新:现已实现。这些文档可以在这里找到。


答案 2

他们最终引入了这个功能:

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

推荐