Un
Googlefight
consiste a comparer le nombre de résultats de deux requêtes
données, celui recevant le plus de réponses étant
déclaré "vainqueur". Voici le code de notre
googlefight:
(fichier googlefight.php)
<html>
<body>
<form method="post" action="<?=$PHP_SELF ?>">
<input type="text" name="combattant1">
<input type="text" name="combattant2">
<input type="submit" name="Submit" value="Ready ?
FIGHT !">
</form>
<?php
if (isset($combattant1) && $combattant1 != "")
{
if (isset($combattant2) && $combattant2 != "")
{
include("nusoap.php");
$soapclient = new soapclient("http://api.google.com/search/beta2");
$params1 = array(
'key' => 'VOTRE-CLE-GOOGLE',
'q' => $combattant1,
'start' => 0, 'maxResults'
=> 10,
'filter' => false,
'restrict' => '',
'safeSearch' => false,
'lr' => '',
'ie' => '',
'oe' => ''
);
$params2 = array(
'key' => 'VOTRE-CLE-GOOGLE',
'q' => $combattant2,
'start' => 0,
'maxResults' => 10,
'filter' => false,
'restrict' => '',
'safeSearch' => false,
'lr' => '',
'ie' => '',
'oe' => ''
);
$result1 = $soapclient->call("doGoogleSearch",
$params1, "urn:GoogleSearch", "urn:GoogleSearch");
$result2 = $soapclient->call("doGoogleSearch",
$params2, "urn:GoogleSearch", "urn:GoogleSearch");
$nbr1 = $result1['estimatedTotalResultsCount'];
$nbr2 = $result2['estimatedTotalResultsCount'];
?>
<hr>
<?
if ($result1['faultstring'] || $result2['faultstring'])
{
?>
Erreur: <?=$result1['faultstring'];?> <?=$result2['faultstring'];?>.
<?
}
elseif (($nbr1 == 0) && ($nbr2 == 0))
{
?>
Votre combat n'a pas donné de résultat.
<?
}
else
{
switch (bccomp($nbr1,$nbr2))
{
case 1:
?>
Le gagnant est "<?=$combattant1;?>", avec environ <?=$nbr1;?>
résultats. <br>
Le perdant, "<?=$combattant2;?>", n'a obtenu qu'environ <?=$nbr2;?>
résultats.<br>
Il y a environ <?=$nbr1-$nbr2;?> résultats de différence.
<?
break;
case -1;
?>
Le gagnant est "<?=$combattant2;?>", avec environ <?=$nbr2;?>
résultats.<br>
Le perdant, "<?=$combattant1;?>", n'a obtenu qu'environ <?=$nbr1;?>
résultats.<br>
Il y a <?=$nbr2-$nbr1;?> résultats de différence.
<?
break;
case 0;
?>
Incroyable ! Il y a égalité, avec <?=$nbr1;?> résultats des
deux cotés !
<?
break;
}
?>
<br>
Le combat a duré
<?=$result1['searchTime'] > $result2['searchTime'] ? $result1['searchTime']
: $result2['searchTime'];?>
secondes.
<?
}
}
}
?>
</body>
</html>
Il faut bien
entendu savoir que, du fait que nous faisons ici deux requêtes
(une pour chaque "combattant"), nous ne pouvons utiliser
ce script au maximum que 500 fois par jour...
Si vous avez
compris les deux exemples précédents, celui-ci ne
devrait vous poser aucun problème: après avoir parametré
les deux requêtes et reçu les deux réponses
dans deux tableaux $params1 et $params2,
nous affichons les résultats du "combat" à
l'aide d'une structure de contrôle switch()
et de la fonction mathématique bccomp(),
qui fait partie de la bibliothèque standard BCMATH
et permet de comparer deux nombres.
Pour l'anecdote, nous faisons aussi usage de la valeur contenue
dans le searchTime renvoyé
par chaque requête, afin d'afficher la durée du "combat".
Nous avons fait là un tour relativement complet de ce que
l'on pouvait faire de l'API Google. Libre à vous d'y trouver
de nouvelles utilisations, et de combiner ce service avec d'autres,
comme, par exemple, Book
Watch qui utilise plusieurs services pour:
1) afficher les livres dont on parle sur les blogs
2) ajouter des liens avec le catalogue Amazon avec l'API Amazon
3) trouver les informations en rapport avec chaque livre via l'API
Google...
Tous les codes
sources sont en ligne.
Page 1 | 2
| 3
|