風街記

主にTech系雑記

Youtube API で動画を検索して再生時間も取得する方法

前ブログからの引き継ぎと加筆。

本題

検索と再生時間の取得を一発でしたかったけど、それはできない模様。

詳細は以下のリンク。

 

検索のAPIと動画の詳細情報を取得するAPIが異なるため、
最低でも検索+詳細取得の2回、APIを呼び出す必要がある。

以下、GASでのサンプルコード。

function myYoutubeDuration() {
  var url = 'https://www.googleapis.com/youtube/v3/search';
  var token = 'APIKey';

  url += '?key='+token;
  url += '&q=ppap';
  url += '&part=id';
  url += '&type=video';

  var json = '';
  var vid = [];

  json = UrlFetchApp.fetch(url);
  json = JSON.parse(json.getContentText());
  json.items.forEach(function(item) {
    vid.push(item.id.videoId);
  });

  url = 'https://www.googleapis.com/youtube/v3/videos';

  url += '?key='+token;
  url += '&part=snippet,contentDetails';
  url += '&id='+vid.join(',');

  json = UrlFetchApp.fetch(url);
  json = JSON.parse(json.getContentText());
  json.items.forEach(function(item) {
    Logger.log(item.snippet.title);
    Logger.log(item.id);
    Logger.log(item.contentDetails.duration);
  });
}