3

Ruby on Rails を使用して、ユーザーがアップロードしたすべての曲をダウンロードできるアプリケーションを作成しようとしています。この時点で、OmniAuth を使用してユーザーを認証し、Soundcloud の Rubyインターフェースと API を使用してデータを取得することができました。

APIによると、すべてのトラックにはタイトル、artwork_url、および download_url が関連付けられています (この情報を取得するために API を既に使用しています)。各曲のタイトルとアートワーク (存在する場合) を表示し、そのトラックをダウンロードすることを選択した場合、ボタンをクリックして download_url からそのトラックをダウンロードできるようにしたいと考えています。

そこで、私が気付いたことは次のとおりです。ほとんどのトラック (または、Soundcloud で呼び出されるサウンド) では、アップロード時にデフォルトでダウンロードが無効になっています。問題は、「アプリの有効化/無効化」というオプションもあります。私が疑問に思っているのは、曲のダウンロードが無効になっている場合、認証されたサードパーティのアプリケーションは引き続きダウンロード URL を使用してトラックを取得できますか? これを機能させるには、ユーザーがすべてのトラックを個別に調べてダウンロードを有効にする必要があるかどうかを知りたい.

さらに詳細が必要な場合は、そのように言ってください。これが明らかな質問である場合はお詫び申し上げます。

ありがとう、

ナット

4

2 に答える 2

4

私が疑問に思っているのは、曲のダウンロードが無効になっている場合、認証されたサードパーティのアプリケーションは引き続きダウンロード URL を使用してトラックを取得できますか?

はい、できます。ただし、API が実際にファイルを提供するには、HTTP Authorization ヘッダーと client_id GET パラメータが必要であることに注意してください。

これは、単に次のようなリンクを吐き出すことを意味します

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

役に立ちません。についてはclient_id、単純に に追加できますhrefが、ブラウザはアプリが承認されているという事実を認識せず、単純な要求で HTTP ヘッダーを送信できないため、API はユーザーが承認されていないトラックをダウンロードできないようにします。一般にダウンロード可能。

そのため、Ruby でプロキシを構築hrefし、ローカル エンドポイントに s を設定し、Ruby 側で SoundCloud API への接続を処理して、OAuth トークンで HTTP ヘッダーを渡すことができるようにする必要があります。

于 2013-01-09T16:29:26.290 に答える
1

「/convert」ルートを呼び出す API に対して HTTP リクエスト (Get) を行うと、トラック ID が返されます。

次に、トラック ID と ?client_id=YOURCLIENTID を渡す API '/stream' への POST 要求を行うことができます。

応答から、Soundcloud のすべてのトラックをストリーミングおよびダウンロードするために使用できるストリーム URL を取得できます。後者のオプションは実際には合法ではないため、これらすべてを例として取り上げてください。

編集:これは純粋なJS/jQueryで実行でき、サーバーを実行する必要はありません

于 2015-02-11T07:02:56.733 に答える