これは、HTTPの "Content-range"ヘッダーを使用すると可能です。このヘッダーには「ここからここにバイトを渡して残りを無視してください」というメッセージが表示されます。 Webサーバーがそれらを処理するように設定されている場合(Apacheなど)、206バイトの本文を持つ206応答が返されます。
リスナーとAmazonの間のゲートウェイとして効果的に機能する小さなプロキシアプリケーションを作成する必要があります。
curl -v -I http://www.mfiles.co.uk/mp3-downloads/01-Tartaros%20of%20light.mp3
URLはあなたのいずれかです。あなたのホストは、コマンドラインからこれを試して応答しますかどうかを確認するために
。運がよければあなたが表示されます。
Accept-Ranges: bytes
Content-Length: 5284483
をこれは、サーバがContent-Rangeヘッダを受け入れないと、ファイルの完全な長さは5284483バイト長であることを意味しています。
レッツ・要求ファイルの最初の3分の1は:
curl -H'Range: bytes=0-1761494' http://www.mfiles.co.uk/mp3-downloads/01-Tartaros%20of%20light.mp3 > /tmp/test1.mp3
あなたは今/tmp/test1.mp3を再生し、トラックの最初の3分の1を聞くことができるはずです。
次のステップは、プロキシアプリケーションを作成することです。良いアプローチはhttps://github.com/aniero/rack-streaming-proxyを使用することですが、あなたはおそらく送信するプロジェクトフォークする必要があるだろう「範囲:バイト= 0から1761494」ヘッダを。あるいはSinatraを見てください。ここ
ボーナスはリモートサーバをプロキシするので、あなたは各ファイルのIDで簡単なデータベーステーブルを持つことによって、ファイルの実際のURLを難読化できることです。あなたが各要求の範囲を計算する必要がないように、各ファイルのバイト長も格納する小さなスクリプトを書くことをお勧めします。
したがってGETに「/プレビュー/ 12345」だろうプロキシ「http://amazon.com/my_long_url」とあなたにファイルのちょうど最初の三分の一を与えます。
これに加えて、あなた自身のサーバーの前にワニスを置くことができます。これは、これらの部分的なMP3ファイルをキャッシュするため、ファイルを取得するためにAmazonに常に戻る必要はありません。
うん...何かのように完全なクリップを取得するためにwgetを使用するか、Firebugのでスクリプトにパッチを適用する*高度*ユーザーを停止します。さらに、ファイルがプレビューを作成するのに十分な大きさであれば、クライアントにすべてを送信し、その99%をすぐにゴミ箱に残します。 – yurymik