Seite 1 von 1

spotipy - spotify mit python abspiele

Verfasst: Mittwoch 20. Juni 2018, 19:37
von PhysicPat
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ß

Re: spotipy - spotify mit python abspiele

Verfasst: Mittwoch 20. Juni 2018, 20:25
von sls
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?

Re: spotipy - spotify mit python abspiele

Verfasst: Freitag 22. Juni 2018, 17:15
von PhysicPat
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

Re: spotipy - spotify mit python abspiele

Verfasst: Samstag 23. Juni 2018, 08:05
von sls
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.