5

私はAmazonのProductAdvertisingAPIを初めて使用します。これを使用した最初のプロジェクトでは、アーティストとタイトルに基づいて、特定の曲のMP3ダウンロード製品のASINを取得しようとしています。最終的には、これらのASINを使用してAmazonMP3クリップウィジェットにデータを入力します。

開始するには、CodeDiesel.comのPHPクラスを使用しています。それはうまく機能し、私は次の関数を追加しました:

    public function searchMusic($artist, $title) {
        $parameters = array("Operation"     => "ItemSearch",
                            "Artist"        => $artist,
                            "Title"         => $title,
                            "SearchIndex"   => "Music",
                            "ResponseGroup" => "Medium");
        $xml_response=$this->queryAmazon($parameters);
        return $xml_response;
    }

さて、問題は、私はこの方法でしかアルバムを入手できないように見えることです。たとえば、アーティストに「Robert Randolph」、タイトルに「Colorblind」を入れると、RobertRandolphとFamilyBandのColorblindアルバムが手に入ります。「ThrillOfIt」などの特定のトラックを検索すると、Amazonは何も見つかりません。

だから私がする必要があるのは、最初にトラックタイトルのクエリを作成する方法を理解することです。次に、結果をMP3ダウンロードのみに制限する方法を理解する必要があります。これどうやってするの?

トピックに関するドキュメントがある場合、正しい方向に私を向けることができますか?私はそれを読んでいますが、私が欲しいもののパラメータが表示されません。

お時間をいただきありがとうございます。

4

2 に答える 2

9

ドキュメントは奇妙に整理されており、私は自分で関連情報を見つけるのに苦労しています。

mp3を検索するには、SearchIndexパラメータを「MP3Downloads」に変更する必要があります。次に、「Artist」と「Track」を使用する代わりに、「Keywords」を使用する必要があります。アーティストとトラックの値を「Keywords」プロパティ値の1つの文字列に結合します。また、「MusicTracks」を試してみてくださいSearchIndex。そこでも異なる結果が得られる可能性があります。

これは、私が持っている動作中のシステムからのスニペットであり、同様のタイプのルックアップを実行します。

    $params = Array(
        "Operation"=>'ItemSearch',
        "SearchIndex"=>'MP3Downloads',
        "ResponseGroup"=>'ItemAttributes,Tracks,Images',
        "Keywords"=>$track['title'].' '.$artist['name']
    );
于 2011-02-16T18:31:58.533 に答える
2

これも私が抱えていた問題でした。私は、マッシュアップを作成したクラスのコレクション全体に大幅に変更して組み込んだ同じ例から作業しました。私が本当に欲しいのは、アーティストとアルバムのタイトルが付けられたAmazonからのプレビューです。まだ手に余る時間がありますので、これからも取り組んでいきます。私のマッシュアップコードベースはここにあります:

私のマッシュアップとコードベース

私はこの質問から紹介を受け続けています、私の解決策は基本的にクリスのものと同じです、私は私のコードでこれを行う2つのメソッド/関数を持っています:

        /**
     * Return the tracks found on an album, have to page to get them all which this method does not do.
     * 
     * @param string $albumTitle 
     * @param string $artist
     * @return mixed simpleXML object
     */
    public function getMP3sForAlbumByArtist($albumTitle, $artist)
    {
        $searchTerm = $albumTitle . ' ' . $artist;
        $parameters = array("Operation"   => "ItemSearch",
                            "Keywords"    => $searchTerm,
                            "SearchIndex" => AmazonProductAPI::CATEGORY_MP3_DOWNLOADS,
                            "ResponseGroup" => AmazonProductAPI::RESPONSE_GROUP_TRACKS);

        $xml_response = $this->queryAmazon($parameters);

        return $xml_response;
    }



    /**
     * Return the tracks found on a song title and artist
     * 
     * @param string $songTitle 
     * @param string $artist
     * @return mixed simpleXML object
     */
    public function getMP3ForSongByArtist($songTitle, $artist)
    {
        $searchTerm = $songTitle . ' ' . $artist;
        $parameters = array("Operation"   => "ItemSearch",
                            "Keywords"    => $searchTerm,
                            "SearchIndex" => AmazonProductAPI::CATEGORY_MP3_DOWNLOADS,
                            "ResponseGroup" => AmazonProductAPI::RESPONSE_GROUP_TRACKS);

        $xml_response = $this->queryAmazon($parameters);

        return $xml_response;
    }

私のコードは上記のリンクからダウンロード可能であるか、GitHubにあります。これは、更新した古いコード例に基づいています。私のホストでは問題なく動作していますが、曲のプレビューにはiTunesの方が適しています。

于 2011-10-04T22:25:31.470 に答える