我正在使用Spotipy开发一个小程序,将文本文件中每位艺术家的前5首歌曲添加到播放列表中。我喜欢听音乐节上的每个乐队,手动生成播放列表需要很长时间。
所以这似乎是一个很好的解决方案!它的效果很好 - 除了每个请求有100首歌曲限制。我要添加大约690首歌曲。
所以基本上,我可以硬编码7首99首歌曲的列表,然后使用这些列表提交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!"
答案 0 :(得分: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:]