2015-10-30 10 views
8

Ich versuche, aus spotipy mit Python 2.7.10 vorinstalliert auf meinem Mac 10.10, speziell [add_a_saved_track.py] [1] Hier ist der Code wie von Github kopiert:Einstellung Spotify Anmeldeinformationen Spotipy mit

# Add tracks to 'Your Collection' of saved tracks 

import pprint 
import sys 

import spotipy 
import spotipy.util as util 

scope = 'user-library-modify' 

if len(sys.argv) > 2: 
    username = sys.argv[1] 
    tids = sys.argv[2:] 
else: 
    print("Usage: %s username track-id ..." % (sys.argv[0],)) 
    sys.exit() 

token = util.prompt_for_user_token(username, scope) 

if token: 
    sp = spotipy.Spotify(auth=token) 
    sp.trace = False 
    results = sp.current_user_saved_tracks_add(tracks=tids) 
    pprint.pprint(results) 
else: 
    print("Can't get token for", username) 

I registrierte die Anwendung bei developer.spotify.com/my-applications und erhielt client_id und client_secret. Ich bin ein wenig unklar über die Auswahl von redirect_uri so ich festgelegt, dass auf ‚https://play.spotify.com/collection/songs

des Lauf von Terminal Ich erhalte eine Fehlermeldung, die sagt:

You need to set your Spotify API credentials. You can do this by 
setting environment variables like so: 
export SPOTIPY_CLIENT_ID='your-spotify-client-id' 
export SPOTIPY_CLIENT_SECRET='your-spotify-client-secret' 
export SPOTIPY_REDIRECT_URI='your-app-redirect-url' 

Ich habe das in meinen Code mit dem ID, Geheimnis und URL als Zeichenfolgen, nur nach den Importen, aber über der Methode util.prompt_for_user_token.

, dass eine Rückverfolgung verursacht:

File "add-track.py", line 8 
export SPOTIPY_CLIENT_ID='4f...6' 
        ^
SyntaxError: invalid syntax 

bemerkte ich, dass Text Wrangler nicht als ein besonderes Wort 'Export' nicht erkennt. Und ich suchte docs.python.org für "Export" und kam mit nichts hilfreichem. Was ist Export? Wie verwende ich es falsch?

ich versuchte, den nächsten client_id, client_secret vorbei und redirect_uri als Argumente in die Methode util.prompt_for_user_token etwa so:

util.prompt_for_user_token(username,scope,client_id='4f...6',client_secret='xxx...123',redirect_uri='https://play.spotify.com/collection/songs') 

Als ich versuchte, dass das ist, was im Terminal passiert:

User authentication requires interaction with your 
     web browser. Once you enter your credentials and 
     give authorization, you will be redirected to 
     a url. Paste that url you were directed to to 
     complete the authorization. 


Opening https://accounts.spotify.com/authorize?scope=user-library-modify&redirect_uri=https%3A%2F%2Fplay.spotify.com%2Fcollection%2Fsongs&response_type=code&client_id=4f...6 in your browser 


Enter the URL you were redirected to: 

ich trat https://play.spotify.com/collection/songs und bekam dann diese Zurückverfolgungs:

Traceback (most recent call last): 
File "add-track.py", line 21, in <module> 
token = util.prompt_for_user_token(username, scope, client_id='4f...6', client_secret='xxx...123', redirect_uri='https://play.spotify.com/collection/songs') 
File "/Library/Python/2.7/site-packages/spotipy/util.py", line 86, in prompt_for_user_token 
token_info = sp_oauth.get_access_token(code) 
File "/Library/Python/2.7/site-packages/spotipy/oauth2.py", line 210, in get_access_token 
raise SpotifyOauthError(response.reason) 
spotipy.oauth2.SpotifyOauthError: Bad Request 

Es scheint, als ob ich etwas vermisse, vielleicht muss ein anderer Teil von Spotipy importiert werden oder ein anderes Python-Modul. Es scheint, dass mir das Stück fehlt, das die Client-Anmeldeinformationen festlegt. Wie mache ich das? Ich bin ziemlich neu darin (wenn das nicht offensichtlich war). Bitte helfen Sie.

UPDATE: Ich änderte redirect_uri zu localhost: 8888/Callback. Das öffnet eine Firefox-Registerkarte mit einem Fehler - "Verbindung zum Server nicht möglich". (Da ich keinen Server laufen habe. Ich dachte über die Installation von node.js wie in der Spotify Web API Tutorial, aber ich habe noch nicht). Das Python-Skript fordert mich dann auf, die URL, an die ich weitergeleitet wurde, zu kopieren und einzufügen. Obwohl FF eine Seite nicht öffnen konnte, funktionierte das, indem ich die gesamte URL einschließlich des "code = BG ...", der auf localhost folgt: 8888/callback kopierte? Ich bin mir nicht sicher, ob das ein ideales Setup ist, aber zumindest funktioniert es.

Spielt es eine Rolle, ob ich node.js eingerichtet habe oder nicht?

+2

Fyi-Export ist ein Unix-Befehl keine Python-Methode. Es wird verwendet, um Umgebungsvariablen zu setzen, die prompt_for_user_token dann lesen kann, indem es einen Systemaufruf durchführt. Sie sollten also die Exportbefehle in Ihrem Terminal eingeben, nicht in Ihrem Python-Skript – stackPusher

Antwort

2

Der Prozess, dem Sie gefolgt sind (einschließlich Ihres Updates), ist genau so, wie es das Beispiel vorsieht, und Sie verpassen nichts! Offensichtlich ist es ein ziemlich einfaches Tutorial, aber es richtet Sie mit einem Token ein und Sie sollten in der Lage sein, die Informationen zu bekommen, die Sie brauchen.

Für die Anmeldeinformationen können Sie diese direkt in Ihrem Terminal festlegen, indem Sie jeden Exportbefehl ausführen. Lesen Sie mehr über EXPORT hier: https://www.cyberciti.biz/faq/linux-unix-shell-export-command/