AbsysNET dans Chrome

Petit outil clé-en-main pour bien démarrer l’année universitaire…
Nous avons repris l’excellent billet de Lully pour l’adapter à notre catalogue absysNET et proposer une extension du navigateur Chrome permettant d’afficher, pour une requête Google, le nombre de résultats dans le catalogue local. Voici ce que cela donne en image :

Le nombre de résultats du catalogue dans la page Google : ici, BU Nice et BCU

Nous ne reprenons pas ici toutes les étapes de constitution de l’extension, puisque Lully l’a très bien fait. Nous nous contentons de livrer les fichiers adaptés aux catalogues absysNET (merci Mathieu) dans lesquels vous pourrez modifier les url et les libellés.

1. Récupérer l’ensemble des fichiers nécessaires

Nous avons mis à disposition sur notre serveur le fichier .zip qui contient les fichiers à modifier. Assurez-vous que vous pourrez placer sur un serveur PHP le script nb_res_bcu.php pour faire vos tests. Dézippez puis modifiez les codes comme suit.

  • Script nb_res_bcu.php (pour « nombre de résultats BCU ») : vous pourrez bien entendu renommer vos fichiers en changeant sudoc ou bcu le cas échéant.
function getUrl($url){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,$url);
 curl_setopt($ch, CURLOPT_HEADER, TRUE);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
 $res=curl_exec($ch);
 curl_close($ch);
 return $res;
}
 // Cette page va passer une requête au catalogue
//BCU pour récupérer le nombre de résultats
 if (!isset($_GET['q']))
 {
 print "Manque la requête en paramètre";
 exit;
 }
$q = $_GET['q'];
 $q = str_replace(" ", "+", $q);
// On récupère la page correspondant
//au résultat de cette requête
 $url = "http://195.221.120.229/cgi-bin/abnetclop?ACC=DOSEARCH&xsqf99=".$q; 
$res = getUrl($url);
 if (preg_match('/URL=(.*)"/', $res, $match))
 $new_url = 'http://195.221.120.229'.$match[1];
$res = getUrl($new_url);
 $tab_sortie = Array();
 if (preg_match(
'/Enregistrementss[0-9]+/[0-9]+sdes([0-9]+)/', $res, $match
))
 $tab_sortie["nb"] = $match[1];
 else
 $tab_sortie["nb"] = 0;
 print json_encode($tab_sortie);

Vous devez ici changer l’url de requête vers l’OPAC absysNET en modifiant la racine du serveur (votre adresse IP ou nom de domaine). La suite de l’url correspond aux paramètres de requête tout champ d’absysNET. Les lignes

 if (preg_match('/URL=(.*)"/', $res, $match))
 $new_url = 'http://195.221.120.229'.$match[1];

constituent une particularité d’absysNET car la page de requête génère une redirection (une page intermédiaire avant la page de résultats). Là aussi, modifiez la racine.

'/Enregistrementss[0-9]+/[0-9]+sdes([0-9]+)/', $res, $match

Cette ligne permet au script de déterminer, dans la page de résultats absysNET, où se trouve affiché le nombre de résultats. Si vous n’avez pas modifié le template standard de l’OPAC, pas de problème. Si oui, il faudra modifier la ligne de code en remplaçant tous les termes qui entourent votre nombre de résultats.

Vous pouvez maintenant déposer nb_res_bcu.php sur votre serveur PHP, de préférence dans un répertoire comme /BcuInGoogle/ puis faire des tests avec des requêtes comme http://biuintra.univ-bpclermont.fr/BcuInGoogle/nb_res_bcu.php?q=orwell. Vous vérifiez que le nombre de résultats est correct.

  • Fichier background.html

Vous modifiez l’url du script que vous venez de déposer (ligne 27)

var url = 'http://biuintra.univ-bpclermont.fr/BcuInGoogle/nb_res_bcu.php?q='+q;
  • Fichier sudoc_in_google.js

Vous modifiez les libellés relatifs à votre bibliothèque (lignes 22 et 32), l’icône logo.png qui se trouve dans le répertoire img de l’extension (remplacez par votre image 48 x 48), ainsi que l’url de requête vers l’OPAC (ligne 26).

  • Fichier manifest.json

Personnalisez votre extension en modifiant les lignes 2 et 4 et remplacez le nom de domaine de votre serveur à la ligne 17.

2. Empaqueter l’extension
Ouvrez Chrome et cliquez sur le bouton Clé anglaise. Dans le menu Outils, sélectionnez Extensions. Sur la page, ouvrez le mode développeur et cliquez sur le bouton Empaqueter l’extension. Choisissez le répertoire qui contient vos fichiers modifiés puis OK. 2 fichiers sont alors générés, dont un .crx qu’il faut placer sur votre serveur de manière à proposer le téléchargement de l’extension comme la nôtre !

Une limite importante à l’usage
L’extension fonctionne très bien sur la première recherche Google (les résultats peuvent s’afficher cependant avec une certaine lenteur en fonction de votre OPAC). En revanche, on n’obtient aucun résultat catalogue lorsqu’on modifie la requête. On s’aperçoit en effet que l’url de la page Google ne se rafraîchit pas correctement, la première requête étant conservée dans l’url. Donc, il faut toujours revenir à la page d’accueil Google pour faire une nouvelle recherche et bénéficier des résultats catalogue.


Publié par

Raphaële Bussemey

Littéraire de formation, bibliothécaire, j'ai été initiée aux joies de la documentation électronique et du web au SCD de Nancy I, au début des années 2000. De retour dans mon Auvergne natale, je m'occupe de l'administration du SIGB, de la gestion de documentation électronique, des accès et de l'intégration des contenus dans les outils de médiation (catalogue, résolveur)... et ma tasse à café ne me quitte jamais.

4 réflexions au sujet de « AbsysNET dans Chrome »

  1. Bonjour,
    je me suis replongé sur cette question dans le cadre d’un autre projet et une solution est de surveiller l’évènement DOMAttrModified et de lancer le recalcul lorsque event.target.id vaut foot (correspond à

    window.addEventListener(‘DOMAttrModified’, function (event) {
    if (event.target.id == ‘foot’) {
    // relancer la mise à jour;
    }
    }, false);

    J’ai trouvé cela dans un script sur userscripts : http://userscripts.org/scripts/review/105982 et ça a l’air de fonctionner à première vue.

      1. Pas pour le moment non, j’avais fait cette extension plus comme une proof of concept, je suis en train de développer quelque chose d’un peu plus complet sur notre nouveau catalogue babord+, j’ai commencé par une extension Firefox, je la porterai surement sur Chrome par la suite.

  2. Bonjour,
    félicitations pour cette adaptation ! J’avais en effet identifié ce bug de changement de page et tenté de le résoudre mais ces essais étaient restés vains.
    Cette nouvelle implémentation m’incite à chercher à nouveau. Si vous trouvez des pistes de votre côté ça m’intéresserait de les connaître.

    Sylvain

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *