2015-11-02 7 views
5

Ich versuche, die Spuren bestimmter Benutzer zu erhalten, aber für einige Benutzer, obwohl sie Spuren haben, gibt die SoundCloud API eine leere Liste zurück.SoundCloud API gibt 0 Titel trotz Benutzer mit Spuren zurück

Zum Beispiel der folgende Benutzer hat 17 Spuren, wie Sie von seinem track_count

http://api.soundcloud.com/users/1250904?client_id=XXXXXX 

sehen Wenn ich versuche, seine Spuren zu bekommen es gibt eine leere Liste

http://api.soundcloud.com/users/1250904/tracks?client_id=XXXXXX 

Ist es möglich, Benutzer ihre Songs nicht über API verfügbar machen? Gibt es ein Feld auf dem Benutzer, das dies unterscheiden kann?

+0

Das klingt nach einer Frage für das Support-Team von SoundCloud. –

+1

@tristan Ihr Support-Team beantwortet Fragen mit StackOverflow - https://developers.soundcloud.com/support –

+0

Oh cool, das wusste ich nicht; Vielen Dank. Das ist eine der besseren "Wir werden Crowdsourcing und freie Arbeit" Implementierungen, die ich gesehen habe. –

Antwort

3

Das ist sehr interessant. Mit einer normalen CLIENT_ID, die ich selbst generiert habe, erhalte ich dieselben Ergebnisse wie Sie. Außerdem, wenn ich versuche, die API für Informationen über eine bestimmte Strecke zu schlagen, erhalte ich ein 403 Forbidden Fehler:

HTTP GET https://api.soundcloud.com/tracks/149151252.json?client_id=XXXXXX 

Es könnte ein paar Gründe, warum dies auftritt:

  1. Der Benutzer hat für alle ihre Tracks das Downloadlimit.
  2. Der Benutzer hat oEmbed deaktiviert, wodurch die API-Anforderungen an 403 gesendet werden (siehe this post).
  3. Der Benutzer hat irgendwie geschafft, normalen API-Zugriff auf ihre Spuren zu blockieren.

Ich bin auf Auswahl 3 hier gelehnt. Ich habe einige Tests mit anderen CLIENT_IDs in this question durchgeführt, indem ich die CLIENT_ID der youtube-dl-Anwendung getestet habe. Unter Verwendung ihrer _IPHONE_CLIENT_ID konnte ich Informationen für alle 17 Titel sehen. Wenn mein Verständnis des Schlüssels korrekt ist, ist es ein Master-API-Schlüssel, den SoundCloud für ihre iOS-Anwendung verwendet, was erklären würde, warum dieser Schlüssel funktioniert und andere nicht.

Dieser Benutzer muss einige Einstellungen aktiviert haben, um den standardmäßigen API-Zugriff auf seine Spuren zu blockieren.

+0

Das ist ein sehr interessanter Fund. Ich hoffe nur, dass die _IPHONE_CLIENT_ID auch auf lange Sicht funktioniert. –

+0

Ich sollte beachten, dass es gegen SoundCoulds TOS ist, jemandes API-Schlüssel zu verwenden oder ihre Endpunkte zurückzuentwickeln. Sie möchten sich also nicht auf den API-Schlüssel eines anderen Benutzers für Ihre Anwendung verlassen. – JAL

+0

Ich weiß, dass dies an dieser Stelle ein wenig alt ist, aber ich habe dieses Problem mit Soundcloud APIs und diese '_IPHONE_CLIENT_ID' funktioniert nicht mehr (und ist nicht wirklich eine praktikable Lösung). Ich habe einige Tests mit einem Soundcloud-Konto durchgeführt und konnte keine Kombination von Datenschutzeinstellungen finden, die es ermöglichen würden, dass ein Titel in der Benutzeroberfläche, aber nicht in der API-Rückgabe angezeigt wird. Ich habe auch eine E-Mail an [email protected] geschickt, aber keine Antwort erhalten. Ich nehme an, keiner von euch hat eine Dokumentation verschiedener API-Schlüssel-Zugriffsebenen gefunden? – rifflock