首页 > 解决方案 > 调用 YT 视频 API 时无法获取视频时长

问题描述

我调用 YT 搜索 API,然后获取每个视频结果的完整数据(视频 API)。

但是,我无法获得每个视频的持续时间。

我收到一个未定义的错误:

  var videoResultsFullData = YouTube.Videos.list('id,snippet', { id : searchResults.map(item => item.id.videoId)})
    var popularChannelIds = YouTube.Channels.list('id,snippet, statistics', {
         id: resultsParentChannelIds
    }).items.filter(ch => ch.statistics.subscriberCount > sh.getRange("D24").getValue() ).map(channel => channel.id);
   
    // .filter(video => popularChannelIds.includes(item.id.channelId));

    var videoPopularResultsFullData = 
    videoResultsFullData.getItems()
    .filter(video => popularChannelIds.includes(video.snippet.channelId));
// };


var range = 3;
for (var i in videoPopularResultsFullData) {
    var item = videoPopularResultsFullData[i];
    var temp = item.getContentDetails().duration;

在此处输入图像描述

在此处输入图像描述

标签: google-apps-scriptyoutubeyoutube-apiyoutube-data-api

解决方案


我认为在您的情况下,需要包含contentDetailsto part。那么下面的修改呢?

从:

var videoResultsFullData = YouTube.Videos.list('id,snippet', { id : searchResults.map(item => item.id.videoId)})

至:

var videoResultsFullData = YouTube.Videos.list('id,snippet,contentDetails', { id : searchResults.map(item => item.id.videoId)})

或者,您也可以将part其用作数组,如下所示。

var videoResultsFullData = YouTube.Videos.list(["id","snippet","contentDetails"], { id : searchResults.map(item => item.id.videoId)})

参考:


推荐阅读