Spotipy(特别是sp.track())运行时间太长



我正在尝试提取大约18,000首歌曲的发布数据,显式标志和流行度评分。我想把这些结果附加到数据帧

最初,我尝试了这个。-

for i,track in enumerate(df['uri']):
release_dates.append(sp.track(track)['album']['release_date']) 

但是我花了很长时间来运行,所以我认为这是数据集的大小问题。

然后我试着在50首歌的子集上运行它-

updated_popularity, explicit_flags, release_dates = [], [], []
for i in range(0,10000,50):
print("entered first for loop")
results = sp.track(df['uri'][i])
print("got track results")
for i, t in enumerate(results):
print("Second loop: Track = ", t)
updated_popularity.append(t['popularity'])
explicit_flags.append(t['explicit'])
release_dates.append(t['album']['release_date'])
print("Exited second loopn")

然而,我的代码已经运行了几个小时了,现在没有结果。我被困在这个问题上有一段时间了,任何帮助都会很感激!

请求50 tracks要快得多s(uri_list)

# function to divide a list of uris (or ids) into chuncks of 50.
chunker = lambda y, x: [y[i : i + x] for i in range(0, len(y), x)]
# using the function
uri_chunks = chunker(uri_list, 50)
updated_popularity, explicit_flags, release_dates = [], [], []
for chunk in uri_chunks:
print("entered first for loop")
results = sp.tracks(chunk)
print("got tracks results")
for t in results["tracks"]:
updated_popularity.append(t['popularity'])
explicit_flags.append(t['explicit'])
release_dates.append(t['album']['release_date'])
print("Exited second loopn")
print(updated_popularity)

最新更新