Python - 自动生成列表以在spotify请求中保持低于100首歌曲限制

时间:2017-04-02 05:29:18

标签: python list spotify spotipy

我正在使用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!"

1 个答案:

答案 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:]