2

おはようございます。

Echoest APIを使用した音声認識のサポートが組み込まれた小さなメディア プレーヤーを開発しています。私は以前に API を扱ったことがあり、結果を送信して解析する方法を知っていますが、他の APIPOST/GETはドキュメントで簡単な例を提供しているため、言語やプラットフォームに関係なく、ほぼすべての状況に対応できます。

ただし、Echones API は CURL の例のみを提供します。CURL は、私が扱ったことのないものです。私はDelphi XE3、またはFiremonkey 2具体的には、で作業しているため、組み込みの CURL ライブラリまたはコンポーネントはありません。利用可能なサードパーティ製のものはいくつかありますが、Delphi 6 を開発環境としてリストしているため、それらが最新のものであるかどうかは確信が持てません。 (これが本当かどうかは別の話です)。

OS X将来的にバージョンをコンパイルする可能性があるように、可能な限りクロスプラットフォームを維持したいと考えているPOSTのでGET、この CURL コマンドを可能なものに「変換」するにはどうすればよいでしょうか。Indy(例)で使用します。

curl -F "api_key=FILDTEOIK2HBORODV" -F "filetype=mp3" -F "track=@audio.mp3" "http://developer.echonest.com/api/v4/track/upload"

これはAPI ドキュメントから直接取得したもので、トラックをサービスにアップロードするために使用されます。

CURL の詳細についてはよくわからないので、サービスにランダム データを投げる前に、SO コミュニティが簡単な説明と私が利用できる例を提供できるかどうかを確認するのが最善だと感じました。いずれにせよ、説明は例よりもはるかに価値がありますが、例は、たまたま同様の問題に出くわした他の人にとっては役立つかもしれません。

よろしく、スコット・プリチャード。

4

1 に答える 1

3

このオプションは、HTTPコンテンツタイプを使用して提供されたデータ-Fにcurlを指示します。これは、HTTPレイヤーでは次のようになります。POST"multipart/form-data"

POST /api/v4/track/upload HTTP/1.1
Host: developer.echonest.com
Content-Type: multipart/form-data; boundary="boundaryvalue"

--boundaryvalue
Content-Disposition: form-data; name="api_key"

FILDTEOIK2HBORODV
--boundaryvalue
Content-Disposition: form-data; name="filetype"

mp3
--boundaryvalue
Content-Disposition: form-data; name="track"; filename="audio.mp3"
Content-Type: audio/x-mpg

<binary audio data here>
--boundaryvalue--

Post()Indyのコンポーネントのメソッドは、ユーティリティクラスTIdHTTPを介してそのContent-Typeを実装します。例:TIdMultipartFormDataStream

uses
  ..., IdHTTP, IdMultipartFormData;

var
  Data: TIdMultipartFormDataStream;
begin
  Data := TIdMultipartFormDataStream.Create;
  try
    Data.AddFormField('api_key', 'FILDTEOIK2HBORODV');
    Data.AddFormField('filetype', 'mp3');
    Data.AddFile('track', 'C:\path to\audio.mp3');
    IdHTTP1.Post('http://developer.echonest.com/api/v4/track/upload', Data);
  finally
    Data.Free;
  end;
end;
于 2013-01-06T05:59:09.303 に答える