是否可以通过Youtube数据API v3.0获取持续时间(时间)视频

时间:2015-07-27 13:20:42

标签: youtube-api youtube-data-api

是否可以获得持续时间 (时间)视频通过Youtube数据API v3.0。 如果是这样,怎么样?

3 个答案:

答案 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'))