2016-11-15 1 views
1

Sur le guide API Soundcloud (https://developers.soundcloud.com/docs/api/guide#pagination) l'exemple donné pour la lecture de plus de 100 donnée est la suivante:problèmes Soundcloud API python avec partitionnement lié

# get first 100 tracks 
tracks = client.get('/tracks', order='created_at', limit=page_size) 
for track in tracks: 
    print track.title 

# start paging through results, 100 at a time 
tracks = client.get('/tracks', order='created_at', limit=page_size, 
        linked_partitioning=1) 
for track in tracks: 
    print track.title 

Je suis certain que cela est faux que J'ai trouvé que 'tracks.collection' a besoin de référencement plutôt que de 'pistes'. Basé sur le wiki API SoundCloud python GitHub il devrait ressembler à ceci:

tracks = client.get('/tracks', order='created_at',limit=10,linked_partitioning=1) 
while tracks.collection != None: 
for track in tracks.collection: 
    print(track.playback_count) 
tracks = tracks.GetNextPartition() 

Là où j'ai supprimé le tiret de la dernière ligne (je pense qu'il ya une erreur sur le wiki, il est dans la boucle qui fait pas de sens pour moi). Cela fonctionne pour la première boucle. Cependant, cela ne fonctionne pas pour les pages successives car la fonction "GetNextPartition()" est introuvable. J'ai essayé la dernière ligne en tant que:

tracks = tracks.collection.GetNextPartition() 

... mais aucun succès.

Peut-être que les versions sont mélangées? Mais j'essaye de courir ceci avec Python 3.4 après avoir téléchargé la version d'ici: https://github.com/soundcloud/soundcloud-python

Toute aide très appréciée!

Répondre

2

Pour tous ceux qui s'en soucient, j'ai trouvé cette solution sur le forum des développeurs SoundCloud. Il est légèrement modifié par rapport au cas d'origine (recherche de pistes) pour lister mes propres abonnés. L'astuce consiste à appeler la fonction client.get à plusieurs reprises, en passant le "users.next_href" renvoyé précédemment comme la demande qui pointe vers la page de résultats suivante. Hourra!

pgsize=200 
c=1 
me = client.get('/me') 
#first call to get a page of followers 
users = client.get('/users/%d/followers' % me.id, limit=pgsize, order='id', 
        linked_partitioning=1) 
for user in users.collection: 
    print(c,user.username) 
    c=c+1 
#linked_partitioning means .next_href exists 
while users.next_href != None: 
#pass the contents of users.next_href that contains 'cursor=' to 
#locate next page of results 
users = client.get(users.next_href, limit=pgsize, order='id', 
        linked_partitioning=1) 
for user in users.collection: 
    print(c,user.username) 
    c=c+1