2017-04-02 10 views
0

Spotipy를 사용하는 작은 프로그램을 사용하여 텍스트 파일의 모든 아티스트의 상위 5 곡을 재생 목록에 추가하고 있습니다. 저는 음악 축제에서 모든 밴드를 경청하고 수동으로 재생 목록을 생성하는 데 오랜 시간이 걸립니다.Python - 자동으로 목록을 생성하여 지정 요청시 100 곡 제한 미만으로 유지

이렇게 멋진 솔루션처럼 보입니다. 요청 당 100 곡의 한도가 있다는 점만 제외하면 멋지게 작동합니다. 나는 약 690 곡을 추가해야한다.

기본적으로 99 곡 7 개 목록을 하드 코드 한 다음 해당 목록을 사용하여 7 개의 요청을 제출할 수 있습니다 (제한 사항을 해결하기 위해 요청을 분할하는 것이 좋을 것이라고 생각합니다).하지만 프로그램을 원합니다. 더 많거나 적은 밴드로 작업 할 수 있습니다.

필요에 따라 개별 목록을 생성 할 수있는 방법이 있습니까? 저는 Python과 프로그래밍에 익숙하지 않습니다 (분명히). 또는 이것을 수행하는 다른 조언?

감사

import pprint 
import sys 

import spotipy 
import spotipy.util as util 

tracks = [] 
lineupfile = open('lineup.txt','r') 
lineup = [x.strip('\n') for x in lineupfile.readlines()] 

numberofbands = len(lineup) 
if(number) 

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

scope = 'playlist-modify-public' 
token = util.prompt_for_user_token(username, scope, redirect_uri = 'https://example.com/callback/') 

if token: 
    sp = spotipy.Spotify(auth=token) 
    sp.trace = False 

    for x in range(0,len(lineup)): 
     results = sp.search(q=str(lineup[x]), limit=5) 
     for i, t in enumerate(results['tracks']['items']): 
      tracks.append(str(t['id'].strip('u'))) 
      print("adding ",t['id'],t['name']) 
    results = sp.user_playlist_add_tracks(username, playlist_id, tracks, position=None) 

else: 
    print("Can't get token for", username) 


print "Playlist Complete!" 

답변

2

변경이 : 여기에

results = sp.user_playlist_add_tracks(username, playlist_id, tracks, position=None) 

:

while tracks: 
    results = sp.user_playlist_add_tracks(username, playlist_id, tracks[:100], position=None) 
    tracks = tracks[100:] 
+1

딱! 정말 고마워 – Asterlux