我正在尝试搜索Spotify以获取曲目的元数据。我正试图看看Spotify是否有来自YouTube视频的歌曲。这是我用来进行搜索的网址模板:
https://api.spotify.com/v1/search?q="MY SEARCH QUERY"&type=artist,track.
由于很难确定搜索查询的哪个部分是艺术家或曲目,因此我将这两个作为搜索查询的类型添加。
然而,当我收到一个像这样的标题的YouTube视频:“凯蒂佩里 - 我们如何做(官方视频)[LetraEspañol - 歌词英语]”并将其用作我的搜索词我得到0结果。
如果我手动“清理”它而我的搜索查询是:“Katy Perry - 我们如何做”,我得到了我正在寻找的结果。
https://api.spotify.com/v1/search?q=Katy%20Perry%20-%20This%20How%20We%20Do&type=artist,track
鉴于这个例子,第一个查询(没有任何清理)会产生Spotify API的结果吗?如果没有,在将搜索条件发送到Spotify搜索API之前,我需要对搜索条件做什么,以便它更有可能产生结果?
答案 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中完成此操作的粗略表示(为简单起见,我省略了引号和编码)。如果您共享您正在使用的语言,则某人可能会提供特定于您的编程语言的示例。