2016-11-15 3 views
1

Auf der Soundcloud API Führung (https://developers.soundcloud.com/docs/api/guide#pagination) dem gegebenen Beispiel für mehr als 100 Stück Lesen von Daten ist wie folgt:Soundcloud API Python Probleme mit verknüpften Partitionierung

# 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 

ich ziemlich sicher bin, das ist falsch, wie Ich habe herausgefunden, dass "tracks.collection" referenziert werden muss und nicht nur "tracks". Basierend auf der Soundcloud API Wiki GitHub Python sollte es aussehen wie folgt aus:

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() 

Wo ich den Einzug von der letzten Zeile entfernt haben (ich glaube, es ist ein Fehler im Wiki es innerhalb der for-Schleife ist, die macht keinen Sinn für mich). Dies funktioniert für die erste Schleife. Dies funktioniert jedoch nicht für aufeinander folgende Seiten, da die Funktion "GetNextPartition()" nicht gefunden wird. Ich habe die letzte Zeile wie versucht:

tracks = tracks.collection.GetNextPartition() 

... aber kein Erfolg.

Vielleicht bekomme ich Versionen durcheinander? Aber ich versuche, dies mit Python 3.4 nach dem Download der Version von hier zu starten: https://github.com/soundcloud/soundcloud-python

Jede Hilfe sehr geschätzt!

Antwort

2

Für jeden, der sich interessiert, fand ich diese Lösung im SoundCloud Entwicklerforum. Es ist leicht modifiziert von dem ursprünglichen Fall (Suche nach Spuren), um meine eigenen Anhänger aufzulisten. Der Trick besteht darin, die Funktion client.get wiederholt aufzurufen und die zuvor zurückgegebene "users.next_href" als Anforderung an die nächste Ergebnisseite weiterzuleiten. Hurra!

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