我需要在我的java网络应用程序中阅读第三方公开的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售价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 = ???????
任何帮助我们都将不胜感激。
谢谢,
格雷格。
我们希望很快在Data API v3上提供Captions支持。你不需要刮网站。
更新:现在已经实施了。文档可以在这里找到。
他们终于推出了这个功能:
https://developers.google.com/youtube/v3/docs/captions