我正在尝试搜索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搜索应用编程接口之前,我需要对它们做什么,以便它有更大的机会产生结果?
这里有一个建议,希望能有所帮助。
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网络应用编程接口搜索参考。
我认为最简单的方法是从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(这就是我们的做法)。事实上,轨道本身包含了艺术家的信息。
您可能可以使用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。