gpt4 book ai didi

ios - 使用 Youtube API 下载字幕

转载 作者:行者123 更新时间:2023-11-29 01:07:24 26 4
gpt4 key购买 nike

我正在尝试使用 youtube api 下载 youtube 视频的字幕。但是,我不确定如何实现这一点。 google api 上的示例实现 youtube api page在 java、python 和 php 中有示例实现,但不是 swift。我怎样才能快速实现这个?谢谢。

我只实现了如何检索视频详细信息的一般 JSON。但是,根据 Youtube api,应该可以下载字幕。如果我无法下载它们,我该如何检索字幕?

    // Set up your URL
let youtubeApi = "https://www.googleapis.com/youtube/v3/videos?part=contentDetails%2C+snippet%2C+statistics&id=dNV7COWz8ME&key=AIzaSyCuBFAb9dJIhK3LH0d4f5yoq5skfDdIC4w"
let url = NSURL(string: youtubeApi)

// Create your request
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
do {
if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as? [String : AnyObject] {

print("Response from YouTube: \(jsonResult)")
}
}
catch {
print("json error: \(error)")
}

})

// Start the request
task.resume()

最佳答案

下载字幕需要三个步骤:

  • 获取字幕 ID

  • 获取字幕列表

  • 获取标题的数据

首先,使用此 URL 下载视频的字幕 ID字幕列表:

https://www.googleapis.com/youtube/v3/captions?part=snippet&videoId=xxx&key=yyy

并解析响应(我们将在我的示例中看到如何解析)。

然后,使用此 URL 获取字幕数据:

https://www.googleapis.com/youtube/v3/captions?id=xxx&tfmt=yyy

其中 xxx 是我们刚刚得到的 ID,yyy 是您想要的字幕格式,例如“srt”。

它将标题作为数据返回。

使用您的视频的示例:

let youtubeApi = "https://www.googleapis.com/youtube/v3/captions?part=snippet&videoId=dNV7COWz8ME&key=AIzaSyCuBFAb9dJIhK3LH0d4f5yoq5skfDdIC4w"
if let url = NSURL(string: youtubeApi) {
let task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, response, error) -> Void in
do {
if let data = data, jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String : AnyObject] {
if let items = jsonResult["items"] as? [[String : AnyObject]],
item = items.first,
id = item["id"] {
print(id)
if let captionsURL = NSURL(string: "https://www.googleapis.com/youtube/v3/captions?id=\(id)&tfmt=srt") {
NSURLSession.sharedSession().dataTaskWithURL(captionsURL, completionHandler: { (cdata, cresponse, cerror) in
if let captionsResponse = cresponse {
print(captionsResponse)
}
if let captionsData = cdata {
print(captionsData)
}
}).resume()
}
}
}
}
catch {
print("json error: \(error)")
}
})
task.resume()
}

另请注意,在本示例中,我仅从字幕列表 (items.first) 中提取第一个字幕,但某些视频可能会有更多字幕。

关于ios - 使用 Youtube API 下载字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36180192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com