查询Amazon Product API以使用艺术家和标题获取MP3下载的ASIN

时间:2011-02-16 18:25:35

标签: php amazon-product-api

我是使用亚马逊产品广告API的新手,对于我的第一个项目,我试图根据艺术家和标题获得特定歌曲的MP3下载产品的ASIN。我最终将使用这些ASIN来填充Amazon MP3 Clips Widget

我正在使用PHP class from 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”,我会获得Robert Randolph和Family Band的Colorblind专辑。如果我搜索特定的曲目,例如“Thrill Of It”,亚马逊就无法找到任何内容。

所以我需要做的是首先弄清楚如何查询曲目标题。然后我需要弄清楚如何将我的结果限制为MP3下载。我怎么能这样做?

如果有关于该主题的文档,您能指出我正确的方向吗?我已经reading through it,但没有看到任何我想要的参数。

感谢您的时间。

2 个答案:

答案 0 :(得分:9)

文档组织奇特,我很难自己找到相关信息。

要查找mp3,您必须将SearchIndex参数更改为“MP3Downloads”。然后,您必须使用“关键字”,而不是使用“艺术家”和“跟踪”。将艺术家和曲目值组合成一个字符串,用于“关键字”属性值。另外,请尝试SearchIndex的“MusicTracks”,因为您可能会得到不同的结果。

这是我所拥有的工作系统的片段,它执行类似的查找。

    $params = Array(
        "Operation"=>'ItemSearch',
        "SearchIndex"=>'MP3Downloads',
        "ResponseGroup"=>'ItemAttributes,Tracks,Images',
        "Keywords"=>$track['title'].' '.$artist['name']
    );

答案 1 :(得分:2)

这也是我遇到的问题。我从同样的例子中进行了工作,我对其进行了大量修改,并将其整合到了我制作mashup的各个类中。我真正想要的是亚马逊给出的艺术家和专辑标题的预览。我现在要继续努力,因为我手上还有太多时间。我的mashup代码库在这里:

My Mashup's and codebase

我一直从这个问题得到推荐,我的解决方案基本上和Chris一样,我有两个方法/函数在我的代码中执行此操作:

        /**
     * 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更适合预览歌曲。