2017-03-06 3 views
0

私は現在、SpotifyはAPIを使用している、と私は、このエンドポイントでアーティストからトップトラックを取得したい、PythonとフラスコでAPIを消費するために学んでいる:https://api.spotify.com/v1/artists/ {ID} /トップトラック、あなたが見ることができるように、私は検索エンドポイントを使用するために、彼らのトップトラックを得るためにアーティストのIDが必要です。https://api.spotify.com/v1/search?q=name&type=artistこれは私にJSONのデータを与えてくれます。2つのspotifyエンドポイントをPythonで互いに補完する方法

私の質問は、Top-Tracksエンドポイントを、エンドポイントから取得したIDでどのように使用することができるのですか?アーティストのIDを格納してエンドポイントのURLに連結できるようにするために、 "ide"という変数を作成しますが、今は自分のコードのどこにTop-Tracks URLがあるのか​​わかりません。関数、格納されたIDを使用して変数を呼び出す方法

は、ここに私のコードです:

from flask import Flask, request, render_template, jsonify 
import requests 

app = Flask(__name__) 

@app.route("/api/artist/<artist>") 
def api_artist(artist): 
    params = get_id(artist) 
    return jsonify(params) 

@app.route("/api/track/<artist>") 
def api_track(artist): 
    params = get_track(artist) 
    return jsonify(params) 

def get_id(artist): 
    headers = { 
     "client_id": "xXxXx", 
     "client_secret": "XxXxX" 
    } 

    response = requests.get("https://api.spotify.com/v1/search?q=" + artist +"&type=artist", headers=headers) 

    if response.status_code == 200: 
     print(response.text) 
     list=[] 
     response_dict = response.json() 
     results = response_dict["artists"] 
     items = results ["items"] 
     for value in items: 
      list.append(value["id"]) 

    params = { 
     "id": list[0] 
    } 

    return list[0] 

そして、ここで私はトップのトラックを取得しようとする方法ですが、それは動作しません。

def get_track(artist): 
    ide = list[0] 
    can = requests.get("https://api.spotify.com/v1/artists/"+ ide + "/top-tracks?country=ES", headers=headers) 
    return can 
+1

Pythonコードを投稿するときは、字下げを正確に再現してください。さもなければ、あなたは人々に見せているコードに新しい問題を導入しています。 – khelwood

+0

@khelwood申し訳ありませんが、ありがとうございました。 – nellydesu

+0

レスポンスのエラーコード(ステータスコード)は何ですか?それは良い最初の手がかりです。それを得るためのPythonの要求を見てください。 – FuzzyAmi

答えて

0

learn a bit more about python scopingのように見えます。 list[0]get_trackの中で未定義になっているのは、それが定義したget_idでしかアクセスできないからです。 get_trackの小さな変化は、あなたがget_track内部のIDにアクセスできます:

​​

役に立てば幸い!

関連する問題