如何打造 BeatBuddy:一款分析你的 Spotify 数据的 Web 应用

news2024/12/26 22:03:41

           欢迎来到雲闪世界!我将解释我是如何构建 BeatBuddy 的,这是一款分析您在 Spotify 上收听内容的网络应用。受 Spotify Wrapped 的启发,它旨在解读您当前的心情并提供您可以根据该分析进行调整的建议。

如果你不想阅读所有内容,只想尝试一下,你可以在这里尝试:BeatBuddy。其余的,请继续阅读!

项目的诞生

我是一名数据分析师和音乐爱好者,我相信数据分析是了解我们生活的世界和我们个体的有效方法。

音乐尤其可以充当一面镜子,反映出你某一时刻的身份和情绪。你选择的音乐类型通常取决于你当前的活动和心情。例如,如果你正在锻炼,你可以选择一个充满活力的播放列表来激励自己。

另一方面,如果你正忙于学习或专注于处理一些数据,你可能想听听平静、安宁的音乐。我甚至听说有人听白噪音来集中注意力,这可以描述为你在高速公路上打开车窗时听到的声音。

音乐可以反映你的心情的另一个例子是派对。想象一下你和朋友们一起开派对,你必须选择音乐。如果是休闲晚餐,你可能想播放一些柔和的爵士乐或柔和的曲调。但如果你的目标是那种每个人都在家具上跳舞或用 80 年代的热门歌曲尽情醉醺醺地卡拉 OK 的派对,你会想要选择充满活力和适合跳舞的歌曲。我们稍后会回到这些概念。

事实上,你听的所有音乐和你做出的所有选择都可以揭示你个性和情绪状态的迷人方面。如今,人们倾向于对自己进行分析,这正在成为一种全球趋势!这种趋势被称为“量化自我”,人们使用分析来跟踪他们的活动,例如健身、睡眠和生产力,以做出明智的决定(或不做出明智的决定)。

别误会,作为一个数据迷,我喜欢所有这些东西,但有时它们会走得太远——比如人工智能连接牙刷。首先,我不需要带 Wi-Fi 天线的牙刷。其次,我不需要一个显示过去六周我刷牙情况变化的折线图。

好了,回到音乐行业。Spotify 是将用户数据收集变成酷炫事物的先驱之一,他们称之为 Spotify Wrapped。

图一:Spotify Wrapped 示例 | 图片来自作者

每年年底,Spotify 都会整理你听过的音乐,制作出 Spotify Wrapped,在社交媒体上广为流传。它的受欢迎程度在于它能够揭示你的个性和喜好,让你可以与朋友进行比较。

Spotify 如何收集和汇总年终总结数据这一概念一直让我着迷。我记得我问过自己:“他们是怎么做到的?”而这种好奇心正是这个项目的起点。

嗯,不完全是。说实话:分析 Spotify 数据的想法写在了一张名为“数据项目”的便条上 - 你知道,这种便条上充满了你可能永远不会开始或完成的想法。它在那里放了一年。

有一天,我再次看了看这份清单,对我的数据分析技能有了新的信心(这要感谢 ChatGPT 一年来的成长和改进),我决定挑选一项并开始这个项目。

起初,我只是想访问和分析我的 Spotify 数据,没有什么特别的目的。我只是好奇想知道我能用它做什么。

步骤 1:获取您的 Spotify 数据

开始这样的项目时,您要问自己的第一个问题是数据源在哪里以及有哪些数据可用。基本上,有两种方法可以获取数据:

  1. 在隐私设置中,您可以请求一份历史数据的副本,但需要 30 天才能送达——不太方便。
  2. 使用 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

未授权访问漏洞系列

环境 1.此漏洞需要靶场vulhub,可自行前往gethub下载 2.需要虚拟机或云服务器等linux系统,并在此系统安装docker和docker-compose提供环境支持 3.运行docker-compose指令为docker-compose up -d即可运行当前目录下的文件 Redis未授权访问漏洞 一、进…

流程挖掘,为光伏企业重塑确定的竞争力

2023年12月15日,2023中资光伏出海大会在江苏南京隆重举行。国内领先的流程挖掘服务商望繁信科技应邀出席大会,与来自海内外的重要领导、重磅嘉宾、行业大咖齐聚一堂,聚焦“数字化、全球化、本地化”,共同探讨中资光伏企业的出海机…

windows11 DNS手动配置过DNS,在恢复成自动获取后,无法自动获取到DNS,网卡里面DNS还是显示之前手动配置的DNS

windows11 DNS一开始手动配置过DNS,然后在恢复成自动获取后,网卡无法自动获取到DNS,并且网卡里面DNS显示还是之前手动配置的DNS。 系统版本:windows11 企业版、版:10.0.22621 版本 22621 解决办法: 注册表“HKEY_LO…

RHEL9网络设定及网络脚本

1. 添加一张网卡 2. 重写一个网卡配置文件 [rootlocalhost ~]# cd /etc/NetworkManager/system-connections/ [rootlocalhost system-connections]# ls ens160.nmconnection [rootlocalhost system-connections]# vim ens224.connection [rootlocalhost system-connections…

大模型应用(六)如何写好一个prompt,理论+实践

前言 设定是四个基本要素之一,没有一个好的prompt,就绝对不可能有一个好的agent。 如何写prompt的大部分是我粘的,实在是懒得写了。不感兴趣可以直接跳实战。 什么是prompt 大语言模型(LLM)的能力并不是被设计出来…

【数据结构与算法】迷宫求解------回溯法

回溯法 一.迷宫求解算法二.二维数组表示地图1.地图2.初始化地图3.地图的打印 三.进入迷宫四.栈的实现五.迷宫内探1.首先判断我们的入口2.入栈做标记3.开始探险4.出口判断5.能否下一步6.做标记7.不能下一步 六.运行结果 一.迷宫求解算法 当我们想要找到迷宫的出口,那我们在计算…

为什么网站要使用HTTPS访问

网站使用HTTPS访问的原因有很多,主要可以归纳为以下几个关键点: 1、数据安全性:HTTPS使用SSL/TLS协议对通信过程进行加密,确保信息在传输过程中不被窃取、篡改或冒充。对于涉及敏感信息(如个人身份、信用卡号等&#x…

AnyGPT: Unified Multimodal LLM with Discrete Sequence Modeling

发表时间:arXiv 2024年2月26日 论文链接:https://arxiv.org/pdf/2402.12226 作者单位: Fudan University Motivation: LLM 在理解和生成人类语言方面表现出非凡的能力。但是,LLM 的能力仅限于针对文本的处理。而现实…

JVM系列 | 对象的消亡2——HotSpot的设计细节

HotSpot 的细节实现 文章目录 HotSpot 的细节实现OopMap 与 根节点枚举根节点类型及说明HotSpot中的实现 OopMap 与 安全点安全点介绍如何保证程序在安全点上? 安全区域记忆集与卡表记忆集卡表 写屏障并发的可达性分析(与用户线程)并发可达性…

Spring boot框架指南

1. Spring Boot 概述 1.1 定义与起源 Spring Boot是一种基于Spring框架的开源框架,旨在简化Spring应用程序的创建和开发过程。它通过提供一系列默认配置和自动配置功能,减少了开发者在配置上的工作量,使得快速搭建生产级别的Spring应用程序…

OV SSL证书优势及获取渠道

OV证书,即组织验证型SSL证书,通过严格的组织审查流程,为网站提供数据传输加密、身份验证和信息完整性保护。 OV证书优势 1 高信任度 OV证书通过证书颁发机构(CA)对企业实名认证,包括企业名称、注册地址、…

万能门店小程序开发平台功能源码系统 带完整的安装代码包以及安装搭建教程

互联网技术的迅猛发展和用户对于便捷性需求的不断提高,小程序以其轻量、快捷、无需安装的特点,成为了众多商家和开发者关注的焦点。为满足广大商家对于门店线上化、智能化管理的需求,小编给大家分享一款“万能门店小程序开发平台功能源码系统…

kernel32.dll丢失?那么kernel32.dll如何修复?教你几种修复丢失kernel32.dll错误的方法

在使用电脑时你是否遇到过kernel32.dll丢失的情况,那么遇到这种情况应该如何解决呢?遇到kernel32.dll丢失就会导致电脑无法正常运行,应用程序也会无法正常使用,今天就教大家kernel32.dll丢失的解决办法。 几种解决kernel32.dll丢失…

破解USB设备通讯协议实现自定义软件控制的步骤与方法

在设备和计算机之间通过USB进行通讯的情况下,厂家提供的软件可以控制设备,但没有提供任何其他资料和支持,这种情况下,若希望自行开发软件来实现同样的功能,可以通过以下步骤破解通讯协议并开发自定义程序。 1. 捕获US…

干货!如何选择Ai大模型(LLMs)?

过去一年里,大型语言模型(LLMs)在人工智能界风起云涌,纷纷以突破性的进步拓展生成式人工智能的可能性。新模型层出不穷,令人目不暇接。 这些模型依靠日益增长的参数数量和庞大的数据集进行训练,显著提升了…

CentOS版本的Linux系统误删了自带的python和yum,恢复过程

文章借鉴于:Centos误删自带python2.7恢复方法_centos默认的被卸载了-CSDN博客 在进行别的操作的时候,一不小心将我的系统自带的Python2.7.5和yum删除掉了。 后来我尝试重新安装yum,但是安装yum必须要有python。 我又去重新安装了python&am…

前端面试:项目细节重难点问题分享(16)

💁💁更多详情:爱米的前端小笔记(csdn~xitujuejin~zhiHu~Baidu~小红shu)同步更新,等你来看!都是利用下班时间整理的,整理不易,大家多多👍💛➕&…

数据库|SQLServer数据库:数据的基本查询

哈喽,你好啊,我是雷工! 其实对于数据库的查询以前也应用过,只是使用时一般也是根据要实现的要求从网上搜索,能实现应用要求即可,现在根据视频学习,正好有这么一节,就听一遍&#xff…

ROS 2 话题:使用C++进行发布与订阅

ROS 2 话题:使用C进行发布与订阅 ROS 2提供了一种强大而灵活的通信机制,称为话题(Topics)。话题允许节点之间进行异步消息传递,从而实现松耦合的通信模式。在本文中,我们将介绍如何使用C编程语言在ROS 2中…

常见中间件漏洞大全及其修复方法(未完成)

一.Tomcat tomcat 是一个开源而且免费的 jsp 服务器,默认端口 : 8080 ,属于轻量级应用服务器。它可以实现 JavaWeb程序的装载,是配置 JSP ( Java Server Page )和 JAVA 系统必备的一款环境。 1.1 CVE-2017-12615 Tomc…