Если загрузка песни отключена, может ли стороннее приложение, прошедшее проверку подлинности, по-прежнему использовать URL-адрес загрузки для захвата трека?

Я пытаюсь создать приложение с использованием Ruby on Rails, которое позволяет пользователю загружать все песни, которые они загрузили. На данный момент я аутентифицировал пользователя с помощью OmniAuth, и мне удалось получить некоторые данные с помощью интерфейса Soundcloud Ruby. с их API.

В соответствии с API, у каждой дорожки есть соответствующий заголовок, artwork_url и download_url ( Я уже использовал API для получения этой информации). Я хотел бы отобразить каждую песню с указанием ее названия и обложки (если они существуют), а затем, если они решат загрузить этот трек, они смогут нажать кнопку и загрузить этот трек из download_url.

Итак, вот что я понял: для большинства треков (или звуков, как они называются в Soundcloud) загрузка отключена по умолчанию при загрузке. Дело в том, что есть также опция «Приложения включены/отключены». Мне интересно, если загрузка песни отключена, может ли стороннее приложение, прошедшее проверку подлинности, по-прежнему использовать URL-адрес загрузки для захвата трека? Я хотел бы знать, нужно ли пользователям индивидуально просматривать все свои треки и включать загрузку, чтобы это работало.

Если вам нужна дополнительная информация, пожалуйста, скажите об этом. Извините, если это очевидный вопрос.

Спасибо,

Нат


person Nathaniel Elkins    schedule 08.01.2013    source источник
comment
Кроме того, я не совсем уверен, как загрузить песню с помощью download_url, который будет выглядеть примерно так: api.soundcloud.com/tracks/13158665/download. Любые советы будут очень признательны. Спасибо.   -  person Nathaniel Elkins    schedule 09.01.2013
comment
Еще немного исследований: в это сообщение на форуме, вице-президент Soundcloud говорит, что если вы авторизованы, у вас всегда должен быть доступ к вашим трекам. Так что это заставляет меня думать, что это возможно. В нижней части этой страницы, похоже, есть решение для загрузки песня. Я только что попробовал это, и это, похоже, не сработало; у кого-нибудь есть идеи, почему?   -  person Nathaniel Elkins    schedule 09.01.2013


Ответы (2)


Мне интересно, если загрузка песни отключена, может ли стороннее приложение, прошедшее проверку подлинности, по-прежнему использовать URL-адрес загрузки для захвата трека?

Да, оно может. Однако обратите внимание, что для того, чтобы API действительно обслуживал файл, должен быть заголовок авторизации HTTP и параметр GET client_id.

Это означает, что просто выплевывая ссылки типа

<a href="https://api.soundcloud.com/tracks/{id}/download">Download {title}</a>

не поможет. Что касается client_id, вы можете просто добавить его к href, но поскольку браузер не знает о том, что ваше приложение авторизовано, и не может отправлять HTTP-заголовки с простыми запросами, API не позволит пользователю загружать треки, которые не доступны для публичного скачивания.

Из-за этого вам нужно будет создать прокси-сервер на ruby ​​​​и установить hrefs для ваших локальных конечных точек и обработать подключение к API SoundCloud на стороне ruby, чтобы вы могли передавать заголовок HTTP с токеном OAuth.

person Misha Reyzlin    schedule 09.01.2013
comment
Итак, если вашему приложению для этого нужен заголовок авторизации, как его получить? Я пытаюсь сделать очень простой фоллоу-гейт а-ля toneden.io и нашел этот ответ при попытке протестировать загрузку трека с отключенной загрузкой. Это что-то, где вам нужно лично спросить команду Soundcloud и сказать им, что вы собираетесь сделать приложение для последующих ворот, а затем они дадут вам http-заголовок? Если нет, то как получить заголовок http? - person Josh Burson; 03.07.2015

Выполнение HTTP-запроса (Get) к API с вызовом маршрута «/convert» вернет идентификатор вашего трека.

Затем вы можете сделать POST-запрос к API '/stream', передав идентификатор дорожки и ?client_id=YOURCLIENTID

Из ответа вы можете получить URL-адрес потока, который можно использовать для потоковой передачи и загрузки каждого трека в Soundcloud. Последний вариант не совсем законен, поэтому возьмите все это в качестве примера.

Изменить: это можно сделать с помощью чистого JS/jQuery, нет необходимости запускать серверы.

person Luca De Nardi    schedule 11.02.2015