欢迎来到雲闪世界!我将解释我是如何构建 BeatBuddy 的,这是一款分析您在 Spotify 上收听内容的网络应用。受 Spotify Wrapped 的启发,它旨在解读您当前的心情并提供您可以根据该分析进行调整的建议。
如果你不想阅读所有内容,只想尝试一下,你可以在这里尝试:BeatBuddy。其余的,请继续阅读!
项目的诞生
我是一名数据分析师和音乐爱好者,我相信数据分析是了解我们生活的世界和我们个体的有效方法。
音乐尤其可以充当一面镜子,反映出你某一时刻的身份和情绪。你选择的音乐类型通常取决于你当前的活动和心情。例如,如果你正在锻炼,你可以选择一个充满活力的播放列表来激励自己。
另一方面,如果你正忙于学习或专注于处理一些数据,你可能想听听平静、安宁的音乐。我甚至听说有人听白噪音来集中注意力,这可以描述为你在高速公路上打开车窗时听到的声音。
音乐可以反映你的心情的另一个例子是派对。想象一下你和朋友们一起开派对,你必须选择音乐。如果是休闲晚餐,你可能想播放一些柔和的爵士乐或柔和的曲调。但如果你的目标是那种每个人都在家具上跳舞或用 80 年代的热门歌曲尽情醉醺醺地卡拉 OK 的派对,你会想要选择充满活力和适合跳舞的歌曲。我们稍后会回到这些概念。
事实上,你听的所有音乐和你做出的所有选择都可以揭示你个性和情绪状态的迷人方面。如今,人们倾向于对自己进行分析,这正在成为一种全球趋势!这种趋势被称为“量化自我”,人们使用分析来跟踪他们的活动,例如健身、睡眠和生产力,以做出明智的决定(或不做出明智的决定)。
别误会,作为一个数据迷,我喜欢所有这些东西,但有时它们会走得太远——比如人工智能连接牙刷。首先,我不需要带 Wi-Fi 天线的牙刷。其次,我不需要一个显示过去六周我刷牙情况变化的折线图。
好了,回到音乐行业。Spotify 是将用户数据收集变成酷炫事物的先驱之一,他们称之为 Spotify Wrapped。
图一:Spotify Wrapped 示例 | 图片来自作者
每年年底,Spotify 都会整理你听过的音乐,制作出 Spotify Wrapped,在社交媒体上广为流传。它的受欢迎程度在于它能够揭示你的个性和喜好,让你可以与朋友进行比较。
Spotify 如何收集和汇总年终总结数据这一概念一直让我着迷。我记得我问过自己:“他们是怎么做到的?”而这种好奇心正是这个项目的起点。
嗯,不完全是。说实话:分析 Spotify 数据的想法写在了一张名为“数据项目”的便条上 - 你知道,这种便条上充满了你可能永远不会开始或完成的想法。它在那里放了一年。
有一天,我再次看了看这份清单,对我的数据分析技能有了新的信心(这要感谢 ChatGPT 一年来的成长和改进),我决定挑选一项并开始这个项目。
起初,我只是想访问和分析我的 Spotify 数据,没有什么特别的目的。我只是好奇想知道我能用它做什么。
步骤 1:获取您的 Spotify 数据
开始这样的项目时,您要问自己的第一个问题是数据源在哪里以及有哪些数据可用。基本上,有两种方法可以获取数据:
- 在隐私设置中,您可以请求一份历史数据的副本,但需要 30 天才能送达——不太方便。
- 使用 Spotify 的 API,您可以根据需要检索自己的数据并使用不同的参数来调整 API 调用并检索各种信息。
显然,我选择了第二种选择。为此,您首先需要创建一个开发者项目来获取 API 密钥,然后就可以开始了。
API 响应示例
还记得我们讨论过某些曲目比其他曲目更适合跳舞吗?作为人类,我们很容易感觉到一首歌是否适合跳舞——这完全取决于你身体的感觉,对吧?但计算机如何确定这一点呢?
Spotify 使用自己的算法来分析其目录中的每首歌曲。对于每首歌曲,他们都会提供与之相关的功能列表。此分析的一个用途是创建播放列表并为您提供推荐。好消息是,他们的 API 通过 audio_features 端点提供对这些分析的访问,使您可以访问任何歌曲的所有功能。
例如,让我们分析一下著名歌曲“Macarena”的音频特征,我相信大家都知道这首歌。我不会详细介绍曲目的每个参数,但让我们专注于一个方面以更好地理解它是如何工作的——舞蹈性得分为 0.823。
图二:Macarena 的音频功能示例 | 图片来自作者
根据 Spotify 的文档,舞蹈性是根据音乐元素的组合来描述一首曲目是否适合跳舞,包括节奏、节奏稳定性、节拍强度和整体规律性。得分 0.0 表示不适合跳舞,得分 1.0 表示最适合跳舞。得分为 0.823(或 82.3%),很容易说这首歌非常适合跳舞。
三个时间性
在进一步介绍之前,我需要介绍 Spotify API 中的一个概念,即 time_range。这个有趣的参数允许您通过指定 time_range 来检索不同时间段的数据:
- short_term:过去 4 周的听力活动
- medium_term:过去 6 个月的收听活动
- long_term:你的整个聆听活动周期
让我们用一个例子来说明这一点:如果你想要获取过去 4 周的前 10 首曲目,你可以调用相应的端点并将 time_range 作为参数传递,如下所示:https://api.spotify.com/v1/me/top/artists ?time_range=short_term&limit=10
调用此函数可以得到上个月的前 10 位艺术家。
第 2 步:解释结果
有了所有这些信息,我的想法是创建一个数据产品,让用户了解他们正在听什么,并通过比较不同的时间点来检测他们的情绪变化。然后,这种分析可以显示我们生活中的变化如何反映在我们的音乐选择中。
例如,我最近又开始跑步了,这种习惯的改变影响了我的音乐偏好。我现在听的音乐比过去听的音乐节奏更快、更有活力。当然,这是我的理解,但有趣的是,我的身体活动的变化会如何影响我听的音乐。
这只是一个例子,因为每个人的音乐之旅都是独一无二的,可以根据个人经历和生活变化做出不同的解读。通过分析这些模式,我认为能够将我们的生活方式选择与我们喜欢听的音乐联系起来是非常酷的。
让数据洞察触手可及
我越深入这个项目,就越意识到,是的,我可以自己分析数据并得出某些结论,但我希望每个人都这样做。
对我来说,与非技术人员分享数据洞察并使其易于访问的最简单方法不是通过花哨的 BI 仪表板。我的想法是创建一种普遍可访问的东西,这促使我开发了一款任何人都可以使用的移动友好型 Web 应用程序。
要使用该应用程序,您只需要一个 Spotify 帐户,单击一个按钮将其连接到 BeatBuddy,就完成了!
图三:应用程序屏幕示例 | 图片由作者提供
测量音乐情感
让我们看看该应用的另一个功能:测量您正在听的音乐的快乐程度,这可以反映您当前的心情。该应用汇总了您最近最喜欢的曲目的数据,重点关注“价位”参数,该参数代表音乐的快乐程度,其中 1 表示音乐非常快乐。例如,如果您当前曲目的平均价位为 0.432,而您的历史平均值为 0.645,则可能表明您最近转向了更忧郁的音乐。
然而,这些分析应该谨慎对待,因为这些数字代表趋势,而不是绝对事实。有时,我们不应该总是试图在这些数字背后寻找原因。
例如,如果你在跟踪自己的步行速度,发现最近走路速度变快了,这并不一定意味着你更着急了——这可能是由于各种细微因素造成的,比如天气变化、新鞋,或者仅仅是潜意识的转变。有时变化的发生没有明确的原因,虽然可以测量这些变化,但它们并不总是需要直接的解释。
话虽如此,注意到你的音乐收听习惯发生重大变化可能会很有趣。它可以帮助你思考你的情绪状态或生活状况可能会如何影响你的音乐偏好。BeatBuddy 的这个方面提供了一个有趣的视角,但值得注意的是,这些解释只是我们情绪和体验复杂谜团中的一块拼图
步骤 3:做出数据驱动的决策
说实话,分析你的收听习惯是一回事,但你如何根据这种分析采取行动呢?归根结底,做出数据驱动的决策是数据分析的最终目标。这就是建议发挥作用的地方。
根据您选择的心情进行推荐
BeatBuddy 的一个有趣的功能是它能够根据您选择的心情和您喜欢的音乐提供音乐推荐。
例如,您可能意识到您正在听的音乐的流行度得分为 75%(相当高),并且您想找到适合您口味的隐藏精品。然后,您可以将“流行度”滑块调整到 25%,以创建一个平均流行度得分为 25% 的新播放列表。
图四:将受欢迎程度滑块调整至 25% | 图片来自作者
在后台,有一个 API 调用 Spotify 的算法,根据您选择的标准创建推荐。此调用会根据您的个人品味和您设置的心情参数生成定制的播放列表推荐。它会使用您最近播放的前 5 首曲目来根据您的选择微调 Spotify 的推荐算法。
图 V:API 端点说明 | 图片来自作者
对播放列表满意后,您可以将其直接保存到 Spotify 库中。每个播放列表都附带一个描述,详细说明您选择的参数,帮助您记住每个播放列表想要唤起的情绪。
图 VI:将播放列表保存到 Spotify | 图片由作者提供
最后的想法
开发一款分析 Spotify 数据的 Web 应用程序是一个充满挑战但收获颇丰的旅程。我走出了自己的舒适区,在多个领域获得了知识,包括 Web API、Cookie 管理、Web 安全、OAuth2、前端开发、移动优化和 SEO。下面是该应用程序的高级架构图:
图 VII:高级架构 | 图片来自作者
我最初的目标是启动一个小型数据项目来分析我的收听习惯。然而,它变成了一个为期三个月、充满学习和发现的项目。
在整个过程中,我意识到数据分析和网络开发有多么紧密的联系,尤其是在提供不仅实用而且用户友好且易于访问的解决方案方面。归根结底,软件开发本质上就是将数据从一个地方移动到另一个地方。
最后一点:我想创建一个干净且提供无缝用户体验的应用程序。这就是为什么 BeatBuddy 完全没有广告,不会向任何第三方出售或共享任何数据。我创建它的唯一目的是让用户能够更好地了解他们的音乐选择并发现新曲目。
感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)
订阅频道(https://t.me/awsgoogvps_Host)
TG交流群(t.me/awsgoogvpsHost)