2016-08-20 5 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

can 'results ['tracks']' окажется пустым? –

+0

@BediEgilmez no, он возвращает действительную структуру данных 'JSON' –

ответ

0

Проверьте свою show_tracks(results) функцию. Вы ничего не даете.

Кроме того, вы выполняете итерацию по дорожкам, которые не определены в этой функции. Просто замените tracks на results. Тогда вам хорошо идти.

+0

код работает ...' tracks' передается как параметр 'results'. то, чего я не достиг, заключается в том, как передать список в '(usernames)' –

+0

Нет, ваша функция неверна. Вы не используете 'results' в своей функции' show_tracks'! –

+0

Я получил код из '' git'' 'git'' plamere 'https://github.com/plamere/spotipy/blob/master/examples/user_playlists_contents.py. Имейте в виду, что он создал всю обертку. Это не может быть неправильно. Я получаю результаты ... –

 Смежные вопросы

  • Нет связанных вопросов^_^