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

时间:2014-11-21 15:11:11

标签: search spotify

我正在尝试搜索Spotify以获取曲目的元数据。我正试图看看Spotify是否有来自YouTube视频的歌曲。这是我用来进行搜索的网址模板:

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

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

然而,当我收到一个像这样的标题的YouTube视频:“凯蒂佩里 - 我们如何做(官方视频)[LetraEspañol - 歌词英语]”并将其用作我的搜索词我得到0结果。

https://api.spotify.com/v1/search?q=Katy%20Perry%20-%20This%20How%20We%20Do%20(Official%20Video)%20[Letra%20Espa%C3%B1ol%20-%20Lyrics%20English]&type=artist,track

如果我手动“清理”它而我的搜索查询是:“Katy Perry - 我们如何做”,我得到了我正在寻找的结果。

https://api.spotify.com/v1/search?q=Katy%20Perry%20-%20This%20How%20We%20Do&type=artist,track

鉴于这个例子,第一个查询(没有任何清理)会产生Spotify API的结果吗?如果没有,在将搜索条件发送到Spotify搜索API之前,我需要对搜索条件做什么,以便它更有可能产生结果?

3 个答案:

答案 0 :(得分:0)

您可以使用NOT运算符来减轻可能会给您带来不良后果的任何内容。

但是,您必须检查搜索字符串,以便将NOT运算符添加到正确的位置,这样您就可以删除任何不正常的内容和"正常& #34;轨道的一部分。

可以使用正则表达式(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, "");

答案 1 :(得分:0)

我认为最简单的方法是从Youtube获取干净的艺术家姓名和曲目名称,而不是试图找出有关如何在Spotify上命名曲目的规则。

此信息显示在Youtube上的音乐视频中,位于视频下方的面板中(请参阅<div id="action-panel-details"></div>)。

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

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

2)阅读项目topicDetails.topicIds

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

3)使用它们查询Freebase数据库以获取有关主题的信息。要快速测试,您可以使用他们的网站。从Youtube API返回的主题指向http://www.freebase.com/m/03y82t6(Katy Perry)和http://www.freebase.com/m/0y87l_h(这是我们如何做)。实际上,曲目本身包含有关艺术家的信息。

答案 2 :(得分:0)

这是一个希望有所帮助的建议。

YouTube上的大多数音乐视频都有以下命名惯例: ARTIST_NAME - SONG_NAME

<强>示例:
Katy Perry - 黑马(官方)ft.Juicy J
Iggy Azalea - Fancy(Explicit)ft.Charli XCX

另一方面,Spotify搜索使用以下约定(see reference):

q=SONG_NAME+artist:ARTIST_NAME&type=track

&#34;清洁过程&#34;取决于您使用什么语言来处理您的数据,并且只需要解析&#34;解析&#34; 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 Web API Search Reference