2016-08-20 9 views
0

私は後でforループで呼び出される関数を持っています。Spotify - パラメータとしてリストを渡す

def show_tracks(results): 
    for i, item in enumerate(tracks['items']): 
     track = item['track'] 
     print(" %d %32.32s %s" % (i, track['artists'][0]['name'], track['name'])) 

2スニペット:

playlists = sp.user_playlists(username) #spotipy method 
for playlist in playlists['items']: 
    if playlist['owner']['id'] == username: 
     print() 
     print(playlist['name']) 
     print(' total tracks', playlist['tracks']['total']) 
     results = sp.user_playlist(username, playlist['id'], fields="tracks,next") 
     tracks = results['tracks'] 
     show_tracks(tracks)     
     while tracks['next']: 
      tracks = sp.next(tracks) 
      show_tracks(tracks) 

が、今はそうように、ユーザ名のlistを通過したいは:

playlists = sp.user_playlists(#list of usernames) 

Iは、関数のような第2のスニペットを定義しようとしましたしかし、そうすることで、グローバル変数とローカル変数の問題が現れました:

NameError: global name 'tracks' is not defined

したがって、どのようにusernamesのリストを渡してループするのですか?

+0

'結果['トラック']'が空になることはありますか? –

+0

@BediEgilmezいいえ、有効な 'JSON'データ構造体を返します –

答えて

0

show_tracks(results)の機能を確認してください。結果をどこにでも渡すわけではありません。

また、その関数で定義されていないトラックを反復処理しています。単にtracksresultsに置き換えてください。それから、あなたは行き​​たいです。

+0

コードが動作しています...' tracks'がパラメータ 'results'として渡されています。私が達成していないのは、(ユーザ名)にリストを渡す方法です。 –

+0

いいえ、あなたの関数は間違っています。 'show_tracks'関数で' results'を使用していません! –

+0

私はplamereの 'spotipy'の' git' https://github.com/plamere/spotipy/blob/master/examples/user_playlists_contents.pyからコードを入手しました。彼はラッパー全体を作ったことに気をつけてください。それは間違っていることはできません。私は結果を得る... –

関連する問題