spotipy/examples/personalized_playlist.py
2025-01-18 15:21:51 +00:00

54 lines
1.7 KiB
Python

# Import the extra necessary libraries for this example
# These libraries are not included in the default packages
import pandas as pd
from sklearn.cluster import KMeans
import spotipy
from spotipy.oauth2 import SpotifyOAuth
# Set up Spotify credentials
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(
client_id="YOUR_APP_CLIENT_ID",
client_secret="YOUR_APP_CLIENT_SECRET",
redirect_uri="YOUR_APP_REDIRECT_URI",
scope="playlist-modify-private,user-library-read"))
# get the user's username
username = sp.me()['id']
# Get the user's liked tracks
saved_tracks = sp.current_user_saved_tracks(limit=50)['items']
# Extract audio features for liked tracks
track_ids = []
audio_features = []
for track in saved_tracks:
track_ids.append(track['track']['id'])
audio_features.append(sp.audio_features(track['track']['id'])[0])
# Create a DataFrame from the audio features
df = pd.DataFrame(audio_features)
# Perform clustering on some audio features
features = df[['danceability', 'energy', 'valence', 'acousticness']]
kmeans = KMeans(n_clusters=5, random_state=42, n_init=10)
df['cluster'] = kmeans.fit_predict(features)
# Select a representative track from each cluster
representative_tracks = []
for cluster in range(5):
cluster_tracks = df[df['cluster'] == cluster]
representative_track = cluster_tracks.iloc[0]['id']
representative_tracks.append(representative_track)
# Create a playlist with the representative tracks
playlist = sp.user_playlist_create(
user=username, name='Personalized Playlist', public=False)
sp.playlist_add_items(
playlist_id=playlist['id'], items=representative_tracks)
# Print the URL of the created playlist
print("Playlist created successfully. You can access it at:",
playlist['external_urls']['spotify'])