2016-08-20 23 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'])) 

第二個片段:

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) 

我試圖定義第二個片段作爲一個函數,但是在這樣做時出現了全局與局部變量的問題:

NameError: global name 'tracks' is not defined

那麼,如何通過usernames的列表,並通過其中的每一個循環?

+0

'results ['tracks']'碰巧是空的嗎? –

+0

@BediEgilmez不,它返回有效的'JSON'數據結構 –

回答

0

檢查您的show_tracks(results)功能。你沒有通過任何結果。

此外,您正在迭代未在該函數中定義的軌道。只需將tracks替換爲results即可。那麼你很好去。

+0

代碼正在工作......'tracks'正在作爲參數'results'傳遞。我沒有達到的是如何將一個列表傳遞給'(用戶名)' –

+0

不,你的功能是錯誤的。你在'show_tracks'函數中沒有使用'results'! –

+0

我從plamere的'spotipy'的'git'獲得了代碼https://github.com/plamere/spotipy/blob/master/examples/user_playlists_contents.py。介意你,他創造了整個包裝。這不可能是錯的。我得到的結果... –