2017-02-21 6 views
0

Nach der SoundCloud API Dokumentation unter https://developers.soundcloud.com/docs/api/reference#tracks, begann ich eine Implementierung der SoundCloud API in einem meiner Projekte zu schreiben. Ich habe versucht, 50 Titel von einem bestimmten Genre mit einer Mindestlänge von 120000ms mit diesem Code zu erhalten:SoundCloud API ignorieren Dauer Filter

def get_starttracks(genres="Rock"): 
    return client.get("/tracks", genres=genres, duration={ 
     'from': 120000 
    }, limit='50') 

Soundcloud mit einer gültigen Liste reagiert des Titels, aber ihre Dauer kann den angegebenen Filter nicht überein.

Beispiel:

print(get_starttracks(genres="Pop")[0].fields()['duration']) 
> 30000 

Ist der api der ‚duration'-Parameter ignoriert oder ist ein Fehler im Filter innerhalb von meinem Code?

Ps .: Könnte verwandt werden mit soundcloud search api ignoring duration filter?, wenn der Fehler nicht innerhalb des Python-Codes liegt.

Antwort

0

Nach dem Versuch, dieses Problem mit mehreren Änderungen an meinen Code zu beheben, fand ich endlich die Frage:

Es ist NICHT ein Fehler. Als Soundcloud ihre "Go +" - Dienste herausbrachte, wurden einige offizielle Tracks auf eine Vorschau von 30 Sekunden beschränkt. Der API-Filter scheint die Dauer der vollständigen Spur zu vergleichen, während die Vorschauversion nur zurück an den Client gesendet wird (wenn Sie nicht "Go +" abonniert haben und/oder Ihre Anwendung nicht angemeldet ist).

Also, der einzige Weg, um die Dauer zu filtern, ist durch alle empfangenen Spuren iterieren:

for track in tracks: 
    if track.duration <= 30000: 
     tracks.remove(track)