Page 1 sur 1

Recuperer image sur moteur de google

Posté : 12 nov. 2013, 12:34
par sax76
bonjour à tous

je me tourne vers vous car un peu perdu dans le domaine des socket je dois l'avouer

je cherche une script capable a partir d'une $var : "Interprete titre" , c'est pour une webradio , systeme titrage avec pochette , et la BDD est importante :) je voudrais automatiser la recherche et
aller chercher sur le moteur de google l'image et prendre que la premiere reponse , à 99.99% des cas c'est la bonne
et une fois trouver la stocker (ça je sais faire )

par si la $var est "toto visitors"
je voudrais generer ce lien
https://www.google.com/search?q=rodney+ ... ch&imgdii=_
et prendre la premiere image qui s'affiche uniquement

mais c'est la partie moteur ou la ...... néant total :(

j'ai trouvé un code qui ressemble a ce que je veux mais va chercher sur caramania mais trop 2% des pochettes et il s'agit tres souvant de best of pour la pochette
<?
$srv_t = '2'; ### 1 = Radionomy // 2 = SHOUTcast // 3 = Icecast ###
$uid_r = ''; ### Radio UID Radionomy ###
$srv_ip = 'Ton IP'; ### IP/URL du serveur ###
$srv_port = 'Ton Port'; ### PORT du serveur ###
$srv_mount = ''; ### MOUNT du serveur Icecast ###
$cache = './cache.txt'; ### Fichier de cache local ###
$cache_c = './cache_call.txt'; ### Fichier de cache_call local ###


##################################
####### NE PAS MODIFIER ! #######
##################################
$date = '-1';
if($lines = file($cache_c)){$date = (isset($lines[1]) ? $lines[1] : '-1'); $time = $lines[0]; $expire = time() - $time;} else {$expire = time() - 1;}
if(@file_exists($cache) && $date > $expire && file_get_contents($cache) != ''){
$xml = @simplexml_load_file($cache);
$artist = trim($xml->track->artist);
$title = trim($xml->track->title);
$current = trim($xml->track->current);
$current_peak = trim($xml->track->current_peak);
$cover = trim($xml->track->cover);
} else {
@file_put_contents($cache_c, '200'."\n".time());
$context = stream_context_create(array('http' => array('timeout' => 3)));
touch($cache);
$xml = @file_get_contents('http://api.caramania.net/?srv_t='.$srv_t.'&uid_r='.$uid_r.'&srv_ip='.$srv_ip.'&srv_port='.$srv_port.'&srv_mount='.$srv_mount,0, $context);
if(!$xml){
$xml = @simplexml_load_file($cache);
} else {
@file_put_contents($cache, $xml);
$xml = @simplexml_load_file($cache);
$expire_n = ($xml->track->callmeback / 1000);
if($expire_n < 10) $expire_n = 30;
@file_put_contents($cache_c, $expire_n."\n".time());
}
$artist = trim($xml->track->artist);
$title = trim($xml->track->title);
$current = trim($xml->track->current);
$current_peak = trim($xml->track->current_peak);
$cover = trim($xml->track->cover);
}
##################################
?>

Artiste : <?php print $artist; ?>
Title : <?php print $title; ?>
Auditor : <?php print $current; ?>
Auditor_peak : <?php print $current_peak; ?>
Cd Cover : <?php print $cover; ?>

<?php print $artist; ?> - <?php print $title; ?>
ou une piste pour m'orienter vers se que je cherche

cdt

Re: Recuperer image sur moteur de google

Posté : 12 nov. 2013, 12:57
par Mazarini
$xml = @file_get_contents('http://api.caramania.net/?zrv_t='.$srv_t.'&uid_r='.$uid_r.'&srv_ip='.$srv_ip.'&srv_port='.$srv_port.'&srv_mount='.$srv_mount,0, $context);
1) Il faut changer cette ligne pour mettre celle d'une recherche dans les images google (pas évident)
2) Ensuite, il faut réécrire l'analyse de la page pour retrouver l'url de la première image (ce que je n'ai pas réussi "visuellement", ce n'est pas gagné).

Tant que tu ne sauras pas le faire "à la main", c'est pas la peine d'essayer en PHP.

Edit : je suppose que l'url que tu donne en exemple est un copié/collé venant du navigateur.

Re: Recuperer image sur moteur de google

Posté : 12 nov. 2013, 13:22
par sax76
$xml = @file_get_contents('http://api.caramania.net/?zrv_t='.$srv_t.'&uid_r='.$uid_r.'&srv_ip='.$srv_ip.'&srv_port='.$srv_port.'&srv_mount='.$srv_mount,0, $context);
1) Il faut changer cette ligne pour mettre celle d'une recherche dans les images google (pas évident)
2) Ensuite, il faut réécrire l'analyse de la page pour retrouver l'url de la première image (ce que je n'ai pas réussi "visuellement", ce n'est pas gagné).

Tant que tu ne sauras pas le faire "à la main", c'est pas la peine d'essayer en PHP.

Edit : je suppose que l'url que tu donne en exemple est un copié/collé venant du navigateur.
je cherche justement a la main
l'url donné oui est faite a la main via mon navigateur

je test cette idée aussi
<?php
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'https://www.google.fr/search?safe=off&hl=fr&site=imghp&tbm=isch&source=hp&biw=1920&bih=979&q=johnny+hates+jazz+-+i+don+t+want+to+be+a+hero&oq=johnny+hates+jazz+-+i+don+t+want+to+be+a+hero&gs_l=img.3..0i10i19.1252.1252.0.2098.1.1.0.0.0.0.86.86.1.1.0....0...1ac.1.31.img..0.1.85.rAJqcXxdthU');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/5.0');
$query = curl_exec($curl_handle);
curl_close($curl_handle);

$query =  htmlentities($query);

echo $query;
?>
peut etre une autre piste plus simple car j'ai la page complete affiché
reste a trouvé le moyen de chopé la bonne url

Re: Recuperer image sur moteur de google

Posté : 12 nov. 2013, 13:51
par moogli
Salut,


Pourquoi ne pas voir il y a une native tout simplement ?

https://www.google.fr/search?q=google+i ... age+php+ap

Il y a une api js et des exemples avec php (lien comme le lien stackoverflow ;)

Au final c'est plus simple, plus performant et tu ne risque pas d'avoir des soucis avec Google s'il n'apprécie pas le parse de ses pages par tout le monde ;)


@+

Re: Recuperer image sur moteur de google

Posté : 13 nov. 2013, 00:24
par sax76
Salut,


Pourquoi ne pas voir il y a une native tout simplement ?

https://www.google.fr/search?q=google+i ... age+php+ap

Il y a une api js et des exemples avec php (lien comme le lien stackoverflow ;)

Au final c'est plus simple, plus performant et tu ne risque pas d'avoir des soucis avec Google s'il n'apprécie pas le parse de ses pages par tout le monde ;)


@+

merci pour l'idée
j'ai reussi a coder ce que je voulais en partant de ton url :)
c'est du simple mais ca marche , reste a coder la partie sauvegarde des images :)

me suis servis de la premiere partie du code pour recuperer mon Chanteur - Titre
puis le second code avec le curl_ et une fois qu'on sait se qu'on doit chercher dans la page de google
on fait le tri et on garde ce dont on a besoin : juste le lien de l'image , la vrai :)

finalement une fois qu'on a l'idée manuel , ca devient plus simple
mais bon le second partie avec le curl_ je connaissait pas , j'aurais appris un truc :)

merci pour l'aide

cdt

Re: Recuperer image sur moteur de google

Posté : 14 nov. 2013, 12:34
par sax76
Au final c'est plus simple, plus performant et tu ne risque pas d'avoir des soucis avec Google s'il n'apprécie pas le parse de ses pages par tout le monde ;)
voila pour eviter les soucis de flooder le moteur a chaque rafraichissement des pochettes j'ai modifié le code

en premier le script va cherche s'il existe une pochette du meme nom que le titre avec ext .jpg dans le fichier /pochettes
si il la trouve pas il va la chercher sur le moteur et l'enregistrer dans /pochettes
et leur du prochain rafraichissement de la pochette , il va en premier (comme toujours) chercher dans /pochettes et cette fois elle y sera
la procedure stop la et affiche la pochette du dossier :)

fais tourner le script 12h environ 160 chansons de passé et donc 160 pochettes enregistrer en auto
j'ai du en modifier 10 a la main , pas mal je trouve :)