Python+Spotify API打造个性化音乐分析工具
📅 2026/8/3 7:46:38
👁️ 次浏览
1. 项目概述用Python解锁你的Spotify音乐DNA去年冬天整理年度歌单时我发现Spotify的年度回顾功能虽然精美但数据维度实在太有限。作为常年日均听歌4小时的重度用户我决定用Python把自己的播放记录扒个底朝天。这个项目不需要复杂的爬虫技术Spotify官方API对个人开发者非常友好只需要30行核心代码就能提取包括歌曲特征、收听时段、艺人国籍等20维度的数据。2. 环境准备与API配置2.1 开发环境搭建推荐使用Python 3.8版本主要依赖库包括pip install spotipy pandas matplotlib seabornspotipySpotify官方Python SDK1.2MBpandas数据处理核心工具15MBmatplotlib/seaborn可视化黄金组合8MB注意国内安装可能遇到SSL证书问题建议先升级pip并配置清华镜像源2.2 Spotify开发者账号申请登录 Spotify开发者仪表盘创建新应用类型选Personal Use记录下Client ID和Client Secret在设置中添加回调地址http://localhost:8888/callback3. 核心数据抓取实现3.1 认证流程封装import spotipy from spotipy.oauth2 import SpotifyOAuth scope user-library-read user-top-read user-read-recently-played sp spotipy.Spotify(auth_managerSpotifyOAuth( client_idYOUR_CLIENT_ID, client_secretYOUR_CLIENT_SECRET, redirect_urihttp://localhost:8888/callback, scopescope))3.2 关键数据端点解析端点数据量示例用途/me/top/{type}50条分析长期偏好/me/player/recently-played50条短期行为分析audio-features/{id}单曲音乐特征工程3.3 完整数据采集示例def get_audio_features(track_ids): features [] for i in range(0, len(track_ids), 50): batch track_ids[i:i 50] features sp.audio_features(batch) return pd.DataFrame(features) top_tracks sp.current_user_top_tracks(limit50, time_rangelong_term) track_ids [item[id] for item in top_tracks[items]] audio_df get_audio_features(track_ids)4. 数据分析与可视化实战4.1 音乐特征雷达图import matplotlib.pyplot as plt features [danceability, energy, speechiness, acousticness, instrumentalness, liveness] plt.figure(figsize(10,6)) for i in range(3): values audio_df.iloc[i][features].tolist() values values[:1] # 闭合雷达图 angles [n / float(len(features)) * 2 * pi for n in range(len(features))] angles angles[:1] plt.polar(angles, values, linewidth1, linestylesolid, labelaudio_df.iloc[i][name])4.2 收听时间模式分析recent_plays sp.current_user_recently_played(limit50) play_hours [datetime.strptime(item[played_at], %Y-%m-%dT%H:%M:%S.%fZ).hour for item in recent_plays[items]] plt.hist(play_hours, bins24, edgecolorblack) plt.xticks(range(24)) plt.title(Daily Listening Pattern)5. 高级技巧与避坑指南5.1 速率限制应对策略默认限制30请求/秒建议添加延时time.sleep(0.5)between batches错误处理模板try: response sp.current_user_saved_tracks() except spotipy.exceptions.SpotifyException as e: if e.http_status 429: retry_after int(e.headers[Retry-After]) time.sleep(retry_after)5.2 数据持久化方案推荐使用SQLite存储历史数据import sqlite3 conn sqlite3.connect(spotify_data.db) audio_df.to_sql(audio_features, conn, if_existsappend, indexFalse)6. 创意分析方向拓展6.1 音乐口味变迁分析通过对比不同time_range参数获取的数据short_term4周medium_term6个月long_term数年6.2 艺人关系网络图使用NetworkX库构建import networkx as nx G nx.Graph() for artist in related_artists: G.add_edge(main_artist, artist[name], weightartist[popularity]) nx.draw(G, with_labelsTrue, node_size50)我在持续分析自己3年的收听数据后发现几个反直觉的结论工作日反而比周末听更多电子音乐雨天会显著提高古典乐播放量。这些洞察用现成的年度回顾永远无法获得。建议每月运行一次脚本建立时间序列数据集你会惊讶于自己音乐品味的微妙变化规律。
在 Windows WSL2 中安装 LLaMA-Factory 适用场景:Windows 10/11、WSL2 Ubuntu、NVIDIA 显卡、使用 uv 管理 Python 环境、通过 WebUI 运行 LLaMA-Factory。 本文所有 Linux 命令都在 WSL 的 Ubuntu 终端中执行;只有明确标注“Windows PowerShell”的命令…
📅 2026/8/3 7:46:38
很多人的数字生活,其实是碎片化的。工作软件在浏览器书签里,AI 工具在聊天记录里,个人项目放在不同平台,待办写在备忘录,天气和资讯又来自另外几个应用。信息入口太多,导致每次打开电脑都要重复寻找。个人网…
📅 2026/8/3 7:46:38
更多请点击:
https://codechina.net
第一章:AI搜索与关系图谱的融合范式演进 传统搜索引擎依赖关键词匹配与页面排名,而现代AI搜索正深度整合知识图谱、语义理解与多跳推理能力,形成“检索—理解—推理—生成”闭环。这一转变的核…
📅 2026/8/3 7:45:38
最近在技术社区和开发者圈子中,一个名为“Vibe Coding”的概念热度持续攀升。很多刚接触的朋友可能会感到困惑:这究竟是某种新的编程语言,还是一种神秘的开发框架?实际上,它更像是一种融合了现代AI工具、高效工作流和特…
📅 2026/8/3 8:34:03
1. 项目背景与痛点分析 用Python开发数据库软件听起来是个不错的想法——直到你真正开始动手。三周前我接了个小项目,需要为本地商户开发一套简易库存管理系统。想着Python语法简单、生态丰富,我毫不犹豫地选择了这个方案。结果现实给了我一记重拳&#…
📅 2026/8/3 8:34:03
1. 项目概述:从“盒子”到“乐器”的蜕变玩音响的朋友,或者自己动手做过箱子的同好,肯定都听过一句话:“音箱的灵魂在单元,但性格在箱体。” 这话一点不假。我们花大价钱买来的喇叭单元,性能参数再漂亮&…
📅 2026/8/3 8:34:03
64QAM系统设计12(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_
simulink仿真资料,通信原理课程设计用,模型齐全,包含星座图、眼图、误码率分析等,实验报告详细,调制解调均有说明&…
📅 2026/8/3 8:34:03
目录 10 Springboot的热部署
10.1 Springboot的热部署 10 Springboot的热部署
10.1 Springboot的热部署 热部署:修改 Java 代码、配置文件或模板后,无需手动重启项目,通过快捷键或自动触发实现快速更新,提升开发效率。想要实现热…
📅 2026/8/3 8:34:03
1. 项目概述:VBS实现IP获取与页面跳转在Windows系统管理中,我们经常需要快速获取本机IP地址并执行后续操作。使用VBScript脚本语言实现这一功能,既避免了依赖第三方工具,又能保持轻量高效。这个方案特别适合需要批量部署或自动化运…
📅 2026/8/3 8:33:02
PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…
📅 2026/8/3 0:00:19
前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…
📅 2026/8/3 0:00:19
完整指南:如何让2008-2017年老款Mac运行最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher
还在为手中的老款Mac无法升级到最新系统而烦…
📅 2026/8/3 0:00:19
1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…
📅 2026/8/3 1:24:09
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…
📅 2026/8/3 1:24:09
1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同ÿ…
📅 2026/8/3 1:24:09
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/3 1:24:08
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/3 1:24:08
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/3 1:24:08