2

私は作曲家のためのウェブサイトを構築しています。彼は自分の作品のサンプルをSoundcloud経由で公開し、それらのサンプルの一部を自分のWebサイトに埋め込みたいと考えています。彼はプレミアムアカウントを持っています。

私は彼のためにこれをできるだけ簡単にしたいです(彼はオタクではありません)。基本的には、ブラウザのアドレスバーから曲のURLをコピーして貼り付け、残りはアプリケーションに任せたいと思っています。

それは実際には比較的簡単です-そして私はそれをプレーヤーの標準バージョンでうまく動作させることができました。しかし、小さなバージョンのプレーヤーをプログラムで埋め込むための実用的な方法を見つけることができません。Soundcloud oEmbedリファレンスには小さなプレーヤーについての言及はなく、maxheightパラメータを18に設定するだけではうまくいきません。

問題は、ホームページに埋め込まれた同じ曲が小さなプレーヤーを使用してレンダリングされる必要があるのに対し、サブページでは完全な標準プレーヤーである必要があるため、実際にすべてのページに埋め込みを生成する必要があることです-したがって、私はただ彼が埋め込みコードをsoundcloudから私のアプリにコピーして貼り付けることを許可します。これは、小さなプレーヤーの埋め込みコードまたは標準のプレーヤーコードの両方ではなく、両方を使用できるためです。同じ曲に2つの異なる埋め込みコードをコピーして貼り付けるのは、このような単純なことにはあまりにも面倒なようです。

もう1つは、自分でプレミアムアカウントを持っておらず、彼のアカウントにアクセスできないため、これを適切にテストできないことです。開発者がプレミアムアカウントを「モック」する方法があれば、すばらしいでしょう。開発目的...

助けてくれてありがとう!

ダン

4

1 に答える 1

5

残念ながら、/oembed現時点では通常のウィジェット (Flash の HTML5) でしか機能しません。

ただし、どちらの html も自分で作成できます。小さなウィジェット埋め込みのテンプレートは次のとおりです。

<object height="18" width="100%">
  <param name="movie" value="https://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F{trackId}&player_type=tiny{widgetParams}"></param>
  <param name="allowscriptaccess" value="always"></param>
  <param name="wmode" value="transparent"></param>
  <embed wmode="transparent" allowscriptaccess="always" height="18" width="100%" src="https://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F{trackId}&player_type=tiny{widgetParams}"></embed>
</object>

通常のウィジェットのテンプレート:

<iframe width="100%" height="166" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F{trackId}{widgetParams}"></iframe>

これらを (改行なしで) 文字列に入れ、これらの文字列に対して変数補間を実行する必要があります。どの言語を使用しているかはわかりませんが、ほとんどの言語にはこれが組み込まれています。

ほとんどの場合、私が書いている JavaScript の場合、Douglas Crockford のsupplantfunctionを使用できます。

変数はtrackId、値が正の整数でwidgetParamsある必要があるものと、値が のようなものである必要があるもので、接頭辞&color=ff6600&auto_play=falseが のkey=valueペア&です。{この例では、補間する変数の区切り文字としてandを使用しまし}たが、もちろん、言語またはテンプレート エンジンが必要とするものであれば何でもかまいません。

クライアントがトラック URL を提供できるようにするには、/resolveエンドポイントに対して API リクエストを実行して、トラック URL (パーマリンク) からトラック ID を取得する必要があります。client_idAPI へのリクエストを承認するには、開発者として登録する必要があります。ここで別の回答で JavaScript でそれを行う方法を説明しました。

API へのリクエストを行いたくない場合は、クライアントに、「共有」ボタンを押して SoundCloud 上の任意のサウンドまたはセットから簡単に取得できる埋め込みコードを提供するように依頼し、サウンドまたはセットを抽出することもできます。正規表現を使用した ID。

小さなウィジェットを挿入するためにこれがどのように機能するかの例を次に示します (SoundCloud JS SDK も使用) http://jsbin.com/OLUloX/1/edit

于 2013-02-15T18:12:30.060 に答える