我正在使用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请求失败。有谁知道除了片段之外如何获取更多数据?
答案 0 :(得分:2)
据我所知,您必须再次调用以获取此类详细信息(例如,像duration
)-但是这次,您需要{{1} },然后致电videos.list
API。
因此,使用您在问题中添加的第一个电话(带有字词修饰),您将获得以下URL:
请求#1-搜索:
videoId
第一个请求(“搜索”请求)的结果是:
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
第二个请求(“视频”请求)的结果是:
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"
}
}
]
}
的视频信息的参数-该答案中使用的参数相同,但是,此请求可能需要更多数据。