Recupérer l'image renvoyée par Robothumb.com

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Zecat, 3 Mai 2010.

  1. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    Sur un site, j'ai besoin pour un usage spécifique de recupérer les vignettes retournées par robothumb (affichage en survol de souris qui implique de détenir l'image sur le serveur).

    Y a t il un moyen (automatique en php bien sur et pas à la mano) de recuprer une image et de la stocker sur son serveur ?

    Actuellement j'ai ca dans mon code :

    Code:
    <img border="0" cellspacing="0" cellpadding="0"src="http://www.robothumb.com/src/?url=xxxxxx.fr&size=120x90&alt=http://www.zzzzzz.com/blanc.jpg">
    
    Donc

    1 - détecter si vignette retournée
    2 - stocker vignette sur le serveur
     
  2. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    pour récupérer le contenu de l'image et vérifier qu'elle est bonne essaye avec :
    Code:
    if (($contenu_thumb = file_get_contents('http://www.robothumb.com/src/?url=xxxxxx.fr&size=120x90&alt=http://www.zzzzzz.com/blanc.jpg')) !== false) {
    	if ((($img_thumb = imagecreatefromstring($contenu_thumb)) !== false) &&(imagesx($img_thumb) == 120) && (imagesy($img_thumb) == 90)) {
    		//image OK...
    	}
    }
    Si file_get_contents ne marche pas il faut passer par curl
     
  3. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Euh... Pourquoi le fait de l'afficher en survol obligerait-il à l'avoir sur ton serveur?

    Sinon c'est pas bien compliqué: image=file_get_contents(url) puis file_put_contents(nomdefichier,image).

    Entre les deux tu peux comparer avec ton alt pour voir si c'est bien un thumb spécifique...

    Jacques.

    (grilled)
     
  4. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    Pour optimiser les perf et pas refaire un appel a robothumb de façon répétée

    Merci a tous les deux. je vais tester ca
     
  5. raljx
    raljx WRInaute passionné
    Inscrit:
    10 Juillet 2006
    Messages:
    2 064
    J'aime reçus:
    0
    et en couplant robothumbs avec url2jpeg puis mettre en cache ton image.
    bien entendu tu renseignes url2jpeg avec l'url de robothumbs
     
  6. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    Un peu usine a gaz tout ca ... je veux faire light ... :wink:
     
  7. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Salut, je m'incruste ^^,

    Et en utilisant la fonction fopen() -> découpe de l'url -> récupération du nom de l'image -> copie de l'image ??

    jcaron : tu as un bout de code avec file_put_contents() pour créer cette fameuse image ?
     
  8. lenono
    lenono WRInaute discret
    Inscrit:
    4 Septembre 2006
    Messages:
    71
    J'aime reçus:
    0
    Et pourquoi l'url de robothumbs :?: :?:
    S'il met en cache ses captures, il peut se passer de rbtt !! (Ou j'ai loupé quelquechose là :roll: )
     
  9. raljx
    raljx WRInaute passionné
    Inscrit:
    10 Juillet 2006
    Messages:
    2 064
    J'aime reçus:
    0
    si le site fait 2000px de haut url2jpeg shot tout ....
    EDIT : oui ben j'avais pas vu qu'on pouvait decouper en manuel ca va ca va ... :)
    donc le chat, url2jpeg pourrait faire l'affaire a la place de robothumbs
     
  10. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    a forty et jacques :

    Ca a pas l'air de le faire avec file get contents ...

    Le code est un copier coller du code fournit par forty ...
     
  11. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Ca doit vouloir dire qu'il n'aime pas les robots? C'est peut-être même interdit par ses conditions d'utilisation, non?

    Jacques.
     
  12. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 885
    J'aime reçus:
    74
    J'imagine que vu le service proposé, ils ont du mettre en place ce qu'il fallait pour ne pas qu'on puisse se passer aussi facilement d'eux que ça. Du moins pas en automatisant ce genre de requêtes.
     
  13. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    chez moi ca marche très bien avec curl.
     
  14. LinkMan
    LinkMan Nouveau WRInaute
    Inscrit:
    9 Octobre 2009
    Messages:
    44
    J'aime reçus:
    0
    ça marche chez moi avec ça :
    Code:
    $thumb = @file_get_contents($url);
    $handle = fopen('/images/machin.jpg','w');
    fwrite($handle, $thumb);
    fclose($handle);
    
    et pense à donner les droits en écritures dans ton dossier images ;)

    EDIT : pour ceux que ça intéressent. Et je viens encore de tester ça fonctionne

    + complet
    Code:
    <?php
    $thumb = @file_get_contents('http://www.robothumb.com/src/?url=http://www.yahoo.fr&size=320x240');
    $handle = fopen('machin.jpg','w');
    fwrite($handle, $thumb);
    fclose($handle);
    ?>
    Il faut juste que l'url soit bien formée et que votre dossier ou vous écrivez l'image est les droits suffisants.
     
  15. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    Mais c'ets pas un bot, c'est juste une mémorisation à la volée pour économiser de la ressources (la notre et la sienne d'ailleurs)
    Aucune cgu ne l'interdit sur le site (quasiment tous les annuaires mettent leurs thumb en cache je crois). Il est juste demandé (ce qui est normal) un bl vers robothumb.
     
  16. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    j'ai ca comme code pour récupérer le contenu de l'image :
    Code:
    function get_thumb($url, $referer = '') {
    	global $http_code, $content_type;
    	
    	if (($ch = curl_init($url)) === false) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'initialisation de la session cURL pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (!curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8')) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'ajout de l'option cURL USERAGENT pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (!curl_setopt($ch, CURLOPT_HEADER, false)) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'ajout de l'option cURL HEADER pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (!curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'ajout de l'option cURL RETURNTRANSFER pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (!curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'ajout de l'option cURL FOLLOWLOCATION pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (!curl_setopt($ch, CURLOPT_MAXREDIRS , 10)) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'ajout de l'option cURL MAXREDIRS  pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (!empty($referer)) {
    		if (!curl_setopt($ch, CURLOPT_REFERER, $referer)) {
    			$num_erreur = curl_errno($ch);
    			$text_erreur = curl_error($ch);
    			log_erreur("Erreur d'ajout de l'option cURL REFERER pour $url : $num_erreur : $text_erreur");
    			return false;
    		}
    	}
    	if (!curl_setopt($ch, CURLOPT_ENCODING, '')) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'ajout de l'option cURL ENCODING pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (!curl_setopt($ch, CURLOPT_TIMEOUT, 5)) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'ajout de l'option cURL TIMEOUT pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (($res = curl_exec($ch)) === false) {
    		$num_erreur = curl_errno($ch);
    		$text_erreur = curl_error($ch);
    		log_erreur("Erreur d'exécution cURL pour $url : $num_erreur : $text_erreur");
    		return false;
    	}
    	if (($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) <> 200) {
    		log_erreur("Erreur de code retour cURL pour $url : $http_code");
    		return false;
    	}
    	$content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
    	if ($content_type == 'text/html') {
    		return false;
    	}
    	curl_close($ch);
    	return $res;
    }
    Avec une petite pause entre deux récupérations :
    Code:
    sleep(1);
     
  17. LinkMan
    LinkMan Nouveau WRInaute
    Inscrit:
    9 Octobre 2009
    Messages:
    44
    J'aime reçus:
    0
    CF mon message précédant que j'ai édité.
     
  18. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    ca marche ... j'ai trouvé.

    J'avais laissé le alt dans l'url ... sans le alt tout rentre dans l'ordre (avec file_get_contents).

    Merci a tous et bon ben curl ca sera pour la prochaine progression de mon phprank :mrgreen:
     
  19. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 176
    J'aime reçus:
    0
    PS : au passage par rapport a ton code forty, j'ai fait l'economie du image create et du test des x y ...

    au profit d'un simple :

    if (strlen ($contenu_thumb) > 1000)
    ...

    quand c'est vide ca fait 535 octets ...
     
Chargement...
Similar Threads - Recupérer image renvoyée Forum Date
Récupérer src image GD Développement d'un site Web ou d'une appli mobile 5 Septembre 2015
Récupérer et enregistrer une image à partir d'un lien Développement d'un site Web ou d'une appli mobile 8 Janvier 2015
[RESOLU] récupérer les images d'un dossier en php Développement d'un site Web ou d'une appli mobile 29 Novembre 2014
Récupérer image via url Développement d'un site Web ou d'une appli mobile 29 Mars 2011
Search Console Sitemaps non indéxés ""Impossible de recuperer le sitemap" Crawl et indexation Google, sitemaps 23 Juillet 2020
Récupérer backlinks vers liens morts : fausse bonne idée ? Netlinking, backlinks, liens et redirections 6 Avril 2020
Récupérer le contenu d'une vidéo youtube Le café de WebRankInfo 23 Mars 2020
Comment récupérer un compte insta ouvert par un cybersquatteur ? Autres réseaux sociaux 29 Janvier 2020
comment récupérer mon positionnement Problèmes de référencement spécifiques à vos sites 5 Janvier 2020
Attendre des années avant de récupérer l'argent amassé sur adsense AdSense 23 Novembre 2019