Golangs new integrators came in handy for request pagination. I know the code is not optimal but is very readable and it is just for a proof of concept. I am try to get Spotify metadata in bulk. Hopefully I won’t get IP banned, fingers crossed.
for chunk := range slices.Chunk(allSimpleTracks, 100) {
ids := make([]spotify.ID, len(chunk))
for i, a := range chunk {
ids[i] = a.ID
}
f, err := client.GetAudioFeatures(ctx, ids...)
if err != nil {
return nil, err
}
fullTracks := make([]*spotify.FullTrack, len(ids))
for subChunk := range slices.Chunk(ids, 50) {
full, err := client.GetTracks(ctx, subChunk, spotify.Limit(50))
if err != nil {
return nil, err
}
fullTracks = append(fullTracks, full...)
}
for i := range len(ids) {
allTracks[i] = &FullerTrack{
Track: fullTracks[i],
Features: f[i],
}
}
}