Как отобразить продолжительность видео результатов поиска с помощью Youtube API v3? - PullRequest
0 голосов
/ 04 июля 2019

Я могу вернуть результаты поиска из YouTube API.

Как бы отобразить длительность результатов поиска? Я не вижу длительности нигде в данных JSON.

function ySearch(e) {
    let searchYt = searchTermYt.value;
    search = encodeURIComponent(searchYt);
    let urlYt = 'https://www.googleapis.com/youtube/v3/search/?part=snippet&type=video&key=' + apiYt + '&q=' + searchYt + '&maxResults=5';

    if (e.target.token) { 
        urlYt += '&pageToken='+e.target.token;
    }
    fetch(urlYt).then(function (response) {
        return response.json() 
    }).then(function (data) {
        // check for page token to enable or disable page buttons
        if(data.prevPageToken){ 
            btnPrev.token = data.prevPageToken;
            btnPrev.disabled = false;
        }else{
            btnPrev.token = false;
            btnPrev.disabled = true;
        }
        if(data.nextPageToken){ 
            btnNext.token = data.nextPageToken;
            btnNext.disabled = false;
        }else{
            btnNext.token = false;
            btnNext.disabled = true;
        }
        return data.items.map(function (x) {
            return {
                title: x.snippet.title,
                // use id in URL to watch video 
                id: x.id.videoId

            }
        })
    }).then(function (array) {
        renderData(array);
    }).catch(function (error) {
        console.log(error);
    })
}

1 Ответ

1 голос
/ 06 июля 2019

Результаты поиска не содержат длительности видео. Вам нужно взять идентификаторы videoID из результатов поиска и сделать еще один вызов Videos: список с использованием идентификаторов videoID и параметра детали 'contentDetails'.

Пример: https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=gVLsVj7BebE&key=API_KEY

вернется

{
 "kind": "youtube#videoListResponse",
 "etag": "\"Bdx4f4ps3xCOOo1WZ91nTLkRZ_c/CbYwR7FePSZfjlzY4mNeMODOwJA\"",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 1
 },
 "items": [
  {
   "kind": "youtube#video",
   "etag": "\"Bdx4f4ps3xCOOo1WZ91nTLkRZ_c/9xoE3Yy_gyWHNwLgpi4jyoRrmGY\"",
   "id": "gVLsVj7BebE",
   "contentDetails": {
    "duration": "PT4M2S",
    "dimension": "2d",
    "definition": "hd",
    "caption": "false",
    "licensedContent": false,
    "projection": "rectangular"
   }
  }
 ]
}
...