我需要多少钱来清理搜索查询?
我正在尝试搜索Spotify以获取曲目的元数据。 我试图查看Spotify是否有YouTube视频中的歌曲。 这是我用来进行搜索的网址模板:
https://api.spotify.com/v1/search?q="MY SEARCH QUERY"&type=artist,track.
由于很难确定搜索查询的哪一部分是艺术家或曲目,因此我将这两个添加为我的搜索查询的类型。
不过,当我看到一个标题为“Katy Perry - 我们如何操作(官方视频)[LetraEspañol - 歌词英语]”的YouTube视频时,将其用作我的搜索词,我得到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]类型=艺术家,轨道
如果我手动“清理”它,而我的搜索查询是:“凯蒂佩里 - 我们如何做”,我得到了我期待的结果。
https://api.spotify.com/v1/search?q=Katy%20Perry%20-%20This%20How%20We%20Do&type=artist,track
鉴于这个例子,有没有什么方法可以让第一个查询(就像没有任何清理)得到Spotify API的结果? 如果不是,那么在将它们发送到Spotify搜索API之前,我需要对搜索条件做些什么,以便更有机会获得结果?
您可能可以使用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, "");
我认为最简单的方法是从YouTube上获取一个干净的艺术家名称和曲目名称,而不是试图找出关于Spotify上的曲目如何命名的规则。
此信息显示在YouTube上的音乐视频中,视频下方的面板中(请参阅<div id="action-panel-details"></div>
)。
这些信息似乎可以通过Youtube API访问。 假设我们正在视频https://www.youtube.com/watch?v=VhUrCrR4yiw上搜索有关Spotify的Spotify信息:
1)首先,使用其id
(在本例中为VhUrCrR4yiw
)获取有关视频的信息并询问其topicDetails
。 您可以试试https://developers.google.com/youtube/v3/docs/videos/list。 在id
字段中输入以前的id
,在part
字段中输入topicDetails
。
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(这就是我们的工作方式)。 实际上,曲目本身包含有关艺术家的信息。
这是一个有希望帮助的建议。
YouTube上的大多数音乐视频都有以下命名惯例:ARTIST_NAME - SONG_NAME
例子:
凯蒂佩里 - 黑马(官方)ft。Juicy J
Iggy Azalea - Fancy(Explicit)ft。Charli 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 Web API搜索参考。
链接地址: http://www.djcxy.com/p/55649.html上一篇: how much do I need to clean the search query?
下一篇: How to get all the tracks of an artist with spotify api?