有没有人知道如何获得具有标题的Youtube视频的CC?我知道在API 2.0文档中提到它只适用于视频的所有者...但我能够获得一些视频的标题,即使我不是任何人的拥有者....
可以使用两个API(或API的链接).他们都尝试了timpedtext API.在我提到它们之前,我们应该注意API需要的参数.哪个是:
lang: {en, fr,...} 需要.v: {video ID} 需要.name:曲目名称,仅在设置时为必填项.(这是我的问题.)tlang:翻译成语言.可选(如果您想将CC翻译成其他语言,则应设置. API链接是:
http://video.google.com/timedtext?lang=fr&v=PILzP-bIeLo&name=french 请注意,如果删除name = French或将其设置为其他内容,则上述示例将不返回任何内容...
http://www.youtube.com/api/timedtext?v=zzfCVBSsvqA&lang=en 请注意,如果您设置名称=此示例将不返回任何内容= ...
http://www.youtube.com/api/timedtext?v=ZdP0KM49IVk&lang=en 但实际视频有标题.
示例3不返回CC数据.
所以我猜测示例3需要设置名称参数.我的主要问题是如果设置了名称参数,我该如何找到它.如果设置了,我怎么知道它是什么?
是否可以从任何 YouTube API 中提取自动(非用户)生成的视频脚本?
我正在尝试使用他们的 nuget 包从 Youtube 上的一些视频下载字幕。这是一些代码:
var request = _youtube.Search.List("snippet,id");
request.Q = "Bill Gates";
request.MaxResults = 50;
request.Type = "video";
var results = request.Execute();
foreach (var result in results.Items)
{
var captionListRequest = _youtube.Captions.List("id,snippet", result.Id.VideoId);
var captionListResponse = captionListRequest.Execute();
var russianCaptions =
captionListResponse.Items.FirstOrDefault(c => c.Snippet.Language.ToLower() == "ru");
if (russianCaptions != null)
{
var downloadRequest = _youtube.Captions.Download(russianCaptions.Id);
downloadRequest.Tfmt = CaptionsResource.DownloadRequest.TfmtEnum.Srt;
var ms = new MemoryStream();
downloadRequest.Download(ms);
}
}
Run Code Online (Sandbox Code Playgroud)
当 Download 方法被调用时,我收到一个奇怪的 Newtonsoft.JSON 异常,它说:
Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: T. Path …Run Code Online (Sandbox Code Playgroud)