当前位置: 首页 > 知识库问答 >
问题:

Spotify搜索API-清理搜索查询需要多少?

羊舌子瑜
2023-03-14

我正在尝试搜索Spotify中的曲目元数据。我想看看Spotify是否有一首来自YouTube视频的歌曲。这是我用于进行搜索的URL模板:

https://api.spotify.com/v1/search?q="MY SEARCH QUERY"&type=artist,track.

由于很难确定搜索查询的哪一部分是艺术家还是曲目,因此我将这两种类型添加为搜索查询的类型。

然而,当我得到一个YouTube的视频,标题是这样的:“凯蒂·佩里——我们是这样做的(官方视频)[·莱特拉·西班牙语——歌词英语”,并将其用作我的搜索词时,我得到了0个结果。

https://api.spotify.com/v1/search?q=Katy 佩里-这是我们如何做(官方视频)[Letra Español-歌词英文]

如果我手动“清理”它,而我的搜索查询是:“凯蒂·佩里——这就是我们该做的”,那么我就会得到我想要的结果。

https://api.spotify.com/v1/search?q=Katy 佩里-我们就是这样做的

给出这个例子,第一个查询(就像没有任何清理一样)是否会从Spotify应用编程接口产生结果?如果没有,在将搜索词发送到Spotify搜索应用编程接口之前,我需要对它们做什么,以便它有更大的机会产生结果?

共有3个答案

傅啸
2023-03-14

这里有一个建议,希望能有所帮助。

YouTube上的大多数音乐视频都有以下命名约定:艺人名称-歌曲名称

示例:
凯蒂·佩里-黑马(官方)英尺多汁J
伊吉·杜鹃花-花式(明确)英尺夏利XCX

另一方面,Spotify搜索使用以下约定(见参考):

q=SONG_NAME+artist:ARTIST_NAME&type=track

“清理过程”取决于您处理数据所使用的语言,只需“解析”YouTube标题,这样您就可以通过重新排列信息更好地构建正确的Spotify搜索查询。例如,在PHP中,它大致如下所示:

$youtube_title = "Katy Perry - Dark Horse (Official) ft. Juicy J";
$arr = explode (" - ",$youtube_title); // split title and artist
$spotify_search = "https://api.spotify.com/v1/search?q="+$arr[1]." artist:".$arr[0]."&type=track";

这是如何在PHP中完成这项工作的粗略描述(为了简单起见,我省略了引号和编码)。如果您共享正在使用的语言,可能会有人提供特定于您的编程语言的示例。

您可以查看Spotify网络应用编程接口搜索参考。

朱修德
2023-03-14

我认为最简单的方法是从YouTube获得一个干净的艺术家名字和曲目名称,而不是试图找出Spotify上曲目命名的规则。

此信息显示在YouTube的音乐视频中,在视频下方的面板中(参见

这些信息似乎可以通过Youtube API访问。假设我们正在搜索视频中有关曲目的Spotify信息https://www.youtube.com/watch?v=VhUrCrR4yiw :

1)首先,获取有关视频的信息,使用它的id(在本例中为VhUrCrR4yiw),并询问它的topic细节。你可以去https://developers.google.com/youtube/v3/docs/videos/list试试这个。在id字段中输入前一个id,在part字段中输入topic细节

2) 阅读项目的主题详细信息。主题ID

...
"topicDetails": {
    "topicIds": [
        "/m/03y82t6",
        "/m/0y87l_h"
    ],
...

3)使用它们查询Freebase数据库以获取有关主题的信息。为了快速测试,你可以使用他们的网站。从YouTubeAPI返回的主题指向http://www.freebase.com/m/03y82t6(凯蒂·佩里)和http://www.freebase.com/m/0y87l_h(这就是我们的做法)。事实上,轨道本身包含了艺术家的信息。

林国安
2023-03-14

您可能可以使用NOT操作符来缓解任何可能给您带来坏结果的情况。

但是,您必须检查搜索字符串,以便在正确的位置添加NOT操作符,因此您最好删除任何不是曲目“正常”部分的内容。

可以使用正则表达式(JS):

// evil search string
var search = "Katy Perry - This How We Do (Official Video) [Letra Español - Lyrics English]";

// good search string --> Katy Perry - This How We Do
var cleaned = search.replace(/\(.*?\)|\[.*?\]/g, "");
 类似资料:
  • 问题内容: 这有效: 的HTML htaccess 通过搜索表单: 结果:http : //example.com/search?q=querystring 所需结果:http://example.com/search/querystring htaccess有可能吗?还是需要从search.php内用PHP重定向? 实际效果示例:http : //twitter.com/search/hello

  • API流改变了吗? 我再也不能为搜索曲目或艺术家进行简单的公共API调用了? 此外,我在Spotify文档中看到,如果查询字符串中提供了market=from_token,则需要授权。否则,可选。

  • 我正在学习node,我正在尝试使用spotifyapi搜索并返回一个艺术家。页面加载了所有内容,但是当我尝试搜索时,我得到了这个错误 经过一番挖掘,我发现我出现这个错误的原因是: 在中,chunk正在返回 请求的路径(假定)是api.spotify.com/v1/search?q=sam

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • 我的任务是使用lucene在我们的产品表中搜索。我已经创建了一个索引,正在使用带有多个字段的QueryParser进行搜索,但结果不是我所需要的。我有一个存储为LM10的产品,但如果搜索词是LM 10,我希望能够找到它,但如果搜索词是Fred LM10或Fred LM 10,它也必须能够匹配。你知道我如何在Lucene做到这一点吗。 提前谢谢

  • 我有一个endpoint,我正在将它代理到ElasticSearchAPI中,以进行简单的用户搜索。 有关这些参数的一些详细信息如下 所有参数都是可选的 昵称可以作为全文搜索进行搜索(即'myUser'将返回'myUsername') 电子邮件必须完全匹配 名称可以搜索为每个令牌的全文搜索(即'john'将返回'John Smith') ElasticSearch调用应将参数集体视为AND'd。