Ich versuche eine native React-App zu schreiben, die einige Tracks von Soundcloud streamen wird. Als Test habe ich mit der API unter Verwendung von Python gespielt und kann Anfragen stellen, um die URL aufzulösen, die Wiedergabelisten / Titel abzurufen und alles andere, was ich brauche.
Wenn ich eine Anfrage an die stream_url eines bestimmten Tracks stelle, erhalte ich einen 401-Fehler.
Die aktuelle URL lautet: https://api.soundcloud.com/tracks/699691660/stream?client_id=PGBAyVqBYXvDBjeaz3kSsHAMnr1fndq1
Ich habe es ohne die? Client_id versucht ... Ich habe versucht, die? Mit & habe ich versucht, eine andere client_id zu erhalten. Ich habe es mit allow_redirects als wahr und falsch versucht, aber nichts scheint zu funktionieren. Jede Hilfe wäre sehr dankbar.
Die streambare Eigenschaft jedes Tracks ist True, daher sollte es sich nicht um ein Berechtigungsproblem handeln.
Bearbeiten:
Nachdem ich ein bisschen recherchiert habe, habe ich eine halb erfolgreiche Problemumgehung gefunden. Der / stream-Endpunkt der API funktioniert immer noch nicht. Wenn Sie jedoch Ihren Zielendpunkt in http://feeds.soundcloud.com/users/soundcloud:users : /sounds.rss ändern, erhalten Sie einen entsprechenden RSS-Feed (meistens) das Gleiche wie bei Verwendung des API-Endpunkts für Titel oder Wiedergabelisten.
Der darin enthaltene Link kann gestreamt werden.
quelle
Antworten:
Okay, ich glaube, ich habe eine allgemeine Lösung gefunden, die für die meisten Menschen funktioniert. Ich wünschte, es wäre einfacher, aber es ist das Einfachste, was ich bisher gefunden habe.
Verwenden Sie die API, um Titel vom Benutzer abzurufen. Sie können linked_partitioning und die next_href-Eigenschaft verwenden, um alles zu erfassen, da maximal 200 Titel pro Aufruf vorhanden sind.
Mithilfe der im JSON abgerufenen Daten können Sie den Schlüssel permalink_url verwenden, um dasselbe zu erhalten, das Sie in den Browser eingeben würden.
Stellen Sie eine Anfrage an die permalink_url und greifen Sie auf den HTML-Code zu. Sie müssen einige Analysen durchführen, aber die gewünschte URL hat folgende Auswirkungen:
" https://api-v2.soundcloud.com/media/soundcloud:tracks:488625309/c0d9b93d-4a34-4ccf-8e16-7a87cfaa9f79/stream/progressive "
Sie könnten wahrscheinlich einen regulären Ausdruck verwenden, um dies einfach zu analysieren.
Stellen Sie eine Anfrage an diese URL, indem Sie? Client_id = ... hinzufügen, und Sie erhalten NOCH EINE ANDERE URL in der Rückgabe json.
Wenn Sie die im vorherigen Schritt zurückgegebene URL verwenden, können Sie im Browser direkt darauf verweisen und gelangen zu Ihrem Titelinhalt. Ich habe VLC durch Eingabe des Links überprüft und es wird korrekt gestreamt.
Hoffentlich hilft dies einigen von Ihnen bei Ihrer Entwicklung.
quelle
Da ich das gleiche Problem habe, hat mich die Antwort von @Default motiviert, nach einer Lösung zu suchen. Aber ich habe die Problemumgehung mit den
permalink_url
Schritten 2 und 3 nicht verstanden . Die einfachere Lösung könnte sein:api-v2
Endpunkt wie folgt:client_id
Wenn Sie eine Anfrage an diese URL mit als Abfrageparameter stellen, erhalten Sie eine andere URL, mit der Sie den Track streamen / herunterladen könnenBeachten Sie, dass das
api-v2
noch nicht öffentlich ist und die Anfrage von Ihrem Client wahrscheinlich von CORS blockiert wird.quelle
Wie von @ user208685 erwähnt, kann die Lösung mithilfe der SoundCloud-API v2 etwas einfacher sein:
Hinweis : Dieser Link ist nur für eine begrenzte Zeit gültig und kann durch Wiederholen der Schritte 3 bis 5 wiederhergestellt werden.
Beispiel in
node
(mitnode-fetch
):Eine ähnliche Lösung in Python finden Sie in diesem GitHub-Problem: https://github.com/soundcloud/soundcloud-python/issues/87
quelle