└─ cd ../projects
Spotify Extended History

// case study · personal project · [●] live

Spotify Extended History

Интерактивный дашборд, который превращает сырую выгрузку Spotify Extended Streaming History за 2019–2026 в исследуемую карту: музыка, подкасты, жанры и привычки прослушивания.

pythonfastapipandasreactviterechartsspotify-api
130 957прослушиваний
8 274часов (≈345 суток)
2 596активных дней
12 642артиста
571жанр
2019–26диапазон
└─01

ИДЕЯ

Spotify по запросу отдаёт Extended Streaming History — сырые JSON-файлы с каждым прослушиванием за все годы. Раз в год показывают Wrapped и забывают. А хотелось копаться в собственной истории как угодно: что слушал в 2020-м в ночи, как мигрировали жанры, какие артисты были одержимостью месяц и пропали.

Так появился дашборд: грузит выгрузку, обогащает метаданными из Spotify Web API и превращает 130 тысяч строк в живые графики, тепловые карты и «машину времени» — не годовой отчёт, а инструмент для самокопания в музыкальном вкусе.

└─02

ВХОДНЫЕ ДАННЫЕ

// сырой экспорт → дашборд
data/history/ Streaming_History_*.json ~130 957 прослушиваний
enrichment.json · кэш жанры · фото · обложки Spotify Web API · enrich.py · идемпотентно
load merge
backend FastAPI + pandas loader.py → один DataFrame в память
analytics.py → агрегации по фильтру
REST fetch
frontend React + Vite Recharts · графики
модалки · global search
└─03

ЧТО ВНУТРИ

obzor

Топы артистов, треков, альбомов и подкастов + сводка музыка vs подкасты и часы по годам

genres

Облако из 571 жанра, «Music DNA» по топ-жанрам и стримграф эволюции жанров по годам

patterns

Тепловая карта прослушиваний день×час, доля скипов, shuffle, пиковый час и любимый день

discoveries

Движок открытий: новые артисты, кратковременные одержимости, забытые любимые

wrapped

Шаро-style итоговые карточки с AI-сгенерированными фонами (OpenAI)

search

Глобальный поиск + детальные модалки по артистам, жанрам и конкретным дням

└─04

СКРИНШОТЫ

// светлая тема · клик = полный размер ↗
spotify.devisfun.ru ⤢ развернуть
Обзор Обзор — ключевые цифры, музыка vs подкасты, часы по годам

└─ drill-down модалки // клик по артисту / жанру / дню открывает попап

└─05

СТЕК & АРХИТЕКТУРА

Разделённая архитектура: FastAPI-бэкенд как процессор данных (pandas-агрегации поверх загруженного в память DataFrame, REST-эндпоинты) и тонкий React/Vite-фронт, который рисует графики на Recharts и кэширует запросы.

├─ backend
Python FastAPI pandas
├─ frontend
React Vite Recharts
└─ интеграции
Spotify Web API OpenAI Last.fm Docker