Artisan Numérique

/web/bureautique/firefox/ Ajouter son propre automate de recheche à Firefox

La zone de recherche de FireFox est bien pratique, difficile de remettre cela en cause. Son seul problème est qu'il n'y a étrangement aucun moyen en standard pour ajouter des requêtes un peu exotiques. Voici donc comment faire.

Analyse de la requête Google

Dans le temps, il existait une extension pour faire ce qui suit, Open Search Fox, mais elle n'a pas été portée avec FireFox 3.0 et tout semble indiquer qu'elle ne le sera pas. Alors même s'il existe une autre extension du même genre ou si quelqu'un se décide à porter celle-là, autant savoir faire sans. Ceci d'autant plus que c'est assez simple.

Histoire de prendre un exemple, disons que je veuille utilisez les fonctions étendues de Google pour rechercher un projet Drupal particulier. Cela corresponds à taper dans Google site:drupal.org inurl:project webdav.

Lorsque vous avez lancé cette requête, vous obtenez avec la page de résultat, dans la barre d'adresse, quelque chose commençant par http://www.google.fr/search?q=site%3Adrupal.org+inurl%3Aproject+webdav. Oubliez le reste, cela n'a pas d'importance. Nous constatons donc que l'URL de la recherche est http://www.google.fr/search, qu'il y a un paramètre nommé q et que sa valeur est site%3Adrupal.org+inurl%3Aproject+webdav. Dans cette valeur, webdav sera par la suite à remplacer par le nom du projet que l'on va effectivement rechercher. Le début sera toujours le même.

Ajout de la requête

Pour mettre cette requête dans Firfox, il faut commencer par trouver le dossier de votre profile, généralement ~/.mozilla/firefox/XXXXX.default. Là se trouve le répertoire qui nous intéresse, searchplugins. Vous allez y créer un fichier drupal-projects.xml :

X.default/searchplugins/drupal-projects.xml"XXXX
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
  <ShortName>Drupal Projects</ShortName>
  <InputEncoding>UTF-8</InputEncoding>
  <Image width="16" height="16">http://drupal.org/misc/favicon.ico</Image>
  <Url type="text/html" method="GET" template="http://www.google.fr/search">
    <Param name="q" value="site%3Adrupal.org+inurl%3Aproject+{searchTerms}"/>
  </Url>
</SearchPlugin>

Avant de redémarrer FireFox, quelques explications s'imposent. Déjà ShortName représente comme on se l'imagine le nom qui apparaîtra dans la liste déroulante de FireFox. InputEncoding permet de passer à Google une chaînes avec les accents correctement encodés. Et enfin Image pointe sur l'URL de l'icône qui va illustrer notre requête.

La partie intéressante arrive avec Url. Il s'agit d'invoquer la méthode GET sur une URL donnée par l'attribut Template. Cela implique qu'il est parfaitement possible d'utiliser la méthode POST qui peut être nécessaire pour certain sites qui utilisent des formulaires de recherche complexes.

Ici l'URL de base de la recherche est donc http://www.google.fr/search. Maintenant, il reste encore à envoyer à Google le paramètre, q, c'est le rôle de la balise Param.

Comme nous l'avons vu plus haut, la valeur de q est composée de site%3Adrupal.org+inurl%3Aproject+, suivi du nom du projet à chercher. Ce nom est ici {searchTerms} qui indique à FireFox de placer là les mots que l'utilisateur a tapé avant de lancer la recherche. FireFox s'assure de la bonne conversion de la phrase, en convertissant, entre autre, les espaces par des +.

Et voilà, c'est tout. Redémarrez FireFox et la nouvelle recherche devrait apparaître prête à être utilisée.

Image embarquée

Ici, nous donnons l'URL de l'icône dans la balise Image, mais il est aussi possible de directement intégrer cette image au fichier XML. Pour cela il faut encoder le fichier d'origine en un fragment de texte encodé base64. Pas évident. Heureusement, il existe de petits outils en ligne comme ici, à qui l'on donne l'URL et qui nous renvoient un bloc de texte à coller directement dans le contenu de la balise Image. Dans notre cas, nous utiliserons http://drupal.org/misc/favicon.ico.

Conclusion

Cette syntaxe n'est pas une exclusivité de FireFox. En réalité ce dernier ne fait qu'exploiter le format OpenSearch qui a été conçu par A9, une filiale d'Amazon. Ce format permet non seulement d'ajouter des automates de recherche à un navigateur comme nous l'avons fait ici, mais aussi, et surtout, donne à un site la possibilité d'indiquer à un navigateur le moteur de recherche qui lui est le plus adapté. Comme pour les flux Atom ou RSS, cela se fait très simplement en incluant dans chaque page du site une balise link, comme par exemple :

<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Artisan Numérique" />

Du coup, lorsque le navigateur affiche cette page, il découvre cette balise et peut vous proposer d'ajouter ce nouveau moteur de recherche. Vous pouvez tester cela avec ce site. Allez dans la zone de recherche, déroulez la liste et vous devriez voir apparaître Ajouter "Artisan Numérique".