Codelab, Bonsoir.
Un conseil ? ou même une petite aide vu notre niveau en php au Beaux Arts de Marseille ?
Présentation d'abord , nos pistes ensuite :
L'idée est de fabriquer une machine autonome, elle pioche aléatoirement et en continu des images sur Google.
Chaque image est imprimée automatiquement. A l'issue de l'impression un destructeur découpe la feuille en bandelettes de 7mm, lesquelles s’entassent au sol.
Le bricolage avance :
(la broyeuse arrive demain)
Là ou je bloque :
Ce code devrait pouvoir interroger le serveur google :
<?php //http://www.google.com/images?q=neant&start=33&gbv=1 function GetRandomImageURL($topic='', $min=0, $max=100) { // get random image from Google if ($topic=='') $topic='image'; $ofs=mt_rand($min, $max); $geturl='http://www.google.com/images?q=' . $topic . '&start=' . $ofs . '&gbv=1'; $data=file_get_contents($geturl); $f1='<div id="center_col">'; $f2='<a href="/imgres?imgurl='; $f3='&imgrefurl='; $pos1=strpos($data, $f1)+strlen($f1); // if ($pos1==FALSE) return FALSE; $pos2=strpos($data, $f2, $pos1)+strlen($f2); // if ($pos2==FALSE) return FALSE; $pos3=strpos($data, $f3, $pos2); // if ($pos3==FALSE) return FALSE; return substr($data, $pos2, $pos3-$pos2); echo("yolo"); } ?>
Celui-ci interpréter le résultat pour l'imprimer :
<?php function ShowRandomImage($topic='') { echo('<table border="1"><tr><td>'); $url=GetRandomImageURL($topic); if ($url==FALSE) echo('Error while searching'); else { echo(htmlentities($url) . '<br />'); echo('<img width="640" src="' . $url . '" />'); } echo('</td></tr></table>'); } ShowRandomImage(); ShowRandomImage('rothschild'); ?>
Que faire avec tout ça ?
Kevin est en train d'installer Php.ini sur notre serveur (TAK pour Tom,Aurel,Kevin)
Comment obtenir une url en se basant sur une recherche ? (topic)
Comment rendre cette recherche aléatoire et donc remplacer le topic par 6 lettres n'ayant rien à voir?
une requête tel que
http://www.google.com/images?q=kjsbrp&a … &gbv=1
nous convient tout à fait.
et enfin, Comment imprimer, environ deux images par minutes automatiquement . javascript? pictbridge?
Bien à vous depuis Marseille,
C'est vrai que tout ça fait beaucoup, mais ne serait-ce qu'un petit aiguillage nous fera avancer à grand pas.
à bientôt !
Tom.
Hors ligne
Hors ligne
Je ne connais pas le PHP, mais en python, j'ai un petit script qui permet de remplir des dossier d'images en fonction de requêtes effectuées sur google image...
Ce n'est pas du code bulletproof, mais ça marche...
http://codelab.fr/3112
Bon courage
Hors ligne
arfff
cela me donne plein d'idées!!!!
bon pourquoi choisir le php ?
en python ou en bash, cela sera bcp plus facile.
je ne reprends pas le script d'olivier mais il doit être très bien aussi.
alors par exemple avec ceci
http://adrienbailly.wordpress.com/2009/ … le-images/
tu le modifies légerement avec la modification de keywords par un générateur de random strings
pass=</dev/urandom tr -dc A-Za-z0-9 | head -c $randompassLength
pour le déclencher tous les minutes, tu le places dans une crontab
http://www.thegeekstuff.com/2011/07/cro … 5-minutes/
sinon
c dommage d'etre aussi brute dans la démarche.
il y a plein de choses éphémeres qui sont détruites dans l'instant que vous auriez pu matérialiser.
Hors ligne
Et pourquoi pas en php?
Il ne manque preque rien pour que ça marche, juste un peu de glue, voila le code complet ci-dessous. Le copier dans un fichier, par exemple randomimage.php
Et après on peut l'appeler de deux manières :
Soit randomimage.php : et dans ce cas topic sera une chaine de 6 caractères au hasard dans l'alphabet (fonction RandomTopic)
Soit randomimage.php?topic=codelab qui enverra la requête de recherche 'codelab' à google images
Le résultat sera une image au hasard avec la requête parmi les 100 premières images de résultat (ça peut se modifier en envoyant des paramètres $min et $max à GetRandomImageURL)
<?php $topic = $_GET["topic"]; function GetRandomImageURL($topic='', $min=0, $max=100) { // get random image from Google if ($topic=='') $topic='image'; $ofs=mt_rand($min, $max); $geturl='http://www.google.com/images?q=' . $topic . '&start=' . $ofs . '&gbv=1'; $data=file_get_contents($geturl); $f1='<div id="center_col">'; $f2='<a href="/imgres?imgurl='; $f3='&imgrefurl='; $pos1=strpos($data, $f1)+strlen($f1); // if ($pos1==FALSE) return FALSE; $pos2=strpos($data, $f2, $pos1)+strlen($f2); // if ($pos2==FALSE) return FALSE; $pos3=strpos($data, $f3, $pos2); // if ($pos3==FALSE) return FALSE; return substr($data, $pos2, $pos3-$pos2); } function ShowRandomImage($topic='') { echo('<table border="1"><tr><td>'); $url=GetRandomImageURL($topic); if ($url==FALSE) echo('Error while searching'); else { echo(htmlentities($url) . '<br />'); echo('<img width="640" src="' . $url . '" />'); } echo('</td></tr></table>'); } function RandomTopic() { $alphabet = "abcdefghijklmnopqrstuvwxyz"; $topic = ''; for ($i=0; $i < 6; $i++) { $topic .= substr($alphabet, rand(0, strlen($alphabet) - 1), 1); } return $topic; } if ($topic == '') $topic = RandomTopic(); ShowRandomImage($topic); ?>
Hors ligne
Pour l'impression automatique, javascript ne suffira pas car c'est possible de déclencher une impression automatiquement depuis le navigateur avec
<script type="text/javascript"> <!-- window.onload = function() { window.print(); } //--> </script>
Mais, la fenêtre d'options d'impression apparaîtra et nécessitera un clic.
Peut-être enregistrer l'image dans un dossier sur le disque dur (c'est possible en php) et lancer un truc automatique qui regarde ce dossier, imprime la nouvelle image avant de l'effacer. Avec automator si vous êtes sur mac?
Hors ligne
olalala la galère.
sous Linux et en bash tu peux imprimer avec un lpr -P ( sans avoir besoin d'installer toute la couche Xwindows et firefox ).
et tu peux aussi effacer toutes les images avec un rm ( ce que tu ne peux pas faire en php ).
bref camarade choisis le bash ( ou python )
Hors ligne
YES !
Que d’engouement on ne pouvait rêver mieux,
merci à vous trois.
On en est là pour l'instant :
http://tomrider.fr/randim.php
avec une réactu toutes les 10sec, et nos six lettres aléatoires grâce à Emoc, Merci !
le javascript fonctionne et nous ouvre une boite de dialogue mais n'est-ce pas une piste plus simple que de passer par un enregistrement / impression / suppression sur notre machine (mac ou pc)
on butine on butine...
<?php $topic = $_GET["topic"]; function GetRandomImageURL($topic='', $min=0, $max=100) { // get random image from Google if ($topic=='') $topic='image'; $ofs=mt_rand($min, $max); $geturl='http://www.google.com/images?q=' . $topic . '&start=' . $ofs . '&gbv=1'; $data=file_get_contents($geturl); $f1='<div id="center_col">'; $f2='<a href="/imgres?imgurl='; $f3='&imgrefurl='; $pos1=strpos($data, $f1)+strlen($f1); // if ($pos1==FALSE) return FALSE; $pos2=strpos($data, $f2, $pos1)+strlen($f2); // if ($pos2==FALSE) return FALSE; $pos3=strpos($data, $f3, $pos2); // if ($pos3==FALSE) return FALSE; return substr($data, $pos2, $pos3-$pos2); } //montrer function ShowRandomImage($topic='') { echo('<table border="0"><tr><td>'); $url=GetRandomImageURL($topic); if ($url==FALSE) echo('Error while searching'); else { echo('<img width="640" src="' . $url . '" />'); } } function RandomTopic() { $alphabet = "abcdefghijklmnopqrstuvwxyz"; $topic = ''; for ($i=0; $i < 6; $i++) { $topic .= substr($alphabet, rand(0, strlen($alphabet) - 1), 1); } return $topic; } if ($topic == '') $topic = RandomTopic(); ShowRandomImage($topic); ?> <head> <META HTTP-EQUIV="Refresh" CONTENT="10; URL=http://tomrider.fr/randim.php"> </head>
ps : les pythons nous font un peu peur ici..
Hors ligne
Si vous voulez m'expliquer le message d'erreur je suis preneur !
http://tomrider.fr/random.php
En gros, on arrive pas à enregistrer en local...
Hors ligne
quand je vous disais de pas faire de php!!!
sinon c possible qu'il manque votre login:pass pour le ftp dans votre url
Hors ligne
TAK a écrit:
Si vous voulez m'expliquer le message d'erreur je suis preneur !
http://tomrider.fr/random.php
En gros, on arrive pas à enregistrer en local...
Problème de chemin, la version en ligne semble tenter d'enregistrer avec un chemin local ( HD/Users/etc. ) alors qu'elle est sur un serveur où ce chemin n'existe pas. Il vaudrait mieux mettre un chemin relatif.
Jessica Nichenin a écrit:
quand je vous disais de pas faire de php!!!
Pourquoi cet acharnement contre PHP ? On peut enregistrer un fichier en php, sisi!
Hors ligne
emoc a écrit:
Jessica Nichenin a écrit:
quand je vous disais de pas faire de php!!!
Pourquoi cet acharnement contre PHP ? On peut enregistrer un fichier en php, sisi!
oui mais on peut pas imprimer et c tout de suite plus lourd. le php sert pas à cela.
Hors ligne
ça avance !
on a le chemin , avec automator on peut imprimer via le serveur sans soucis.
Par contre, Emoc peux tu nous dire comment renommer l'image telechargée pour qu'elle ecrase l'image precedente ?
Hors ligne
TAK a écrit:
Par contre, Emoc peux tu nous dire comment renommer l'image telechargée pour qu'elle ecrase l'image precedente ?
Tout simplement, en lui donnant le même nom,
$name = "image";
plutot que
$name = array_pop($exp);
mais ça risque de poser un problème, si il y a des gif, png, jpg, il faudra peut-être convertir ?
Hors ligne
re salut!
on a réglé le problème du nom de l'image: $name=img.jpg, merci beaucoup.
Nouveau problème: comment imprimer l'image récupérée toute les 20 seconde automatiquement depuis le serveur sans la boite de dialogue d'impression. On a essayé avec Automator mais puisque l'image est changée continuellement il ne la trouve pas et il nous met toujours la boite de dialogue d'impression.
peut etre avec flash: printjob() ?
Hors ligne
Pages: 1 2