Estoy tratando de escribir una aplicación nativa de reacción que transmitirá algunas pistas de Soundcloud. Como prueba, he estado jugando con la API usando Python, y puedo hacer solicitudes para resolver la URL, extraer las listas de reproducción / pistas y todo lo que necesito.
Dicho esto, cuando hago una solicitud al stream_url de cualquier pista, recibo un error 401.
La url actual en cuestión es: https://api.soundcloud.com/tracks/699691660/stream?client_id=PGBAyVqBYXvDBjeaz3kSsHAMnr1fndq1
Lo he intentado sin el? Client_id ..., he intentado reemplazar el? con &, he intentado obtener otro client_id, lo he intentado con allow_redirects como verdadero y falso, pero nada parece funcionar. Cualquier ayuda sería muy apreciada.
La propiedad de transmisión de cada pista es True, por lo que no debería ser un problema de permisos.
Editar:
Después de investigar un poco, he encontrado una solución poco exitosa. El punto final / stream de la API todavía no funciona, pero si cambia su punto final de destino a http://feeds.soundcloud.com/users/soundcloud:users : /sounds.rss, le dará un feed RSS que (principalmente) lo mismo que obtendría al usar las pistas o las listas de reproducción del punto final de la API.
El enlace que contiene puede transmitirse.
fuente
Respuestas:
Bien, creo que he encontrado una solución generalizada que funcionará para la mayoría de las personas. Desearía que fuera más fácil, pero es lo más simple que he encontrado hasta ahora.
Use API para extraer pistas del usuario. Puede usar Linked_partitions y la propiedad next_href para recopilar todo porque hay un límite máximo de 200 pistas por llamada.
Usando los datos desplegados en el JSON, puede usar la clave permalink_url para obtener lo mismo que escribiría en el navegador.
Haga una solicitud a permalink_url y acceda al HTML. Tendrá que analizar un poco, pero la url que deseará será algo como:
" https://api-v2.soundcloud.com/media/soundcloud:tracks:488625309/c0d9b93d-4a34-4ccf-8e16-7a87cfaa9f79/stream/progressive "
Probablemente podría usar una expresión regular para analizar esto simplemente.
Haga una solicitud a esta url agregando? Client_id = ... y le dará TODA OTRA url en su respuesta json.
Usando la URL devuelta del paso anterior, puede vincular directamente a eso en el navegador, y lo llevará a su contenido de seguimiento. Verifiqué en VLC ingresando el enlace y se transmite correctamente.
Esperemos que esto ayude a algunos de ustedes con su desarrollo.
fuente
Como tengo el mismo problema, la respuesta de @Default me motivó a buscar una solución. Pero no entendí la solución con
permalink_url
los pasos 2 y 3. La solución más fácil podría ser:api-v2
punto final como este:client_id
un parámetro de consulta y obtendrá otra URL con la que puede transmitir / descargar la pistaTenga en cuenta que
api-v2
todavía no es público y CORS bloqueará la solicitud de su cliente.fuente
Como mencionó @ user208685, la solución puede ser un poco más simple al usar SoundCloud API v2:
Nota : Este enlace solo es válido por un período de tiempo limitado y puede regenerarse repitiendo los pasos 3 a 5.
Ejemplo en
node
(connode-fetch
):Para una solución similar en Python, consulte este problema de GitHub: https://github.com/soundcloud/soundcloud-python/issues/87
fuente