是否可以获得持续时间 (时间)视频通过Youtube数据API v3.0。 如果是这样,怎么样?
答案 0 :(得分:2)
进行搜索调用后,您必须拨打Youtube Data API的视频资源。您可以在搜索中放置最多50个视频ID,因此您无需为每个元素调用它。
https://developers.google.com/youtube/v3/docs/videos/list
您想要设置part = contentDetails,因为持续时间就在那里。
例如以下电话:
https://www.googleapis.com/youtube/v3/videos?id=9bZkp7q19f0&part=contentDetails&key={YOUR_API_KEY}
给出了这个结果:
{
"kind": "youtube#videoListResponse",
"etag": "\"XlbeM5oNbUofJuiuGi6IkumnZR8/ny1S4th-ku477VARrY_U4tIqcTw\"",
"items": [
{
"id": "9bZkp7q19f0",
"kind": "youtube#video",
"etag": "\"XlbeM5oNbUofJuiuGi6IkumnZR8/HN8ILnw-DBXyCcTsc7JG0z51BGg\"",
"contentDetails": {
"duration": "PT4M13S",
"dimension": "2d",
"definition": "hd",
"caption": "false",
"licensedContent": true,
"regionRestriction": {
"blocked": [
"DE"
]
}
}
}
]
}
时间格式为ISO 8601字符串。 PT代表时间持续时间,4M是4分钟,13S是13秒。
有关详细信息,请参阅this问题
答案 1 :(得分:1)
以下是我从.NET和C#开始的方式 首先包括" contentDetails"部分
var searchListRequest = youtubeService.Videos.List("snippet,contentDetails");
其次将持续时间转换为更符合程序可管理的内容,如下所示:
TimeSpan YouTubeDuration = System.Xml.XmlConvert.ToTimeSpan(searchResult.ContentDetails.Duration);
我希望这很有用
答案 2 :(得分:0)
function converTime(d) {
//ignore the "PT" part
d = d.search(/PT/i) > -1? d.slice(2) : d;
let h, m, s;
//indexes of the letters h, m, s in the duration
let hIndex = d.search(/h/i),
mIndex = d.search(/m/i),
sIndex = d.search(/s/i);
//is h, m, s inside the duration
let dContainsH = hIndex > -1,
dContainsM = mIndex > -1,
dContainsS = sIndex > -1;
h = dContainsH? d.slice(0, hIndex) + ":" : "";
m = dContainsM? d.slice(dContainsH ? hIndex + 1 : 0, mIndex) : dContainsH? "0" : "0";
s = dContainsS? d.slice(dContainsM ? mIndex + 1 : hIndex + 1, sIndex) : "0";
//adding 0 before m or s
s = dContainsM && s < 10? "0" + s: s;
m = dContainsH && m < 10? "0" + m + ":" : m + ":";
return h + m + s;
}
alert(converTime('PT2M30S'))