Par Leonardo -
spotifyatlas est une bibliothèque simple destinée à simplifier le processus d'interaction avec l'API Web de Spotify . Que vous essayiez d'accéder à des fonctionnalités Spotify par programme tels que les requêtes de recherche ou d'automatiser les tâches utilisateur comme la modification de vos listes de lecture , SpotifyAtlas a des outils pour le travail. Tout dans un style propre et orienté objet.
La plupart des fonctionnalités du package sont incluses dans la classe SpotifyAPI , qui ne doit être initialisée qu'avec les informations d'identification de votre application client. Cette base de code a été à l'origine utilisée pour récupérer les détails de la piste pour Discord Bots , de sorte que la plupart des fonctions, pour l'instant, tournent autour des listes de lecture, des albums, des pistes d'artistes et de même.
Reportez-vous à la section d'installation pour plus d'informations sur la façon d'installer le package avec pip .
La première étape pour interagir avec l'API Spotify consiste à enregistrer une nouvelle application dans la page Spotify pour les développeurs . Ne vous inquiétez pas: ce processus est entièrement gratuit pour tout utilisateur de Spotify (avec un compte).
Avec cela à l'écart, allez-y et initialisez un nouvel objet SpotifyAPI avec les informations d'identification de votre application (ID client et secret client):
from spotifyatlas import SpotifyAPI
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' ) Si vous souhaitez récupérer les pistes et / ou les détails de quoi que ce soit dans Spotify, la méthode Universal get() vous fera couvert plusieurs fois.
Essayez-le en collant le lien Share de votre liste de lecture préférée. Il renverra un objet Playlist . Les pistes de playlist se trouvent dans l'attribut tracks , et vous pouvez également accéder à des pistes par index , comme indiqué ci-dessous.
from spotifyatlas import SpotifyAPI
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' )
playlist = spoti . get ( 'https://open.spotify.com/playlist/6xTnvRqIKptVfgcT8gN4Bb' )
print ( playlist . tracks )
# [<Track name='Goliath' artist='The Mars Volta' id='3bi3Ycf0ZlRHvSg0IxlMwM'>, ... ]
first_track = playlist [ 0 ] # the same as playlist.tracks[0]
print ( first_track )
# Goliath - The Mars Volta Un Track contient le name , artist , album et id d'une chanson. Et, comme vous l'avez vu ci-dessus, print(track) formara une piste comme '<name> - <artist>' . Vous pouvez clairement énumérer le contenu de votre liste de lecture comme ceci:
for i , track in enumerate ( playlist , 1 ):
print ( i , '-' , track )
# 1 - Goliath - The Mars Volta
# 2 - Juicy - 2005 Remaster - The Notorious B.I.G.
# 3 - O Peso da Cruz - Supercombo
# 4 - Count The People (feat. Jessie Reyez & T-Pain) - Jacob Collier
# 5 - Touch - Shura
# ... Semblable à Playlist et Track , vous pouvez également trouver des structures Album , Artist et User . Chacun d'entre eux est connecté les uns aux autres par des attributs . Par exemple, track.artist.image_url renverra l'URL de l'image de l'artiste d'une piste, tout comme track.album.tracks[0].artist.image_url . Je suppose avec confiance que vous ne le ferez pas la deuxième façon. L'augmentation du montant des demandes d'API aura des ravages sur les performances.
Les méthodes suivantes offrent les mêmes fonctionnalités que get() , bien qu'avec une valeur de retour spécifique :
get_playlist() pour les listes de lecture publiques.
get_track() pour les pistes.
get_artist() pour les artistes et leurs 10 meilleurs morceaux.
get_album() pour les albums.
get_user() pour les utilisateurs.
Ils nécessitent tous l' url ou l'ID de l'élément comme le premier argument.
Tout ne vous demande pas d'avoir le lien de l'article à portée de main. Pour effectuer des recherches , vous pouvez utiliser les méthodes suivantes:
search() pour rechercher normalement, avec la possibilité de spécifier les types de résultats. result = spoti . search ( 'susanne sundfor' )
top_artist_result = result . artists [ 0 ]
print ( top_artist_result . name )
# Susanne Sundfør
result = spoti . search ( 'ok human' )
top_album_result = result . albums [ 0 ]
print ( top_album_result . tracks )
# [<Track name='All My Favorite Songs' artist='Weezer' id='6zVhXpiYbJhLJWmLGV9k1r'>, ... ]im_feeling_lucky() Si vous savez à l'avance exactement ce que vous recherchez. Il est essentiellement le même que search() mais renvoie directement le résultat supérieur du type spécifié. from spotifyatlas import ResultType
result = spoti . im_feeling_lucky ( 'quevedo biza' , ResultType . TRACK )
print ( result )
# Quevedo: Bzrp Music Sessions, Vol. 52 - Bizarrapspotifyatlas.advanced_search() peut générer une requête de recherche plus puissante que l'utilisateur peut ensuite transmettre à l'une des méthodes de recherche (ou même coller à son client Spotify réel). from spotifyatlas import ResultType , Genre , advanced_search
overkill_query = advanced_search (
'juanes' ,
album = 'metallica' ,
year = 2021 ,
genre = Genre . ROCK
)
result = spoti . im_feeling_lucky ( overkill_query , ResultType . TRACK )
print ( result )
# Enter Sandman - JuanesCes autres méthodes nécessitent un consentement de l'utilisateur et entraîneront ainsi l'ouverture du navigateur pour l'autorisation de votre application pour agir au nom de l'utilisateur:
get_me() pour plus de détails sur votre propre profil.
get_private_playlist() pour les listes de lecture privées que vous possédez.
create_playlist() pour créer une nouvelle liste de lecture vide dans votre bibliothèque.
add_to_playlist() pour ajouter un lot de Track S à une liste de lecture.
duplicate_playlist() pour dupliquer une liste de lecture dans votre bibliothèque.
clear_playlist() pour supprimer tout le contenu d'une playlist.
rearrange_playlist() pour modifier la position d'une gamme de pistes.
Les cinq dernières fonctions sont également disponibles sous forme de méthodes de la classe Playlist . Cela permet des raccourcis pratiques comme ceux observés dans d'autres exemples.
Remarque: L'autorisation de l'application dans la page d'autorisation Spotify nécessite une page de redirection pour aller. Cette bibliothèque hébergera temporairement une page locale sur http: // localhost: 8000 chaque fois que nécessaire. Ainsi, vous devrez ajouter cette URL aux URL de redirection autorisée sur le tableau de bord de votre application dans le site Spotify for Developers .
La liste complète des paramètres / arguments d'une fonction se trouve dans sa documentation.
Pour installer SpotifyAtlas, utilisez PIP dans le terminal:
Fenêtre
pip install spotifyatlas
macOS / Linux
python3 -m pip install spotifyatlas
Pour l'utilisateur curieux, voici quelques exemples de code supplémentaires en haut de ma tête:
from spotifyatlas import SpotifyAPI
def artist_sort_key ( track ):
return track . artist . name . lower ()
# If you want to hierarchically sort by artist, AND album,
# AND track, use this:
# return (
# track.artist.name.lower(),
# track.album.name.lower(),
# track.name.lower())
MY_PLAYLIST = '<my-playlist-link>'
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' )
playlist = spoti . get_playlist ( MY_PLAYLIST )
tracks = playlist . tracks
tracks . sort ( key = artist_sort_key )
# make_copy makes a backup of the playlist in your library
# before removing its contents.
playlist . clear ( make_copy = True )
playlist . add ( tracks ) from spotifyatlas import SpotifyAPI
MY_PLAYLIST = '<my-playlist-link>'
MY_FRIENDS_PLAYLIST = '<my-friends-playlist-link>'
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' )
playlist1 = spoti . get ( MY_PLAYLIST )
playlist2 = spoti . get ( MY_FRIENDS_PLAYLIST )
# Set theory!!!
common_tracks = set ( playlist1 ). intersection ( set ( playlist2 ))
for i , track in enumerate ( common_tracks , 1 ):
print ( i , '-' , track )
blend = spoti . create_playlist (
name = f' { playlist1 . owner . name } + { playlist2 . owner . name } ' ,
description = 'I am a blend, I swear' )
blend . add ( list ( common_tracks )) J'ai créé spotifyatlas pour encourager les mélomanes et les programmeurs, à tirer parti de l'élégance de l'automatisation et des scripts Python. Si vous êtes tombé sur ce package tout en recherchant un moyen d' étendre les capacités utilisateur dans Spotify au-delà de l'interface utilisateur, vous êtes au bon endroit.
Si à la place, vous recherchez un wrapper API pour une utilisation dans une application Web Python, ce package n'est peut-être pas le bon choix. Pour commencer, la fonctionnalité de la bibliothèque n'est pas asynchrone (pas encore, du moins). C'est peut-être bien pour quelques tâches simples, cependant. Et aussi, à partir de maintenant, la façon dont j'ai implémenté le flux d'autorisation n'est pas compatible avec une application Web (il ouvre littéralement une page localhost). Cela signifie que cela ne fonctionnerait qu'avec des fonctions qui ne nécessitent pas d'automobile utilisateur.