J'essaie d'écrire une application native réagissant qui diffusera certaines pistes de Soundcloud. À titre de test, j'ai joué avec l'API en utilisant python, et je suis capable de faire des demandes pour résoudre l'URL, extraire les listes de lecture / pistes et tout ce dont j'ai besoin.
Cela dit, lorsque je fais une demande à stream_url d'une piste donnée, j'obtiens une erreur 401.
L'URL actuelle en question est: https://api.soundcloud.com/tracks/699691660/stream?client_id=PGBAyVqBYXvDBjeaz3kSsHAMnr1fndq1
Je l'ai essayé sans le? Client_id ..., j'ai essayé de remplacer le? avec &, j'ai essayé d'obtenir un autre client_id, je l'ai essayé avec allow_redirects à la fois vrai et faux, mais rien ne semble fonctionner. Toute aide serait grandement appréciée.
La propriété streamable de chaque piste est True, donc cela ne devrait pas être un problème d'autorisations.
Éditer:
Après avoir fait un peu de recherche, j'ai trouvé une solution de contournement semi-réussie. Le point de terminaison / stream de l'API ne fonctionne toujours pas, mais si vous changez votre point de terminaison de destination en http://feeds.soundcloud.com/users/soundcloud:users : /sounds.rss, il vous donnera un flux RSS qui est (principalement) identique à ce que vous obtiendriez en utilisant le point de terminaison de l'API des pistes ou des listes de lecture
Le lien qu'il contient peut être diffusé.
la source
Réponses:
D'accord, je pense avoir trouvé une solution généralisée qui fonctionnera pour la plupart des gens. Je souhaite que ce soit plus facile, mais c'est la chose la plus simple que j'ai trouvée à ce jour.
Utilisez l'API pour extraire les pistes de l'utilisateur. Vous pouvez utiliser Linked_partitioning et la propriété next_href pour tout rassembler car il y a une limite maximale de 200 pistes par appel.
En utilisant les données déroulées dans le JSON, vous pouvez utiliser la clé permalink_url pour obtenir la même chose que vous saisiriez dans le navigateur.
Faites une demande à permalink_url et accédez au HTML. Vous devrez effectuer une analyse, mais l'URL dont vous aurez besoin sera quelque chose à l'effet de:
" https://api-v2.soundcloud.com/media/soundcloud:tracks:488625309/c0d9b93d-4a34-4ccf-8e16-7a87cfaa9f79/stream/progressive "
Vous pourriez probablement utiliser une expression rationnelle pour analyser cela simplement.
Faites une demande à cette URL en ajoutant? Client_id = ... et cela vous donnera ENCORE une autre URL dans son retour json.
En utilisant l'URL renvoyée à l'étape précédente, vous pouvez créer un lien direct vers celle-ci dans le navigateur, et cela vous mènera au contenu de votre piste. J'ai vérifié sur VLC en saisissant le lien et il diffuse correctement.
J'espère que cela aidera certains d'entre vous à se développer.
la source
Comme j'ai le même problème, la réponse de @Default m'a motivé à chercher une solution. Mais je n'ai pas compris la solution de contournement avec le
permalink_url
dans les étapes 2 et 3. La solution la plus simple pourrait être:api-v2
point de terminaison comme ceci:client_id
comme paramètre de requête et vous obtenez une autre URL avec laquelle vous pouvez diffuser / télécharger la pisteNotez que le
api-v2
n'est toujours pas public et la demande de votre client sera probablement bloquée par CORS.la source
Comme mentionné par @ user208685, la solution peut être un peu plus simple en utilisant l'API SoundCloud v2:
Remarque : ce lien n'est valide que pour une durée limitée et peut être régénéré en répétant les étapes 3 à 5.
Exemple en
node
(avecnode-fetch
):Pour une solution similaire en Python, consultez ce problème GitHub: https://github.com/soundcloud/soundcloud-python/issues/87
la source