<?php
/*
* =========================
* Name: Amazon Partenaires : Meilleures Ventes
* Description: Vous avez un compte Amazon Partenaire, ce script vous permet de lister les 10 meilleures
ventes d'une catégorie au choix, et vous renvoie une liste de liens, AVEC votre id partenaire ( ces
liens qui vous font potentiellement gagner du fric ), ces liens sont illustrés par l'image du produit
en question. Vous pouvez personnaliser totalement l'affichage, ainsi que les informations retournées
( Sous réserve de consulter la doc du blog amazon partenaires cf ligne 15 ).
* Version : 1.0RC2
* License : Creative Commons BY-NC-SA ( http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ )
* Auteur : Vinh CHUC | http://www.pikkitux.com | vinh/point\chuc chez gmail/point\com
* P.S. : Ce script est basé sur le tutorial récupéré sur le blog amazon.fr Partenaires
( http://affiliation-blog.amazon.fr/ ), le post en question :
http://affiliation-blog.amazon.fr/2007/05/tutorial_reprod.html, à consulter si vous souhaiter
personnaliser ce script.
*********************
*********************
* Pré-requis : accès en écriture au dossier ou se situera le script, PHP5 avec SimpleXML activé
( c'est le cas par défaut ).
* INSTALLATION : uploadez ce fichier sur votre FTP ( de préférence dans son propre dossier) ,
puis appeler ce script depuis l'une de vos pages PHP, entrez :
echo file_get_contents("cheminverslecript/lescript.php?node=XXXXXX&ligne=X");
* Un système de cache est intégré ( il est simpliste : on vérifie la date du fichier créé, on execute le script
que s'il est suffisamment ancien, sinon on se contente "d'includer" le fichier déjà existant.
Un fichier cache est crée pour chaque combinaison node/nombresdelignes
* PERSONNALISATION : Lisez la doc d'amazon ( cf ligne 15 ) pour connaître toutes les balises xml disponibles,
puis modifiez à votre goût les lignes 106 à 111
( vous devez maitriser la concaténation de variables pour pas vous perdre au milieu
des guillemets et apostrophes )
*
*
*
*
* Démonstration : http://www.pikkitux.com/boutique.html
* =====================================================================================
*/
/*===================== Vos identifiants =====================*/
/***************************************************************/
$awsid = "xxxxxxxxx";/* Votre Identifiant Amazon Web Service, si vous êtes seulement
inscrit chez Amazon Partenaires, vous devez également vous inscrire chez A.W.S ( afin d'avoir une clé permettant
d'exploiter leur API ) */
$partenaireid = "xxxxxxxx-21";// Votre Idenfitiant Amazon Partenaire ( avec le -21 )
$node = $_GET['node']; // Le numéro correspondant a la catégorie dont vous souhaitez listez les meilleures ventes ( variable GET )
$resultatsparligne = $_GET['ligne'] ; // Le nombre de produits à afficher par lignes ( variables GET )
/* Pour trouver le numéro de node, rendez vous sur le site d'amazon.fr, dans la catégorie désirée,
et cherche le numéro dans l'url &node=xxxxxx */
/* Système de Cache, un fichier est mis en cache pour chaque combinaison node/nombredelignes
il y a donc un système de cache indépendant pour chacunes de ces combinaisons */
if(file_exists('amazon'.$node.'_'.$resultatsparligne.'.html'))
{
$modif_ago = time() - filemtime('amazon'.$node.'_'.$resultatsparligne.'.html');
}
else
{
$modif_ago = 60*60*60 ; // Cette valeur doit être strictement SUPERIEURE a la valeur 3 lignes en dessous
}
if ($modif_ago < 60*60*24 ) // Durée du cache ( 1 jour | à modifier si besoin ). Si le fichier xxxx.html ( la ou est enregistré le résultat du script )
// est suffisamment récent, on se contente de l'inclure à ce script
{
include('amazon'.$node.'_'.$resultatsparligne.'.html');
}
else /* Sinon on execute les diverses requêtes, qui vont écrire un nouveau xxxx.html, que l'on va également
inclure au script ( ligne 127 ) */
{
if (file_exists('amazon'.$node.'_'.$resultatsparligne.'.html')) { unlink('amazon'.$node.'_'.$resultatsparligne.'.html');}
/*===================== Traitement de la réponse XML d'aws ======================*/
$filegetcontentsxml = file_get_contents("http://webservices.amazon.fr/onca/xml?Service=AWSECommerceService&SubscriptionId=$awsid&Operation=BrowseNodeLookup&BrowseNodeId=$node&ResponseGroup=TopSellers");
// On récupère la réponse XML d'aws, dans une variable de type chaîne de caractère.
$xmlbrut = <<<XML
$filegetcontentsxml
XML;
$xmlfinal = new SimpleXMLElement($xmlbrut); // La réponse XML est transformée en array
/**************************************NE PAS MODIFIER A PARTIR DE CETTE LIGNE ***
***************************************SI VOUS NE SAVEZ PAS CE QUE VOUS FAITES **/
/*====================== On parse le xml et on affiche les liens =======================*/
$i = 0 ; /* Variable que l'on va incrémenter pour chaque élément retourné, on pourra alors insérer un <br /> selon qu'il est pair,
divisible par 3,4,....,n = le nombre d'éléments à afficher par ligne.*/
foreach ($xmlfinal->BrowseNodes->BrowseNode->TopSellers->TopSeller as $parser) // On fait une boucle énumérant les différents articles de la réponse
{
$i++;
$ASIN = $parser->ASIN; // On récupère l'ASIN dans une variable
$filegetcontentsxml2 = file_get_contents("http://ecs.amazonaws.fr/onca/xml?Service=AWSECommerceService&Version=2010-01-01&Operation=ItemLookup&SubscriptionId=$awsid&AssociateTag=$partenaireid&ItemId=$ASIN&ResponseGroup=Large,Offers");
// Grâce à l'ASIN tout juste récupéré on demande plus d'informations sur le produit ( dont l'url de la page amazon correpondante, et l'url de l'image du produit )
$xmlbrut2 = <<<XML
$filegetcontentsxml2
XML;
$xmlfinal2 = new SimpleXMLElement($xmlbrut2);
$parser2 = $xmlfinal2->Items->Item ;
$temp = ' <a href="'.$parser2->DetailPageURL.'" title="'.$parser2->ItemAttributes->Title.'"><img src="'.$parser2->SmallImage->URL.'" alt="'.$parser2->ItemAttributes->Title.'" /></a> ';
if ( is_int($i/$resultatsparligne) )
{
file_put_contents('amazon'.$node.'_'.$resultatsparligne.'.html',"<br />",FILE_APPEND
);
}
}
include('amazon'.$node.'_'.$resultatsparligne.'.html');
}
?>