我需要阅读来自第三方的封闭式字幕文本,在我的java应用程序中公开可获得的YouTube视频--也就是说,我没有上传内容。
尽管v2的YouTube数据API将标题信息的访问限制在上传视频的人身上,但除了这一段数据之外,允许访问所有内容似乎是一个非常奇怪的限制。我希望看到这个限制在API的v3中被删除,但是现在对封闭标题的唯一引用是一种确定CC是否附加到视频的布尔方法。就连主人现在似乎也无法下载。(谷歌至少会把它加回去吗?)
Boolean hasCaptions = video.getContentDetails().getCaption()
使用YouTube Data v3 (使用客户端),我能够找到、验证和检索YouTube资源(视频、播放列表、频道等)。我几乎可以完成API提供的一切,我只是不能阅读实际的标题文本。
我也尝试过未发布的定时文本链接解决方案,但这是不一致的,不适用于较新的内容,并且在它所涵盖的内容中存在许多编码错误。
我想知道是否有人知道从YouTube视频(不是.js插件)中检索标题文本的方法?
[最糟糕的情况是,有没有人知道有一个库允许我像浏览器一样以编程方式与YouTube交互,并允许我单击屏幕上的文字记录按钮,然后我可以从那里提取记录?普劳瑟不允许单击交互,而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 = ???????
任何帮助都是感激的。
谢谢,
格雷格。
发布于 2013-08-12 18:40:22
我们希望不久就能在Data v3上得到标题支持。你不需要刮这个网站。
更新:现在已经实现了。医生可以在这里找到。
发布于 2016-12-09 05:10:19
他们最终引入了这样的特性:
https://developers.google.com/youtube/v3/docs/captions
https://stackoverflow.com/questions/18192214
复制相似问题