Estou tentando escrever um aplicativo nativo de reação, que transmitirá algumas faixas do Soundcloud. Como teste, eu tenho jogado com a API usando python, e sou capaz de fazer solicitações para resolver o URL, puxar as listas de reprodução / faixas e tudo mais que eu preciso.
Com isso dito, ao fazer uma solicitação para o stream_url de qualquer faixa, eu recebo um erro 401.
O URL atual em questão é: https://api.soundcloud.com/tracks/699691660/stream?client_id=PGBAyVqBYXvDBjeaz3kSsHAMnr1fndq1
Eu tentei sem o? Client_id ..., tentei substituir o? com &, tentei obter outro client_id, tentei com allow_redirects como verdadeiro e falso, mas nada parece funcionar. Qualquer ajuda seria muito apreciada.
A propriedade streamable de cada faixa é True, portanto, não deve ser um problema de permissão.
Editar:
Depois de pesquisar um pouco, encontrei uma solução alternativa sem sucesso. O terminal / stream da API ainda não está funcionando, mas se você alterar o terminal de destino para http://feeds.soundcloud.com/users/soundcloud:users : /sounds.rss, ele fornecerá um feed RSS que é (principalmente) o mesmo que você obteria usando o ponto de extremidade da API de faixas ou listas de reprodução.
O link contido nele pode ser transmitido.
fonte
Respostas:
Ok, acho que encontrei uma solução generalizada que funcionará para a maioria das pessoas. Eu gostaria que fosse mais fácil, mas é a coisa mais simples que eu já encontrei.
Use a API para obter faixas do usuário. Você pode usar o linked_partitioning e a propriedade next_href para reunir tudo, porque há um limite máximo de 200 trilhas por chamada.
Usando os dados puxados no JSON, você pode usar a chave permalink_url para obter a mesma coisa que digitaria no navegador.
Faça uma solicitação para o permalink_url e acesse o HTML. Você precisará fazer uma análise, mas o URL que desejar será algo com o efeito de:
" https://api-v2.soundcloud.com/media/soundcloud:tracks:488625309/c0d9b93d-4a34-4ccf-8e16-7a87cfaa9f79/stream/progressive "
Você provavelmente poderia usar um regex para analisar isso simplesmente.
Faça uma solicitação para esse URL adicionando? Client_id = ... e ele fornecerá mais um URL em seu retorno json.
Usando o URL retornado da etapa anterior, você pode vincular diretamente ao URL do navegador e o direcionará para o conteúdo da sua faixa. Eu verifiquei no VLC inserindo o link e ele transmite corretamente.
Espero que isso ajude alguns de vocês no seu desenvolvimento.
fonte
Como tenho o mesmo problema, a resposta da @Default me motivou a procurar uma solução. Mas não entendi a solução alternativa
permalink_url
nas etapas 2 e 3. A solução mais fácil poderia ser:api-v2
pontos de extremidade como este:client_id
como um parâmetro de consulta e você obterá outro URL com o qual poderá transmitir / baixar a faixaObserve que
api-v2
ainda não é público e a solicitação do seu cliente provavelmente será bloqueada pelo CORS.fonte
Conforme mencionado por @ user208685, a solução pode ser um pouco mais simples usando a API do SoundCloud v2:
Nota : Este link é válido apenas por um período limitado e pode ser regenerado repetindo as etapas 3. a 5.
Exemplo em
node
(comnode-fetch
):Para uma solução semelhante em Python, verifique este problema do GitHub: https://github.com/soundcloud/soundcloud-python/issues/87
fonte