8721 sujets

Développement web côté serveur, CMS

Bonsoir.

Je rencontre un petit souci avec un script qui me permet de rechercher des couvertures de livres sur amazon et des les télécharger ensuite.

Pour faire simple, le script regarde les isbn (numéro unique des livres) de ma base de données, puis il regarde si amazon à la couverture en jpg, si oui il télécharge.
Ca fonctionne... sauf que pas toujours en fait ! En gors sur mes 3000 bouquin, il télécharge correctement 250 images et après il ne prend que des images en 1x1 pixel pour 43 octets...
Si l'on tape directement le code dans la barre d'adresse comme par exemple :
http://images-eu.amazon.com/images/P/9782820300041.08.MZZZZZZZ.jpg
On a justement une image en 1x1.
Mais si on fait :
http://cdilouisemichel.toile-libre.org/opac_css/getimage.php?url_image=http%3A%2F%2Fimages-eu.amazon.com%2Fimages%2FP%2F%21%21isbn%21%21.08.MZZZZZZZ.jpg&noticecode=9782820300041&vigurl=
On a notre image... alors que si décortique le code, c'est la même adresse !

Je vous met le code du script, il est plutôt court :


//--------------------------------

<?php 
// +-------------------------------------------------+ 
// © 2002-2004 PMB Services /  www.sigb.net  pmb@sigb.net et contributeurs (voir  www.sigb.net)  
// +-------------------------------------------------+ 
// $Id: isbn.inc.php,v 1.5 2005/03/22 11:39:46 touraine37 Exp $ 

ini_set('max_execution_time', 3000);

require_once ("./includes/error_report.inc.php") ; 
require_once ("./includes/global_vars.inc.php") ; 
require_once ("./includes/config.inc.php"); 

$include_path      = "./".$include_path; 
$class_path        = "./".$class_path; 
$javascript_path   = "./".$javascript_path; 
$styles_path       = "./".$styles_path; 

require("$include_path/db_param.inc.php"); 
include("$include_path/error_handler.inc.php"); 
include("$include_path/sessions.inc.php"); 
include("$include_path/misc.inc.php"); 
include("$include_path/isbn.inc.php"); 
require("$include_path/mysql_connect.inc.php"); 
include("$class_path/XMLlist.class.php"); 

// Connexion et sÈlection de la base 
$link = connection_mysql(); 
// ExÈcuter des requËtes SQL 
$query = "SELECT code FROM notices WHERE code <>''"; 
$result = mysql_query($query) or die("Echec de requÈte\n"); 

// Afficher des rÈsultats en HTML 
while ($row = mysql_fetch_object($result)) { 
if (isISBN ($row->code)) { 
$isbn = preg_replace('/-|\.| /', '', $row->code); 
echo "<p>ISBN $isbn "; 
if (!file_exists ("./images/vignettes/".$isbn.".jpg")) { 
echo "copy from  http://images-eu.amazon.com/images/P/".$isbn.".08.MZZZZZZZ.jpg";  
if (!copy("http://images-eu.amazon.com/images/P/".$isbn.".08.MZZZZZZZ.jpg", "./images/vignettes/".$isbn.".jpg")) { 
echo " bad !"; 
} 
} else { 
echo "exist"; 
} 
echo "</p>"; 
} else { 
echo "<p>NOT ISBN ".$isbn."</p>"; 
} 
} 

// LibÈration des rÈsultats 
mysql_free_result($result); 

// Fermeture de la connexion 
mysql_close($link);


//-----------------------------


En fait vu que je m'arrache les cheveux la dessus depuis un moment, je me demandais si je ne pouvais pas faire la même chose sur le site de fnac... sauf que les couvertures sont dans des dossiers différents, par exemple :
www.fnac......../images/X/B/8/!!ISBN!!.jpg
puis une autres couvertures sera dans :
www.fnac......../images/G/D/5/!!ISBN!!.jpg

Je ne connais pas assez bien le php pour savoir si il serait possible de mettre une fontion de recherche inculant des noms de dossiers inconnus...

En tout cas, merci d'avance Smiley smile
Le fait de lire mon message m'a donné une idée... j'ai mis dans le code la deuxième adresse (celle avec lancement de script getimage.php), et ça marche beaucoup mieux ! Ca donne quelque chose de pas orthodoxe j'imagine.

Voici :

//--------------------------------

<?php 
// +-------------------------------------------------+ 
// © 2002-2004 PMB Services /  www.sigb.net  pmb@sigb.net et contributeurs (voir  www.sigb.net)  
// +-------------------------------------------------+ 
// $Id: isbn.inc.php,v 1.5 2005/03/22 11:39:46 touraine37 Exp $ 

ini_set('max_execution_time', 3000);

require_once ("./includes/error_report.inc.php") ; 
require_once ("./includes/global_vars.inc.php") ; 
require_once ("./includes/config.inc.php"); 

$include_path      = "./".$include_path; 
$class_path        = "./".$class_path; 
$javascript_path   = "./".$javascript_path; 
$styles_path       = "./".$styles_path; 

require("$include_path/db_param.inc.php"); 
include("$include_path/error_handler.inc.php"); 
include("$include_path/sessions.inc.php"); 
include("$include_path/misc.inc.php"); 
include("$include_path/isbn.inc.php"); 
require("$include_path/mysql_connect.inc.php"); 
include("$class_path/XMLlist.class.php"); 

// Connexion et sÈlection de la base 
$link = connection_mysql(); 
// ExÈcuter des requËtes SQL 
$query = "SELECT code FROM notices WHERE code <>''"; 
$result = mysql_query($query) or die("Echec de requÈte\n"); 

// Afficher des rÈsultats en HTML 
while ($row = mysql_fetch_object($result)) { 
if (isISBN ($row->code)) { 
$isbn = preg_replace('/-|\.| /', '', $row->code); 
echo "<p>ISBN $isbn "; 
if (!file_exists ("./images/vignettes/".$isbn.".jpg")) { 
echo "copy from  http://cdilouisemichel.toile-libre.org/opac_css/getimage.php?url_image=http%3A%2F%2Fimages-eu.amazon.com%2Fimages%2FP%2F%21%21isbn%21%21.08.MZZZZZZZ.jpg&noticecode=".$isbn."&vigurl=";  
if (!copy("http://cdilouisemichel.toile-libre.org/opac_css/getimage.php?url_image=http%3A%2F%2Fimages-eu.amazon.com%2Fimages%2FP%2F%21%21isbn%21%21.08.MZZZZZZZ.jpg&noticecode=".$isbn."&vigurl=", "./images/vignettes/".$isbn.".jpg")) { 
echo " bad !"; 
} 
} else { 
echo "exist"; 
} 
echo "</p>"; 
} else { 
echo "<p>NOT ISBN ".$isbn."</p>"; 
} 
} 

// LibÈration des rÈsultats 
mysql_free_result($result); 

// Fermeture de la connexion 
mysql_close($link);


//-----------------------------