youtube api片段以外的任何部分参数均不起作用

时间:2019-01-23 16:19:38

标签: javascript ecmascript-6 youtube youtube-api

我正在使用youtube api,并且正在基于搜索发出api请求。

一切正常。您可以在the playground here中看到它。

在我的代码中,它看起来像这样:

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传递到网址中。这给了我一些数据,但是我想获得更多信息,例如视频时长等。看起来more parameters to part可以检索到。

如果我添加contentDetails,则api请求失败。有谁知道除了片段之外如何获取更多数据?

1 个答案:

答案 0 :(得分:2)

据我所知,您必须再次调用以获取此类详细信息(例如,像duration-但是这次,您需要{{1} },然后致电videos.list API

因此,使用您在问题中添加的第一个电话(带有字词修饰),您将获得以下URL:

请求#1-搜索

videoId

您可以test request #1 here

第一个请求(“搜索”请求)的结果是:

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}

使用第一项{ "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 API的请求。

请求#2-视频

videos.list

您可以test the request #2 here

第二个请求(“视频”请求)的结果是:

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}

您可以在“ contentDetails”部分中检查“ duration”值。

您还可以尝试使用YouTube数据API(v3)参考文档中的(try-it)功能。

上面链接的try-it具有用于获取具有videoId { "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" } } ] } 的视频信息的参数-该答案中使用的参数相同,但是,此请求可能需要更多数据。