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

Posted

技术标签:

【中文标题】是否可以通过 Youtube 数据 API v3.0 获取时长(时间)视频【英文标题】:Is it possible to get the duration (time) video through Youtube data API v3.0 【发布时间】:2015-10-17 16:56:51 【问题描述】:

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

【问题讨论】:

请参考这个问题:***.com/questions/15596753/… Youtube API v3 , how to get video durations?的可能重复 【参考方案1】:

使用 javascript

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;
  //setting h, m, s
  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 || dContainsS) && s < 10? "0" + s: s;
  m = (dContainsH || dContainsM) && m < 10? "0" + m + ":" : m + ":";
  return d !== "0S" ? h + m + s : "LIVE"

console.log(converTime("PT6M7S"));

【讨论】:

【参考方案2】:

这是我在 .NET 和 C# 中的做法。 首先包括“contentDetails”部分

var searchListRequest = youtubeService.Videos.List("snippet,contentDetails");

第二次将持续时间转换为更易于编程管理的内容,如下所示:

TimeSpan YouTubeDuration = System.Xml.XmlConvert.ToTimeSpan(searchResult.ContentDetails.Duration);

希望对你有帮助

【讨论】:

你能解释一下吗?有 YoutubeService 的程序集文件是什么?【参考方案3】:

在进行搜索调用后,您必须调用 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代表Time Duration,4M是4分钟,13S是13秒。

详情请参考this问题

【讨论】:

以上是关于是否可以通过 Youtube 数据 API v3.0 获取时长(时间)视频的主要内容,如果未能解决你的问题,请参考以下文章

YouTube 数据 API V3 是不是适用于 YouTube 音乐?

如何使用 YouTube API V3 仅查询 360 视频

解析 youtube 数据 v3 api

带有 API v3 的 Youtube 视频标题没有 API 密钥?

YouTube API v3 检测是不是订阅了频道

YouTube 数据 API v3 评论列表