YouTube API любой параметр для части, кроме фрагмента не работает - PullRequest
0 голосов
/ 23 января 2019

Я использую API YouTube и делаю запрос API на основе поиска.

Это все работает. Вы можете увидеть это на детской площадке здесь .

в моем коде это выглядит так:

fetch(`https://www.googleapis.com/youtube/v3/search?part=snippet&q=${query}&key=${API_KEY}`)
   .then(res => {
     return res.json();
    }).then(res => {
       setResults(res.items);
    });
});

Я передаю snippet как part в URL. Это дает мне некоторые данные, но я хочу получить больше, например, продолжительность видео и т. Д. Похоже, что это может быть получено с помощью больше параметров для части .

Если я добавлю contentDetails, запрос API завершится неудачно. Кто-нибудь знает, как получить больше данных, кроме фрагмента?

1 Ответ

0 голосов
/ 24 января 2019

Насколько я знаю, вы должны сделать еще один вызов для получения таких деталей (например, duration, например) - но на этот раз вам понадобится videoId и вызовна videos.list API .

Итак, используя первый вызов, добавленный в вопросе (с незначительными изменениями) , вы получите этот URL:

Запрос № 1 - Поиск :

GET https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=5&q=lfc&fields=items(id%2FvideoId%2Csnippet%2Ftitle)%2CpageInfo&key={YOUR_API_KEY}

Здесь вы можете запрос теста № 1 .

Результаты первого запроса (запрос "search") :

{
 "pageInfo": {
  "totalResults": 1000000,
  "resultsPerPage": 5
 },
 "items": [
  {
   "snippet": {
    "title": "Liverpool FC"
   }
  },
  {
   "id": {
    "videoId": "a0IrBTg6zcI"
   },
   "snippet": {
    "title": "Bob Paisley: The Humble Genius | Liverpool's most successful manager in his own words"
   }
  },
  {
   "id": {
    "videoId": "sxMbgeBreJ0"
   },
   "snippet": {
    "title": "Inside Anfield: Liverpool 4-3 Crystal Palace | TUNNEL CAM from the Reds' dramatic win"
   }
  },
  {
   "id": {
    "videoId": "g4TknSKYG98"
   },
   "snippet": {
    "title": "1000 Premier League Goals at Anfield | Some of our favourite strikes"
   }
  },
  {
   "id": {
    "videoId": "pMYCN506lXk"
   },
   "snippet": {
    "title": "What Alex Oxlade-Chamberlain return REALLY means for Liverpool midfield? ● LFC News"
   }
  }
 ]
}

Используя первый элемент videoId a0IrBTg6zcI, создайте запрос кvideos.list API следующим образом.

Запрос № 2 - Видео :

GET https://www.googleapis.com/youtube/v3/videos?part=snippet%2C+contentDetails&id=a0IrBTg6zcI&fields=items(contentDetails%2Fduration%2Csnippet%2Ftitle%2Cstatistics%2Cstatus(embeddable%2CpublishAt))%2CpageInfo&key={YOUR_API_KEY}

Вы можете проверить запрос № 2здесь .

Результаты второго запроса (запрос "video") :

{
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 1
 },
 "items": [
  {
   "snippet": {
    "title": "Bob Paisley: The Humble Genius | Liverpool's most successful manager in his own words"
   },
   "contentDetails": {
    "duration": "PT1M47S"
   }
  }
 ]
}

Вы можете проверить значение "duration" вчасть "contentDetails".

Вы также можете попробовать функцию ( try-it )Единственная информация доступна в справочной документации по API данных YouTube (v3).

В приведенном выше связанном примере с параметрами для получения информации о видео с videoId a0IrBTg6zcI - то же, что и в этом ответе, но,этот запрос содержит больше данных, которые вам могут понадобиться.

...