Créez votre propre Spotify Wrapped personnalisé avec analyse complète de vos données d'écoute et génération automatique de vidéo !
- Aperçu
- Fonctionnalités
- Prérequis
- Installation
- Utilisation
- Structure du projet
- Exemples de résultats
- Problèmes courants
Ce projet vous permet de créer votre propre version de Spotify Wrapped avec :
- Analyse complète de vos données Spotify
- Enrichissement automatique via l'API Last.fm (genres, albums)
- Génération de vidéo professionnelle avec Manim
- Statistiques temporelles détaillées (heures, jours, mois préférés)
Une vidéo animée de 1-3 minutes contenant :
- 🏆 Top 5 chansons, artistes, albums, genres
- 📊 Statistiques temporelles (temps total, habitudes d'écoute)
- 📈 Graphiques mensuels et quotidiens
- 🎨 Design inspiré de Spotify
- ✅ Chargement automatique depuis Google Drive ou upload local
- ✅ Nettoyage intelligent (filtrage des skips < 15s)
- ✅ Détection des sons d'ambiance (pluie, ASMR, etc.)
- ✅ Calcul du nombre d'écoutes réelles
- ✅ Récupération automatique des genres via Last.fm
- ✅ Récupération automatique des albums via Last.fm
- ✅ Traitement parallèle (multi-threading) pour rapidité
- ✅ Mapping intelligent des genres (normalisation)
- ✅ Temps total d'écoute
- ✅ Moyenne quotidienne (heures/minutes)
- ✅ Écoutes par mois (graphique)
- ✅ Plages horaires préférées (matin/après-midi/soir)
- ✅ Heure de pointe
- ✅ Jour de la semaine préféré
- ✅ Animations fluides et professionnelles
- ✅ Design aux couleurs Spotify (#1DB954)
- ✅ Graphiques dynamiques (barres, camembert)
- ✅ Plusieurs qualités disponibles (low, medium, HD, 4K)
- Python 3.8+
- Google Colab (recommandé) ou environnement local
- Compte Last.fm (pour API gratuite)
Vous devez d'abord télécharger vos données Spotify :
- Allez sur Spotify Account Privacy
- Sélectionnez "Données de compte "
- Attendez 5-30 jours de recevoir vos données par email
- Extrayez les fichiers
StreamingHistory_music_*.json
- Clonez le repository
git clone https://github.com/lmmddb/Spotify-Wrapped-.git-
Ouvrez le notebook dans Colab
- Téléchargez
main_final.pydans Colab - Ou créez un nouveau notebook et copiez le code
- Téléchargez
-
Installez Manim (une seule fois)
# Cellule 1: Installation
!sudo apt update -qq
!sudo apt install libcairo2-dev ffmpeg texlive texlive-latex-extra texlive-fonts-extra texlive-latex-recommended texlive-science tipa libpango1.0-dev -qq
!pip install manim -qq
!pip install "ipython==7.34.0" -qq
# Redémarrer le kernel
import os
os.kill(os.getpid(), 9)# 1. Créer un environnement virtuel
python -m venv venv
source venv/bin/activate # Sur Windows: venv\Scripts\activate
# 2. Installer les dépendances
pip install pandas requests manim ipywidgets
# 3. Installer ffmpeg (selon votre OS)
# Ubuntu/Debian:
sudo apt install ffmpeg
# macOS:
brew install ffmpeg
# Windows: Téléchargez depuis https://ffmpeg.org/- Créez un compte sur Last.fm
- Récupérez votre API Key
- Remplacez dans le code :
LASTFM_API_KEY = 'VOTRE_CLE_ICI'# 1. Charger l'interface
main()
# 2. Charger vos fichiers Spotify via l'interface
# (Sélectionnez Google Drive ou Upload local)
# 3. Nettoyer les données
streaming_clean = clean_data(streaming)
streaming_clean = detect_and_remove_ambient(streaming_clean)
# 4. Enrichir avec genres & albums
songs_with_metadata = fetch_genres_and_albums(streaming_clean)
# 5. Générer les tops
tops = generate_tops(songs_with_metadata)
# 6. Calculer les stats temporelles
temporal_stats = calculate_temporal_stats(streaming_clean)
# 7. Afficher les résultats
display_results(tops)
display_temporal_stats(temporal_stats)
# 8. Sauvegarder pour Manim
json_file = save_results_with_temporal(tops, temporal_stats)# Cellule 1: Définir la classe Manim
from manim import *
import json
DATA_FILE = '/content/drive/MyDrive/Spotify/spotify_wrapped_data.json'
class SpotifyWrappedComplete(Scene):
# ... (copier le code complet)
# Cellule 2: Lancer la génération
%%manim -qm -v WARNING SpotifyWrappedComplete| Option | Qualité | Temps de rendu | Taille fichier |
|---|---|---|---|
-ql |
Low (480p) | ~30 sec | ~5 MB |
-qm |
Medium (720p) | ~2-3 min | ~20 MB |
-qh |
High (1080p) | ~5-7 min | ~50 MB |
-qk |
4K (2160p) | ~15-20 min | ~200 MB |
Recommandation : Utilisez -qm pour tester, puis -qh pour la version finale.
🎵 TOP 10 CHANSONS
═══════════════════════════════════════
1. Song Name - Artist Name (120 écoutes)
2. Another Song - Another Artist (98 écoutes)
...
📊 STATISTIQUES TEMPORELLES
═══════════════════════════════════════
🎵 TEMPS TOTAL : 487.5 heures
📅 PÉRIODE : 365 jours
⏱️ MOYENNE QUOTIDIENNE : 80.2 minutes
🏆 MOIS LE PLUS ACTIF : Juillet (52.3h)
☀️ MOMENT PRÉFÉRÉ : Afternoon (45.2%)
🕐 HEURE DE POINTE : 15h
📆 JOUR PRÉFÉRÉ : Samedi
{
"top_songs": [...],
"top_artists": [...],
"top_albums": [...],
"top_genres": [...],
"stats": {
"total_artists": 245,
"total_songs": 1523,
"top_genre": "Rap"
},
"temporal_stats": {
"total_hours": 487.5,
"avg_mins_per_day": 80.2,
"top_month": {"name": "Juillet", "hours": 52.3},
...
}
}Solution : Définissez la classe dans une cellule, puis exécutez %%manim dans une cellule séparée.
# Cellule 1
class SpotifyWrappedComplete(Scene):
# ... code ...
# Cellule 2
%%manim -qm -v WARNING SpotifyWrappedCompleteSolution : Vérifiez que vos fichiers suivent le format StreamingHistory_music_*.json
Solutions :
- Vérifiez votre clé API
- Attendez quelques minutes (rate limiting)
- Réduisez
TOP_N_ALBUMSde 500 à 200
Solution : Utilisez -ql pour tester rapidement, puis -qm ou -qh pour la version finale.
- Support Spotify API directe (sans téléchargement manuel)
- Plus de thèmes visuels (dark mode, néon, etc.)
- Export en différents formats (GIF, images statiques)
- Comparaison entre plusieurs années
- Interface web interactive
- Rate limit : 5 requêtes/seconde
- Genres : Parfois incomplets ou génériques
- Albums : Peuvent ne pas correspondre exactement
- Analyse : 5-15 minutes (selon nombre d'artistes)
- Vidéo : 2-20 minutes (selon qualité choisie)
- Format : JSON uniquement
- Mise à jour : Tous les trimestres chez Spotify
- Historique max : 1 an d'écoutes
- Spotify pour les données
- Last.fm pour l'API gratuite
- Manim Community pour la bibliothèque d'animation
- Inspiré par le Spotify Wrapped officiel
- BAH Elhadj
- CAMARA M'bemba
- DJAU Mamadou