Von Leonardo - umactuell
spotifyatlas ist eine unkomplizierte Bibliothek, um den Interaktionsprozess mit der Web -API von Spotify zu vereinfachen. Unabhängig davon, ob Sie versuchen, auf Spotify -Funktionen wie Suchanfragen zuzugreifen oder Benutzeraufgaben wie die Änderung Ihrer Wiedergabelisten zu automatisieren, verfügt Spotifyatlas über Tools für den Job. Alles in einem sauberen, objektorientierten Stil.
Die meisten Funktionen des Pakets sind in der SpotifyAPI -Klasse enthalten, die nur mit den Anmeldeinformationen Ihrer Client -Anwendung initialisiert werden muss. Diese Codebasis wurde ursprünglich verwendet, um Trackdetails für Discord -Bots abzurufen. Die meisten Funktionen drehen sich ab sofort um Wiedergabelisten, Alben, Top -Tracks von Künstlern und so weiter.
Informationen zur Installation des Pakets mit pip finden Sie im Abschnitt Installation.
Der erste Schritt, um mit der Spotify -API zu interagieren, besteht darin, eine neue Anwendung auf der Seite Spotify for Developers zu registrieren. Sorge nicht: Dieser Vorgang ist für jeden Spotify -Benutzer (mit einem Konto) völlig kostenlos.
Machen Sie ein neues SpotifyAPI -Objekt mit den Anmeldeinformationen Ihrer App (Client -ID und Client -Geheimnis) initialisieren und initialisieren Sie damit ein neues Spotifyapi -Objekt:
from spotifyatlas import SpotifyAPI
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' ) Wenn Sie die Tracks und/oder Details von irgendetwas in Spotify abrufen möchten, wird die Universal get() -Methode Sie oft abgedeckt.
Versuchen Sie es, indem Sie den Freigabelink Ihrer Lieblings -Playlist einfügen. Es wird ein Playlist -Objekt zurückgeben. Die Playlist -Tracks befinden sich im tracks -Attribut und Sie können auch nach unten gezeigt auf Tracks zugreifen.
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 Ein Track enthält den name , artist , album und id eines Songs. Und wie Sie oben gesehen haben, formatiert print(track) einen Track als '<name> - <artist>' . Sie können den Inhalt Ihrer Wiedergabeliste wie folgt ordentlich auflisten:
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
# ... Ähnlich wie bei Playlist und Track finden Sie auch Album , Artist und User . Jeder von diesen ist durch Attribute miteinander verbunden . Zum Beispiel gibt track.artist.image_url die Bild -URL des Künstlers eines Tracks zurück, und verfolgt so track.album.tracks[0].artist.image_url . Ich gehe davon aus, dass Sie es nicht auf den zweiten Weg tun werden. Die erhöhte Menge an API -Anfragen fordert die Leistung aus.
Die folgenden Methoden bieten die gleiche Funktionalität wie get() , obwohl mit einem bestimmten Rückgabewert :
get_playlist() für öffentliche Wiedergabelisten.
get_track() für Tracks.
get_artist() für Künstler und ihre Top 10 Tracks.
get_album() für Alben.
get_user() für Benutzer.
Sie alle benötigen die url oder die ID des Elements als erstes Argument.
Nicht alles erfordert, dass Sie den Link des Gegenstandes zur Hand haben. Um Suchvorgänge auszuführen, können Sie die folgenden Methoden verwenden:
search() Suchen Sie normal mit der Option zum Angeben von Ergebnistypen. 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() Wenn Sie im Voraus genau wissen, wonach Sie suchen. Es ist im Wesentlichen das gleiche wie bei search() , gibt jedoch direkt das obere Ergebnis des angegebenen Typs zurück. from spotifyatlas import ResultType
result = spoti . im_feeling_lucky ( 'quevedo biza' , ResultType . TRACK )
print ( result )
# Quevedo: Bzrp Music Sessions, Vol. 52 - Bizarrapspotifyatlas.advanced_search() kann eine leistungsstärkere Suchabfrage erstellen, die der Benutzer dann an eine der Suchmethoden übergeben kann (oder sogar an den tatsächlichen Spotify -Client einfügen kann). 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 - JuanesDiese anderen Methoden erfordern die Einwilligung der Benutzer und führen somit dazu, dass die Browser -Öffnung für die Genehmigung Ihrer Anwendung im Namen des Benutzers zur Handlung ist:
get_me() für Details Ihres eigenen Profils.
get_private_playlist() für private Wiedergabelisten, die Sie besitzen.
create_playlist() , um eine neue leere Wiedergabeliste in Ihrer Bibliothek zu erstellen.
add_to_playlist() , um einer Wiedergabeliste eine Stapel Track -S -Strecke hinzuzufügen.
duplicate_playlist() , um eine Wiedergabeliste in Ihrer Bibliothek zu duplizieren.
clear_playlist() um den gesamten Inhalt einer Wiedergabeliste zu entfernen.
rearrange_playlist() neu ordnen, um die Position eines Trackbereichs zu ändern.
Die letzten fünf Funktionen sind auch als Methoden der Playlist -Klasse verfügbar. Dies ermöglicht einige praktische Verknüpfungen wie die, die in weiteren Beispielen zu sehen sind.
Hinweis: Die Genehmigung der Bewerbung auf der Spotify -Autorisierungsseite erfordert eine Umleitungsseite . In dieser Bibliothek wird vorübergehend eine lokale Seite unter http: // localhost: 8000 gehostet , wann immer erforderlich. Daher müssen Sie diese URL zu den zulässigen Umleitungs -URLs auf dem Dashboard Ihrer Anwendung auf der Website Spotify für Entwickler hinzufügen.
Die vollständige Liste der Parameter/Argumente einer Funktion finden Sie in ihrer Dokumentation.
Verwenden Sie zum Installieren von Spotifyatlas PIP im Terminal:
Fenster
pip install spotifyatlas
macOS / Linux
python3 -m pip install spotifyatlas
Für den neugierigen Benutzer finden Sie hier einige weitere Code -Beispiele auf meinem Kopf:
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 )) Ich habe spotifyatlas erstellt, um Musikliebhaber und Programmierer gleichermaßen zu ermutigen, um auf die Eleganz der Python -Automatisierung und des Skripts zu stützen. Wenn Sie auf dieses Paket gestoßen sind, während Sie nach einer Möglichkeit gesucht haben , die Benutzerfunktionen in Spotify über die Benutzeroberfläche hinaus zu erweitern , sind Sie am richtigen Ort.
Wenn Sie stattdessen nach einem API -Wrapper für die Verwendung in einer Python -Webanwendung suchen, ist dieses Paket möglicherweise nicht die richtige Wahl. Für den Anfang ist die Funktionalität der Bibliothek nicht asynchron (zumindest noch nicht). Vielleicht ist das für ein paar einfache Aufgaben in Ordnung. Und ab sofort ist die Art und Weise, wie ich den Autorisierungsfluss implementiert habe, nicht mit einer Web -App kompatibel (sie öffnet buchstäblich eine Lokalhost -Seite). Dies bedeutet, dass es nur mit Funktionen funktionieren würde, für die kein Benutzerauth erforderlich ist.