gpt4 book ai didi

javascript - 为什么轨道名称中的点会混淆通过 Spotify Web API 进行的搜索?

转载 作者:行者123 更新时间:2023-12-02 22:24:16 24 4
gpt4 key购买 nike

例如,我们想要搜索轨道Sixx:A.M.生活是美丽的。为此,请转到 Spotify Console 。响应的total int 为零。没有找到任何内容。

现在,转到该网站。粘贴相同的文本 Sixx:A.M.进入搜索字段,美丽人生。结果不止一个。

有什么问题吗?

Description搜索请求

回应:

{
"tracks": {
"href": "https://api.spotify.com/v1/search?query=Sixx%3AA.M.+Life+Is+Beautiful&type=track&offset=0&limit=1",
"items": [],
"limit": 1,
"next": null,
"offset": 0,
"previous": null,
"total": 0
}
}

网站网址:

https://open.spotify.com/search/Sixx%3AA.M.%20Life%20Is%20Beautiful

更新

如果从字符串中删除点 - Sixx:AM Life Is Beautiful - Spotify 控制台会返回所需的轨道!但例如P.O.D. Find My Way - 点不会干扰,结果由它们给出。我不明白它是如何工作的...

最佳答案

因为query参数不是像网站那样简单的“搜索字符串”。是一个包含字段和运算符的字符串,正如您可以在 the documentation 中读到的那样。将用户输入直接作为查询参数传递可能会导致问题,因为用户可以在不知情的情况下编写过滤器或运算符。您应该:

  • 通知用户此事。用户将编写运算符等知道他在做什么。
  • 解析收到的字符串并创建适当的查询参数。

我猜 Spotify 不喜欢查询中的奇怪字符,如点等(例如与 Google 相同,但 Google 会过滤它们),所以我建议只解析字符串,删除点,转换所有非字母数字字符到空格并使所有字符串小写,这样就没有运算符(正如文档所说,运算符是大写的)。所以:

function cleanQuery(str) {
return encodeURIComponent(str.replace(/\./g, "").replace(/[^0-9a-z]/gi, " ").toLowerCase());
}

console.log("Clean \"Sixx:A.M. Life Is Beautiful\":", cleanQuery("Sixx:A.M. Life Is Beautiful"));

我已经使用返回的结果进行了查询并且它有效:enter image description here

请注意,这是一个快速测试。我注意到点的问题在于它们不是第一个单词。也许还有更多有问题的字符,例如破折号。这将是一个反复试验的事情,因为文档有点模糊(例如,没有记录点)。

关于javascript - 为什么轨道名称中的点会混淆通过 Spotify Web API 进行的搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59121593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com