Guest
Public paste!

Vinh CHUC

By: a guest | Jun 21st, 2007 | Syntax: PHP | Size: 6.34 KB | Hits: 34 | Expires: Never
This paste has a previous version, view the difference. Copy text to clipboard
  1. <?php
  2. /*
  3.  * =========================
  4.  *         Name:  Amazon Partenaires : Meilleures Ventes
  5.  *  Description:  Vous avez un compte Amazon Partenaire, ce script vous permet de lister les 10 meilleures
  6.  ventes d'une catégorie au choix, et vous renvoie une liste de liens, AVEC votre id partenaire ( ces
  7.  liens qui vous font potentiellement gagner du fric ), ces liens sont illustrés par l'image du produit
  8.  en question. Vous pouvez personnaliser totalement l'affichage, ainsi que les informations retournées
  9.  ( Sous réserve de consulter la doc du blog amazon partenaires cf ligne 15 ).
  10.  *  Version    :  1.0RC2
  11.  *  License    :  Creative Commons BY-NC-SA ( http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ )
  12.  *  Auteur     :  Vinh CHUC | http://www.pikkitux.com | vinh/point\chuc chez gmail/point\com
  13.  *  P.S.       :  Ce script est basé sur le tutorial récupéré sur le blog amazon.fr Partenaires
  14.                   ( http://affiliation-blog.amazon.fr/ ), le post en question :
  15.                   http://affiliation-blog.amazon.fr/2007/05/tutorial_reprod.html, à consulter si vous souhaiter
  16.                   personnaliser ce script.
  17.  *********************
  18.  *********************
  19.  * Pré-requis : accès en écriture au dossier ou se situera le script, PHP5 avec SimpleXML activé
  20.  ( c'est le cas par défaut ).
  21.  * INSTALLATION : uploadez ce fichier sur votre FTP ( de préférence dans son propre dossier) ,
  22. puis appeler ce script depuis l'une de vos pages PHP, entrez :
  23. echo file_get_contents("cheminverslecript/lescript.php?node=XXXXXX&ligne=X");
  24.  * Un système de cache est intégré ( il est simpliste : on vérifie la date du fichier créé, on execute le script
  25.  que s'il est suffisamment ancien, sinon on se contente "d'includer" le fichier déjà existant.
  26.  Un fichier cache est crée pour chaque combinaison node/nombresdelignes
  27.  * PERSONNALISATION : Lisez la doc d'amazon ( cf ligne 15 ) pour connaître toutes les balises xml disponibles,
  28.  puis modifiez à votre goût les lignes 106 à 111
  29.  ( vous devez maitriser la concaténation de variables pour pas vous perdre au milieu
  30.  des guillemets et apostrophes )
  31.  *
  32.  *
  33.  *
  34.  *
  35.  * Démonstration : http://www.pikkitux.com/boutique.html
  36.  * =====================================================================================
  37.  */
  38.  
  39.  
  40. /*===================== Vos identifiants  =====================*/
  41. /***************************************************************/
  42.  
  43.         $awsid = "xxxxxxxxx";/* Votre Identifiant Amazon Web Service, si vous êtes seulement
  44. inscrit chez Amazon Partenaires, vous devez également vous inscrire chez A.W.S ( afin d'avoir une clé permettant
  45. d'exploiter leur API ) */
  46.  
  47.  
  48.         $partenaireid = "xxxxxxxx-21";// Votre Idenfitiant Amazon Partenaire ( avec le -21 )
  49.        
  50.        
  51.         $node =  $_GET['node'];                   // Le numéro correspondant a la catégorie dont vous souhaitez listez les meilleures ventes ( variable GET )
  52.         $resultatsparligne = $_GET['ligne'] ;     // Le nombre de produits à afficher par lignes ( variables GET )
  53.  
  54.         /* Pour trouver le numéro de node, rendez vous sur le site d'amazon.fr, dans la catégorie désirée,
  55.         et cherche le numéro dans l'url &node=xxxxxx */
  56.  
  57. /* Système de Cache, un fichier est mis en cache pour chaque combinaison node/nombredelignes
  58. il y a donc un système de cache indépendant pour chacunes de ces combinaisons */
  59.  
  60. if(file_exists('amazon'.$node.'_'.$resultatsparligne.'.html'))
  61. {
  62. $modif_ago = time() - filemtime('amazon'.$node.'_'.$resultatsparligne.'.html');
  63. }
  64. else
  65. {
  66. $modif_ago = 60*60*60 ;   // Cette valeur doit être strictement SUPERIEURE a la valeur 3 lignes en dessous
  67. }
  68.  
  69.  
  70. 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 )
  71. // est suffisamment récent, on se contente de l'inclure à ce script
  72. {
  73. include('amazon'.$node.'_'.$resultatsparligne.'.html');
  74. }
  75. else     /* Sinon on execute les diverses requêtes, qui vont écrire un nouveau xxxx.html, que l'on va également
  76. inclure au script ( ligne 127 ) */
  77. {
  78.         if (file_exists('amazon'.$node.'_'.$resultatsparligne.'.html')) { unlink('amazon'.$node.'_'.$resultatsparligne.'.html');}
  79.  
  80.  
  81.  
  82.  
  83.        
  84.         /*===================== Traitement de la réponse XML d'aws ======================*/
  85.  
  86.         $filegetcontentsxml = file_get_contents("http://webservices.amazon.fr/onca/xml?Service=AWSECommerceService&SubscriptionId=$awsid&Operation=BrowseNodeLookup&BrowseNodeId=$node&ResponseGroup=TopSellers");
  87.         // On récupère la réponse XML d'aws, dans une variable de type chaîne de caractère.
  88.  
  89. $xmlbrut = <<<XML
  90. $filegetcontentsxml
  91. XML;
  92.  
  93.         $xmlfinal = new SimpleXMLElement($xmlbrut);  // La réponse XML est transformée en array
  94.  
  95.  
  96.  
  97.  
  98.         /**************************************NE PAS MODIFIER A PARTIR DE CETTE LIGNE ***
  99.         ***************************************SI VOUS NE SAVEZ PAS CE QUE VOUS FAITES **/
  100.  
  101.  
  102.  
  103.  
  104.         /*====================== On parse le xml et on affiche les liens =======================*/
  105.  
  106.  
  107.  
  108.         $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,
  109.          divisible par 3,4,....,n = le nombre d'éléments à afficher par ligne.*/
  110.  
  111.         foreach ($xmlfinal->BrowseNodes->BrowseNode->TopSellers->TopSeller as $parser)    // On fait une boucle énumérant les différents articles de la réponse
  112.                 {
  113.                 $i++;
  114.                 $ASIN = $parser->ASIN;   // On récupère l'ASIN dans une variable
  115.                 $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");
  116.         // 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 )
  117.  
  118.  
  119.  
  120. $xmlbrut2 = <<<XML
  121. $filegetcontentsxml2
  122. XML;
  123.  
  124.                 $xmlfinal2 = new SimpleXMLElement($xmlbrut2);
  125.                 $parser2 = $xmlfinal2->Items->Item ;
  126.                 $temp =  ' <a href="'.$parser2->DetailPageURL.'" title="'.$parser2->ItemAttributes->Title.'"><img src="'.$parser2->SmallImage->URL.'" alt="'.$parser2->ItemAttributes->Title.'"   /></a> ';
  127.                 file_put_contents('amazon'.$node.'_'.$resultatsparligne.'.html',$temp,FILE_APPEND);
  128.                 if ( is_int($i/$resultatsparligne) )
  129.                 {
  130.                 file_put_contents('amazon'.$node.'_'.$resultatsparligne.'.html',"<br />",FILE_APPEND);
  131.                 }
  132.                 }
  133. include('amazon'.$node.'_'.$resultatsparligne.'.html');
  134. }
  135.  
  136.  
  137.  
  138. ?>