paint-brush
Spotify Wrapped Hack : créez vos propres statistiques avant la sortie officiellepar@lukaskrimphove
10,553 lectures
10,553 lectures

Spotify Wrapped Hack : créez vos propres statistiques avant la sortie officielle

par Lukas Krimphove5m2023/11/27
Read on Terminal Reader

Trop long; Pour lire

C'est un moyen d'avoir un aperçu de vos statistiques Spotify avant la sortie officielle de Spotify Wrapped. Découvrez comment utiliser votre historique de diffusion en continu pour découvrir les chansons, les artistes et les albums que vous avez le plus écoutés.
featured image - Spotify Wrapped Hack : créez vos propres statistiques avant la sortie officielle
Lukas Krimphove HackerNoon profile picture
0-item

Introduction

Chaque année, les utilisateurs de Spotify attendent avec impatience la sortie de Spotify Wrapped, un bilan annuel personnalisé présentant leurs chansons, artistes et genres les plus écoutés. Et si je vous disais qu'il existe un moyen d'avoir un aperçu de vos statistiques Spotify avant la sortie officielle ?


Dans ce guide, je vais vous présenter un hack Spotify Wrapped qui vous permet de créer vos propres statistiques personnalisées à l'aide de vos données de streaming Spotify. De cette façon, vous n'aurez pas besoin d'attendre Spotify Wrapped et vous pourrez également créer des statistiques que Spotify ne vous montrera pas.

Conditions préalables

Semblable à l'un de mes projets précédents , nous utiliserons Jupyter Notebook pour celui-ci. C'est un excellent outil pour expérimenter et travailler avec des données.


Si vous n'avez pas encore installé Jupyter Notebook, suivez les instructions sur leur site officiel . Une fois installé, vous pouvez créer un nouveau bloc-notes Jupyter et vous préparer à plonger dans vos statistiques Spotify.

Collecte et nettoyage des données

Pour commencer, vous devrez demander vos données de streaming Spotify. Vous pouvez le faire ici (assurez-vous de demander « Historique de streaming étendu »). Il faudra un certain temps à Spotify pour vous envoyer vos données. Demander uniquement les « Données du compte » sera plus rapide et vous donnera également l'historique de streaming de l'année dernière. Cependant, c'est beaucoup moins détaillé et vous devrez adapter le code.


Une fois que vous avez les données, nous pouvons les importer. Vous obtiendrez plusieurs fichiers JSON. Chaque fichier se compose d'un tableau d'objets contenant des informations sur une chanson ou un épisode de podcast joué :

 { "ts": "2023-01-30T16:36:40Z", "username": "", "platform": "linux", "ms_played": 239538, "conn_country": "DE", "ip_addr_decrypted": "", "user_agent_decrypted": "", "master_metadata_track_name": "Wonderwall - Remastered", "master_metadata_album_artist_name": "Oasis", "master_metadata_album_album_name": "(What's The Story) Morning Glory? (Deluxe Remastered Edition)", "spotify_track_uri": "spotify:track:7ygpwy2qP3NbrxVkHvUhXY", "episode_name": null, "episode_show_name": null, "spotify_episode_uri": null, "reason_start": "remote", "reason_end": "remote", "shuffle": false, "skipped": false, "offline": false, "offline_timestamp": 0, "incognito_mode": false }

Cela vous permet non seulement de savoir quand et sur quel appareil vous avez écouté une chanson, mais vous donne également des informations telles que si et quand vous l'avez ignorée.


Nous allons simplement les fusionner tous dans une seule trame de données Pandas :

 path_to_json = 'my_spotify_data/' frames = [] for file_name in [file for file in os.listdir(path_to_json) if file.endswith('.json')]: frames.append(pd.read_json(path_to_json + file_name)) df = pd.concat(frames)


Ensuite, nous le nettoierons en supprimant les podcasts, en filtrant les courtes durées de lecture et en convertissant les horodatages dans un format plus lisible :

 # drop all rows containing podcasts df = df[df['spotify_track_uri'].notna()] # drop all songs which were playing less than 15 seconds df = df[df['ms_played'] > 15000] # convert ts from string to datetime df['ts'] = pd.to_datetime(df['ts'], utc=False) df['date'] = df['ts'].dt.date # drop all columns which are not needed columns_to_keep = [ 'ts', 'date', 'ms_played', 'platform', 'conn_country', 'master_metadata_track_name', 'master_metadata_album_artist_name', 'master_metadata_album_album_name', 'spotify_track_uri' ] df = df[columns_to_keep] df = df.sort_values(by=['ts']) songs_df = df.copy()

Analyser et visualiser vos statistiques Spotify

Meilleures chansons de tous les temps

Commençons par explorer vos chansons préférées de tous les temps. Nous pouvons facilement dévoiler nos meilleurs morceaux en fonction de votre historique de diffusion :

 df = songs_df.copy() df = df.groupby(['spotify_track_uri']).size().reset_index().rename(columns={0: 'count'}) df = df.sort_values(by=['count'], ascending=False).reset_index() df = df.merge(songs_df.drop_duplicates(subset='spotify_track_uri')) df = df[['master_metadata_track_name', 'master_metadata_album_artist_name', 'master_metadata_album_album_name', 'count']] df.head(20)

Meilleures chansons en 2023

Curieux de connaître les tendances musicales de cette année ? Nous pouvons utiliser cette fonction pour révéler les meilleures chansons de 2023 :

 def top_songs_in_year(year): df = songs_df.copy() df['year'] = df['ts'].dt.year df = df.loc[(df['year'] == year)] print(f"Time listened in {year}: {datetime.timedelta(milliseconds=int(df['ms_played'].sum()))}") df = df.groupby(['spotify_track_uri']).size().reset_index().rename(columns={0: 'count'}) df = df.sort_values(by=['count'], ascending=False).reset_index() df = df.merge(songs_df.drop_duplicates(subset='spotify_track_uri')) df = df[['master_metadata_track_name', 'master_metadata_album_artist_name', 'master_metadata_album_album_name', 'count']] return df.head(20) 

Mes meilleures chansons 2023

Interactivité avec les widgets

Cela fonctionne déjà très bien, mais pourquoi se contenter de cela ? Nous pouvons utiliser des widgets interactifs pour personnaliser les requêtes à l'aide d'éléments d'interface utilisateur. Cela nous permet de découvrir sans effort vos meilleures chansons dans une plage horaire spécifique :

 @interact def top_songs(date_range=date_range_slider): df = songs_df.copy() time_range_start = pd.Timestamp(date_range[0]) time_range_end = pd.Timestamp(date_range[1]) df = df.loc[(df['date'] >= time_range_start.date()) & (df['date'] <= time_range_end.date())] df = df.groupby(['spotify_track_uri']).size().reset_index().rename(columns={0: 'count'}) df = df.sort_values(by=['count'], ascending=False).reset_index() df = df.merge(songs_df.drop_duplicates(subset='spotify_track_uri')) df = df[['master_metadata_track_name', 'master_metadata_album_artist_name', 'master_metadata_album_album_name', 'count']] return df.head(20) 

Mes meilleures chansons des six derniers mois

Distribution temporelle et hebdomadaire

Maintenant que nous connaissons nos meilleures chansons, nos meilleurs artistes et nos meilleurs albums, nous pouvons aller un peu plus loin. Par exemple, en explorant quels jours de la semaine nous sommes les plus actifs sur Spotify :

 def plot_weekday_distribution(): df = songs_df.copy() df['year'] = df['ts'].dt.year df['weekday'] = df['ts'].dt.weekday df = df.groupby(['year', 'weekday']).size().reset_index(name='count') fig, ax = plt.subplots(figsize=(12, 8)) for year, data in df.groupby('year'): ax.plot(data['weekday'], data['count'], label=str(year)) weekdays_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] plt.xticks(range(7), weekdays_order) plt.title('Weekday Distribution of Played Tracks Over Years') plt.xlabel('Weekday') plt.ylabel('Number of Played Tracks') plt.legend(title='Year') plt.show() 

Ma distribution en semaine

Comment le faire vous-même

Prêt à plonger dans vos propres statistiques Spotify ? Consultez mon référentiel GitHub pour trouver tout le code, y compris encore plus de fonctions pour explorer vos statistiques d'écoute.

Conclusion

La création de vos statistiques Spotify avant la sortie officielle ajoute non seulement un élément de plaisir, mais donne également un aperçu de vos habitudes d'écoute uniques. Alors que nous attendons avec impatience Spotify Wrapped, pourquoi ne pas prendre une longueur d’avance dans votre aventure d’analyse musicale ?


Préparez-vous à plonger dans votre expérience Spotify Wrapped personnalisée !