【问题标题】:Is there was way to limit the number of queries from youtube api?有没有办法限制来自 youtube api 的查询数量?
【发布时间】:2019-09-28 18:23:11
【问题描述】:

我正在创建一个 tampermonkey 脚本,该脚本将从网页读取包含艺术家和歌曲标题的文本行,并将创建一个链接,该链接将打开一个新选项卡,指向从 youtube api 返回的第一个结果。我的问题是,当页面加载并说这个特定页面上有 5 首歌曲时,根据我的 youtube api 仪表板,我对该单个页面发出大约 1200 个 api 请求。我猜这是因为当我查询单个艺术家/歌曲时,它会在其服务器上获得所有结果。我尝试将我的 maxResults 限制为 1,但这无济于事。由于 youtube 减少了单个 API 获得的查询数量,我想知道是否有办法减少它发出的查询数量。实际上,我只需要 GET 请求的第一个结果,因为这很可能是正确的视频。

这是我的代码的 sn-p 解析 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;
}

【问题讨论】:

  • 尝试用maxResults=1替换maxResults:1
  • 刚刚对其进行了更改和测试,它仍在为 7 次搜索拉出大约一千次查询

标签: javascript jquery api youtube-data-api


【解决方案1】:

一定要使用encodeURIComponent 之类的东西来逃避artisttitle。可能是这些变量中的字符串破坏了您要处理的预期 URL。

更重要的是,如果您使用 Youtube API 沙箱进行测试,您可以自行检查。在我的情况下,我尝试了“Radiohead”和“Paranoid Android”,最多 3 个结果,并且运行良好。 See here

【讨论】:

  • 是的,所以我可以使用 chrome 开发人员工具检查它,我发现它只返回 json 中的 1 个项目,但它仍然显示它提交了大量查询。我只是将艺术家和歌曲都放在 encodeURIComponent 中,看起来它仍然在拉大量查询。
  • 好吧,也许问题在于您的代码多次触发该方法,而不仅仅是在您真正需要的时候。我做了一个本地测试,它只触发一次......
  • 我更改了我的代码,使其仅在单击链接时进行查询,而不是在页面加载时查询所有内容,现在我已降至 170。我认为 1 个 youtube 查询 = 1 个单位,但事实证明它是 100 个单位。谢谢
  • 显然与它有关。如果值得帮助,请投票给我;)
【解决方案2】:

我不确定我查看的是不是同一个 Google 文档,但它说 part 参数应该是 sn-p 用于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

返回:

{
 "items": [
  {
   "id": {
    "videoId": "YQHsXMglC9A"
   }
  }
 ]
}

【讨论】:

  • 谢谢,这真的很有帮助。我没有意识到 Search:list 使用 100 个单位。我重组了我的代码,使其仅在用户单击链接时进行查询,现在每个请求我得到 170 个查询,这要好得多!
猜你喜欢
  • 2015-08-11
  • 1970-01-01
  • 2013-06-13
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多