Я пытаюсь написать собственное приложение, которое будет транслировать некоторые треки из Soundcloud. В качестве теста я играл с API, используя python, и я могу делать запросы для разрешения URL, получения списков воспроизведения / дорожек и всего остального, что мне нужно.
При этом при выполнении запроса к stream_url любой данной дорожки я получаю ошибку 401.
Текущий рассматриваемый URL-адрес: https://api.soundcloud.com/tracks/699691660/stream?client_id=PGBAyVqBYXvDBjeaz3kSsHAMnr1fndq1
Я пробовал без? Client_id ..., я пытался заменить? с & я попытался получить другой client_id, я попробовал его с помощью allow_redirects как true и false, но, похоже, ничего не работает. Любая помощь будет принята с благодарностью.
Свойство streamable каждого трека имеет значение True, поэтому не должно быть проблемы с разрешениями.
Редактировать:
После небольшого исследования я нашел полу-успешный обходной путь. Конечная точка / stream API по-прежнему не работает, но если вы измените конечную точку назначения на http://feeds.soundcloud.com/users/soundcloud:users : /sounds.rss, она даст вам RSS-канал, который (в основном) то же, что вы получите, используя конечную точку API треков или списков воспроизведения.
Ссылка, содержащаяся в нем, может быть транслирована.
источник
Ответы:
Хорошо, я думаю, что нашел обобщенное решение, которое будет работать для большинства людей. Хотелось бы, чтобы было проще, но это самая простая вещь, которую я нашел.
Используйте API, чтобы получить треки от пользователя. Вы можете использовать свойство connected_partitioning и свойство next_href, чтобы собрать все, поскольку максимальное ограничение составляет 200 дорожек на вызов.
Используя данные в JSON, вы можете использовать ключ permalink_url, чтобы получить то же самое, что вы вводите в браузер.
Сделайте запрос к permalink_url и получите доступ к HTML. Вам нужно будет выполнить некоторый анализ, но URL, который вам нужен, будет иметь следующий эффект:
" https://api-v2.soundcloud.com/media/soundcloud:tracks:488625309/c0d9b93d-4a34-4ccf-8e16-7a87cfaa9f79/stream/progressive "
Вы могли бы, вероятно, использовать регулярное выражение, чтобы разобрать это просто.
Сделайте запрос на добавление этого URL-адреса? Client_id = ..., и он вернет вам ДРУГОЙ URL в ответном json.
Используя URL, возвращенный с предыдущего шага, вы можете напрямую связать его с этим в браузере, и он перенесет вас на ваш трек. Я проверил VLC, введя ссылку, и она течет правильно.
Надеюсь, это поможет некоторым из вас в разработке.
источник
Поскольку у меня та же проблема, ответ @Default побудил меня искать решение. Но я не понял обходной путь с
permalink_url
шагами 2 и 3. Более простое решение может быть:api-v2
конечную точку следующим образом:client_id
в качестве параметра запроса, и вы получите другой URL, с которым вы можете транслировать / скачивать трекОбратите внимание, что
api-v2
все еще не является общедоступным, и запрос от вашего клиента, вероятно, будет заблокирован CORS.источник
Как уже упоминалось @ user208685, решение может быть немного проще с использованием SoundCloud API v2:
Примечание . Эта ссылка действительна только в течение ограниченного периода времени, и ее можно восстановить, повторив шаги с 3 по 5.
Пример в
node
(сnode-fetch
):Для аналогичного решения в Python, проверьте эту проблему GitHub: https://github.com/soundcloud/soundcloud-python/issues/87
источник