使用WhoSampled在Spotify上自动查找音乐样本

有很多方法可以在Spotify上查找新音乐,这只是这家瑞典公司在音乐流用户体验方面处于领先地位的原因之一。 这些选项中最令人兴奋的是使用机器学习算法,实施推荐系统和协作过滤。 我发现他们缺少一些低调的成果:根据使用的样本推荐歌曲。 这是实现此目标的系列文章之一,从找到播放列表中的所有样本开始,然后以播放列表的形式立即将它们提供给您。

我喜欢嘻哈音乐和电子采样音乐,而且我一直想知道我最喜欢的歌曲片段的起源。 我经常发现,无论是来自爵士,灵魂,古典还是某些实验性的子类型,样本本身都是值得聆听的。 聆听样本是一种更好地欣赏您喜欢的制作人并更好地了解他们的风格影响的方式。 它还可以让您欣赏艺术家扭曲和切碎音频的技巧。 最后,没有什么比听一首新的流行歌曲和识别乐器的不同部分起源的感觉更令人满意的了!

当然,很难识别样本,所以感谢上帝,WhoSampled的出色人员。

WhoSampled是一个了不起的网站,它使用户可以在歌曲页面上发布他们已经标识的样本。 这使您可以简单地在站点上查找歌曲,并查看样本以及它们出现在歌曲中的时间。 样本种类繁多,包括鼓,人声和音效。 这些都存储在站点上并贴上标签,从而很容易迷失在歌曲之间的所有联系中。 这篇博客文章的目标是使用WhoSampled创建一个简短的程序来自动创建示例Spotify播放列表。 也就是说,我们的初始输入是一个Spotify播放列表,而程序的输出将是一个包含原始播放列表中所有样本的播放列表。 让我们开始吧。

该项目的所有代码都可以在我的github上找到。

首先,我们将需要使用Spotify API。 我们首先需要注册一个应用程序并注册一个API密钥,这完全不需要时间。 该API是RESTful,易于使用的,并且还具有一个漂亮的python库专门用于访问它。 Spotipy使身份验证变得容易,并拥有大量的预制方法,可以帮助我们快速入门。

call_api函数用于身份验证,并使用Spotify提供的客户端和机密返回令牌。 read_playlist使用Spotify URI标识播放列表(可以通过单击播放列表上的“共享”来找到)。 这也包括用户名,该函数创建一个字典,其中包含每首歌曲的曲目和艺术家名称。 现在,我们将转到WhoSampled并搜索所需的歌曲。

在对WhoSampled搜索栏进行了一些探索之后,我发现找到所需歌曲的最佳方法是通过曲目搜索。

尽管此查询返回一些样本,但返回的样本数不超过五个。 因此,我们将使用它来检索歌曲页面的链接,然后发出第二个请求,以使WhoSampled上的所有样本数据可用。 如果您不熟悉Python中的网络抓取,那么BeautifulSoup是任何项目的必备功能,在这里,我们将使用它来定位到歌曲的超链接。 我们将做出的第二个请求将找到列表元素

  • 并存储所包含的样本以供以后使用。 同样,如果您不清楚我的流程,那么所有这些都在github上。

    现在,我们已经完成了WhoSampled的网页HTML的游泳工作,我们已经有了要添加到新的Spotify播放列表中的示例。 最后,我们准备在Spotify上寻找爵士乐,怀旧乐和晦涩的罗马尼亚民歌的优美融合(手指交叉,您会惊讶于他们拥有的奇异作品)。

    此功能可找到我们找到的所有出色样本。 为了确保我们能找到正确的歌曲,我们会按曲目进行搜索并验证歌手是否匹配。 容易吧? 我们跟踪定位样本的成功率,以了解我们的工作方式。 现在我们有了ID,我们可以将它们全部添加到新的播放列表中。 传递到我们的get_spotify_ids和call_api函数中的’sp’是我们的Spotipy对象,该对象在我们的main函数中实例化,如下所示:

    我省去了一些中间功能,但是过程非常简单,所得到的工具为我节省了在寻找Spotify样本之前花时间在WhoSampled上查找我喜欢的每首歌曲的时间。 对于在WhoSampled和Spotify之间命名略有不同的歌曲,绝对可以改善跟踪和采样吸收。 另外,我觉得我可能希望将所有样本保留在同一播放列表中,并希望有一个播放列表描述来跟踪哪些样本属于每首歌曲。

    这是一种花费数小时的有趣方式,让我对使用Spotify API感到非常兴奋。 我真正感兴趣的是创建一个推荐系统,该系统会根据样本之间的相似性为我找到新的音乐。 即将推出更多内容!