2011-02-16 16 views
5

Soy nuevo usando la API de publicidad de productos de Amazon, y para mi primer proyecto con ella, estoy tratando de obtener el ASIN del producto de descarga MP3 de una canción en particular , basado en el artista y el título. Eventualmente usaré estos ASIN para completar un Amazon MP3 Clips Widget.Consultar Amazon Product API para obtener la descarga ASIN de MP3 usando el artista y el título

Estoy usando el PHP class from CodeDiesel.com para comenzar. Funciona muy bien, y he añadido la siguiente función:

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; 
    } 

Ahora, el problema es que sólo puede parecer conseguir álbumes de esta manera. Por ejemplo, si pongo "Robert Randolph" para el artista y "Colorblind" para el título, recibo Robert Randolph y el álbum Colorblind de Family Band. Si busco una pista en particular, como "Thrill Of It", Amazon no puede encontrar nada.

Así que lo que tengo que hacer es primero averiguar cómo hacer una consulta para el título de la pista. Entonces necesito descubrir cómo limitar mis resultados a solo descargas de MP3. ¿Cómo puedo hacer esto?

Si hay documentación sobre el tema, ¿puede señalarme en la dirección correcta? He estado reading through it, pero no veo ningún parámetro para lo que quiero.

Gracias por su tiempo.

Respuesta

9

La documentación está extrañamente organizada, y me es difícil encontrar información relevante por mi cuenta.

Para buscar mp3s, debe cambiar su parámetro SearchIndex a 'Descargas MP3'. Luego, en lugar de usar "Artista" y "Pista", debe usar "Palabras clave". Combine el artista y los valores de seguimiento en una cadena para el valor de la propiedad "Palabras clave". Además, pruebe "MusicTracks" para SearchIndex, ya que puede obtener resultados diferentes allí también.

Este es un fragmento de un sistema de trabajo que tengo que hace un tipo similar de búsqueda.

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

¡Impresionante, eso funcionó maravillosamente! Gracias una tonelada. – Brad

2

Esto fue un problema que tuve también. Trabajé con el mismo ejemplo que modifiqué e incorporé en gran medida a toda una colección de clases de las que hice mashups. Lo que realmente quiero es las vistas previas de Amazon con un título de artista y álbum. Voy a seguir trabajando en eso, ahora que todavía tengo demasiado tiempo en mis manos. Mi código base mashup está aquí:

My Mashup's and codebase

me siguen dando referencias de esta pregunta, mi solución es básicamente la misma que la de Chris, tengo dos métodos/funciones que hacen esto en mi código:

 /** 
    * 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; 
    } 

Mi código se puede descargar desde el enlace de arriba o está en GitHub, está basado en ejemplos de códigos anteriores que he actualizado. Se está ejecutando bien en mi host, pero iTunes es mejor para vistas previas de canciones.

+0

HI. ¿Cómo buscar solo en pistas originales? – Zl3n

+0

No he trabajado con esa API en años. Amazon, Google y otros cambian la API y lo que está permitido. Ni siquiera estoy seguro de lo que quieres decir con canciones originales, toda la canción? Amazon no le permitirá acceder a la canción completa, hacen que sea casi imposible acceder a la vista previa. – Muskie

+0

Gracias por su respuesta. He mejorado su publicación, y he cambiado la versión a 2013 ... Y funciona perfectamente;).Por original, me gustaría decir "lanzamiento oficial", como se nombra en musicbraiz o discogs php api. – Zl3n

Cuestiones relacionadas