Запрашивая API продукта Amazon, чтобы получить ASIN для загрузки MP3, используя имя исполнителя и название - PullRequest
5 голосов
/ 16 февраля 2011

Я новичок в использовании API рекламы продуктов Amazon, и для своего первого проекта я пытаюсь получить ASIN для продукта загрузки MP3 для конкретной песни, основываясь на имени исполнителя и названии.В конечном итоге я буду использовать эти ASIN для заполнения виджета Amazon MP3 Clips .

Я использую PHP-класс из CodeDiesel.com для начала.Это прекрасно работает, и я добавил следующую функцию:

    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» для названия, я получу Роберта Рэндольфа и альбом Colorblind от Family Band.Если я ищу какой-то конкретный трек, например «Thrill Of It», Amazon ничего не может найти.

Так что мне нужно сначала выяснить, как сделать запрос на название трека.Затем мне нужно выяснить, как ограничить свои результаты только загрузками MP3.Как я могу это сделать?

Если есть документация по теме, можете ли вы указать мне правильное направление?Я читал это , но не вижу никаких параметров для того, что я хочу.

Спасибо за ваше время.

Ответы [ 2 ]

9 голосов
/ 16 февраля 2011

Документация странным образом организована, и мне самому сложно найти нужную информацию.

Чтобы искать mp3-файлы, вам нужно изменить параметр SearchIndex на «MP3Downloads».Затем, вместо использования «Artist» и «Track», вы должны использовать «Ключевые слова».Объедините значения исполнителя и трека в одну строку для значения свойства «Ключевые слова».Кроме того, попробуйте "MusicTracks" для SearchIndex, так как вы можете получить и другие результаты там.

Это фрагмент работающей у меня системы, которая выполняет поиск аналогичного типа.

    $params = Array(
        "Operation"=>'ItemSearch',
        "SearchIndex"=>'MP3Downloads',
        "ResponseGroup"=>'ItemAttributes,Tracks,Images',
        "Keywords"=>$track['title'].' '.$artist['name']
    );
2 голосов
/ 05 октября 2011

У меня тоже была такая проблема.Я работал на том же примере, который я сильно модифицировал и включил в целую коллекцию классов, из которых я сделал коллажи.Что мне действительно нужно, так это превью от Amazon с указанием исполнителя и названия альбома.Я собираюсь продолжать работать над этим, теперь, когда у меня все еще слишком много времени в моих руках.Моя кодовая база mashup здесь:

Мой Mashup и кодовая база

Я продолжаю получать рефералов по этому вопросу, мое решение в основном такое же, как у Криса, у меня есть два методафункции, которые делают это в моем коде:

        /**
     * 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 лучше для предварительного просмотра песен.

...