有没有办法限制来自 youtube api 的查询数量?
Is there was way to limit the number of queries from youtube api?
我正在创建一个 tampermonkey 脚本,该脚本将从网页中读取一行包含艺术家和歌曲名称的文本,并创建一个 link 以打开一个新选项卡以返回第一个结果来自 youtube api。我的问题是,根据我的 youtube api 仪表板,当页面加载并说这个特定页面上有 5 首歌曲时,我正在为该单个页面发出大约 1200 api 请求。我猜这是因为当我查询单个 artist/song 时,它会在其服务器上获取所有结果。我尝试将 maxResults 限制为 1,但这无济于事。由于 youtube 减少了单个 API 获得的查询数量,我想知道是否有办法减少它进行的查询数量。实际上,我只需要 GET 请求的第一个结果,因为它很可能是正确的视频。
这是我的一段代码,它通过 json 数据进行解析:
function getLink(artist, song){
// API Key
var key = "MY_KEY";
// Setup url for api
var url = 'https://www.googleapis.com/youtube/v3/search?part=id&q=' + artist + "-" + song + '&maxResults=1&key=' + key;
// call api and get videoId
var xhReq = new XMLHttpRequest();
xhReq.open("GET", url, false);
xhReq.send(null);
var id = JSON.parse(xhReq.responseText);
return id.items[0].id.videoId;
}
一定要用 encodeURIComponent
之类的东西转义 artist
和 title
。可能是这些变量中的字符串破坏了您要处理的预期 URL。
另外,如果你用YoutubeAPI沙箱测试一下,你可以自己检查一下。在我的例子中,我尝试了 "Radiohead" 和 "Paranoid Android" 最多 3 个结果,并且工作正常。 See here
我不确定我是否正在查看相同的 Google 文档,但它说 part 参数应该是 snippet 用于 Search:list 呼叫。我知道不同的电话占用不同的配额。使用下面的查询,我只返回一首歌曲。它似乎只使用 Search:list 所需的正常 100 单位配额:
https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=1&q=Adele+Hello&fields=items(id(videoId))&key=API_key
它returns:
{
"items": [
{
"id": {
"videoId": "YQHsXMglC9A"
}
}
]
}
我正在创建一个 tampermonkey 脚本,该脚本将从网页中读取一行包含艺术家和歌曲名称的文本,并创建一个 link 以打开一个新选项卡以返回第一个结果来自 youtube api。我的问题是,根据我的 youtube api 仪表板,当页面加载并说这个特定页面上有 5 首歌曲时,我正在为该单个页面发出大约 1200 api 请求。我猜这是因为当我查询单个 artist/song 时,它会在其服务器上获取所有结果。我尝试将 maxResults 限制为 1,但这无济于事。由于 youtube 减少了单个 API 获得的查询数量,我想知道是否有办法减少它进行的查询数量。实际上,我只需要 GET 请求的第一个结果,因为它很可能是正确的视频。
这是我的一段代码,它通过 json 数据进行解析:
function getLink(artist, song){
// API Key
var key = "MY_KEY";
// Setup url for api
var url = 'https://www.googleapis.com/youtube/v3/search?part=id&q=' + artist + "-" + song + '&maxResults=1&key=' + key;
// call api and get videoId
var xhReq = new XMLHttpRequest();
xhReq.open("GET", url, false);
xhReq.send(null);
var id = JSON.parse(xhReq.responseText);
return id.items[0].id.videoId;
}
一定要用 encodeURIComponent
之类的东西转义 artist
和 title
。可能是这些变量中的字符串破坏了您要处理的预期 URL。
另外,如果你用YoutubeAPI沙箱测试一下,你可以自己检查一下。在我的例子中,我尝试了 "Radiohead" 和 "Paranoid Android" 最多 3 个结果,并且工作正常。 See here
我不确定我是否正在查看相同的 Google 文档,但它说 part 参数应该是 snippet 用于 Search:list 呼叫。我知道不同的电话占用不同的配额。使用下面的查询,我只返回一首歌曲。它似乎只使用 Search:list 所需的正常 100 单位配额:
https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=1&q=Adele+Hello&fields=items(id(videoId))&key=API_key
它returns:
{
"items": [
{
"id": {
"videoId": "YQHsXMglC9A"
}
}
]
}