spotipy - spotify mit python abspiele

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PhysicPat
User
Beiträge: 5
Registriert: Montag 28. Mai 2018, 20:41

Hallo,

ich würde gerne mit Python Musik von Spotify abspielen. Es gab mal das package pyspotify, jedoch hatte spotify selbst die jeweilge Web API dafür eingestellt. Jetzt bin ich auf Spotipy gestoßen, blicke da jedoch nicht ganz durch.

Könnte mir jemand helfen es zu verstehen bzw eine gute Einleitung dafür zeigen?

Selbst dieses kleine Programm gibt mit den http-error 401, da ich keine Berechtigung dafür habe.

Code: Alles auswählen

import spotipy
import sys
import spotipy.util as util
#util.prompt_for_user_token("mein spotify Benutzername","Mein Spotify Passwort",client_id='your-app-redirect-url',client_secret='your-app-redirect-url',redirect_uri='your-app-redirect-url')
sp = spotipy.Spotify()
sp.trace = True

#results = sp.search(q='artist:Eminem', type='artist')
results = sp.artist("Eminem")
print(results)
Ich hatte gelesen, dass die in dem Programm eingegebenen Befehle keine Verifizierung benötigen würde. Jedoch klappt es nicht wie gewollt. :roll:

Gruß
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Bist du dir denn sicher, dass du für `artist()` keine Authentifizierung benötigst? Aus der Doku lese ich jetzt zunächst einmal nur, dass `search()` keine Authentifizierung benötigt. Was spricht dagegen sich gleich einen Token zu generieren?
When we say computer, we mean the electronic computer.
PhysicPat
User
Beiträge: 5
Registriert: Montag 28. Mai 2018, 20:41

Also ich habe mir einen token generiert. Ich schaffe es mittlerweile auch einen gesuchten Track im Browser auf spotify zu öffnen. Mein jetziges Problem besteht aber darin, dass die Seite geöffnet wird aber der Track nicht abgespielt wird sondern auf "pause" gestartet wird.
Besteht die Möglichkeit zB aus dem skript einen befehl zu übergeben, dass "leertaste" betätigt wird sodass in dem webbrowser der "Play"-Befehl übergeben wird.

Hier ist mein Code:

Code: Alles auswählen

import spotipy
import spotipy.util as util
import webbrowser
from os import system
import time

token = util.oauth2.SpotifyClientCredentials(client_id="meine ID",client_secret="mein secret")

cache_token = token.get_access_token()
spotify = spotipy.Spotify(cache_token)

music = "Lose yourself"     # Diesen track mpchte ich abspielen

results1 = spotify.search(q='track:'+ music, type='track', limit=1)
test = results1["tracks"]["items"][0]["album"]["external_urls"]["spotify"]    #gebe mir die URL des Album auf dem der Track ist
test2 =results1["tracks"]["items"][0]["external_urls"]["spotify"]    # gebe mir die URL des Tracks
print(test)  #Ich betrachte die URL von test
print(test2)    #Ich betrachte die URL von test2
# die beiden print befehle habe ich gemacht um die URLs persönlich zu vergleichen 
webbrowser.open(test2, new=1) # hiermit öffne ich die URL des Tracks, was mir dann den Track aus dem zughörigen Album öffnet aber leide rnicht abspielt
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Lese dich dazu entsprechend ein: https://developer.spotify.com/documenta ... -playback/

Du musst einen PUT-Request auf die API via webbrowser abfeuern. Die Spotipy API ist erstmal zu Informationszwecken gedacht, daher fehlt auch eine trivale play()-Methode. Sie wird dir helfen die track_id zu ermitteln die du dann in den URL basteln kannst.
When we say computer, we mean the electronic computer.
Antworten