sudoc plus - technique

13
Sylvain Machefert Mai 2010 Présentation du projet Sudoc+ script greasemonkey d'enrichissement du Sudoc Introduction Ce document présente le fonctionnement du script Sudoc+ dont le but est d'enrichir l'interface web du sudoc 1 . Ce script est basé sur l'extension Greasemonkey (GM) disponible sur le navigateur web Mozilla Firefox 2 . Cette extension permet de modifier une page web en exécutant des scripts dédiés lors du chargement des pages, du côté client. Il existe plusieurs dizaines de milliers 3 de scripts dédiés permettant de : remplir automatiquement des formulaires, modifier l'apparence d'une page web, filtrer l'affichage de certains éléménts ... Sudoc+ est l'un de ces modules et propose d'ajouter à l'interface Web les fonctionnalités suivantes : Intégration de fils RSS Suggestions orthographiques pour les recherches sans résultats Géolocalisation des exemplaires disponibles Permalien sur les notices Affichage dès la notice bibliographique de la disponibilité dans une sélection personnalisée de bibliothèques Ce script a été développé à titre expérimental afin de mieux comprendre la structuration du Sudoc et afin de découvrir le développement de modules GM. Il est par conséquent totalement perfectible car développé avec un recul limité sur les technologies qu'il utilise. L'exécution de ce script s'effectue principalement sur le poste client mais certaines opérations nécessitant des traitements plus compliqués sont déléguées à des scripts php hébergés sur le serveur geobib.fr. On parlera dans la suite de ce documents de scripts côté serveur pour ce qui est éxecuté sur ce serveur. Organisation Afin de faciliter la diffusion et la configuration de ce script, une page web a été mise en place à l'adresse http://www.geobib.fr/sudoc . 1 http://www.sudoc.abes.fr 2 Il est possible d'utiliser cette technique sur d'autres navigateurs moyennant quelques adaptations qui n'ont pas été réalisées pour le moment. 3 http://userscripts.org/

Upload: sylvain-machefert

Post on 22-Apr-2015

4.347 views

Category:

Documents


4 download

DESCRIPTION

Présentation technique du projet Sudoc plus

TRANSCRIPT

Page 1: Sudoc plus - Technique

Sylvain Machefert Mai 2010

Présentation du projet Sudoc+script greasemonkey d'enrichissement du Sudoc

IntroductionCe document présente le fonctionnement du script Sudoc+ dont le but est d'enrichir l'interface web du sudoc1.

Ce script est basé sur l'extension Greasemonkey (GM) disponible sur le navigateur web Mozilla Firefox2. Cette extension permet de modifier une page web en exécutant des scripts dédiés lors du chargement des pages, du côté client.

Il existe plusieurs dizaines de milliers3 de scripts dédiés permettant de : remplir automatiquement des formulaires, modifier l'apparence d'une page web, filtrer l'affichage de certains éléménts ...

Sudoc+ est l'un de ces modules et propose d'ajouter à l'interface Web les fonctionnalités suivantes :

– Intégration de fils RSS

– Suggestions orthographiques pour les recherches sans résultats

– Géolocalisation des exemplaires disponibles

– Permalien sur les notices

– Affichage dès la notice bibliographique de la disponibilité dans une sélection personnalisée de bibliothèques

Ce script a été développé à titre expérimental afin de mieux comprendre la structuration du Sudoc et afin de découvrir le développement de modules GM. Il est par conséquent totalement perfectible car développé avec un recul limité sur les technologies qu'il utilise.

L'exécution de ce script s'effectue principalement sur le poste client mais certaines opérations nécessitant des traitements plus compliqués sont déléguées à des scripts php hébergés sur le serveur geobib.fr. On parlera dans la suite de ce documents de scripts côté serveur pour ce qui est éxecuté sur ce serveur.

OrganisationAfin de faciliter la diffusion et la configuration de ce script, une page web a été mise en place à l'adresse http://www.geobib.fr/sudoc.

1 http://www.sudoc.abes.fr

2 Il est possible d'utiliser cette technique sur d'autres navigateurs moyennant quelques adaptations qui n'ont pas été réalisées pour le moment.

3 http://userscripts.org/

Page 2: Sudoc plus - Technique

Cette page propose deux sections :

– installation :

– de l'extension greasemonkey, qui est le socle commun sur lequel on va pouvoir ajouter les modules dédiés aux sites web que l'on souhaite enrichir (renvoi vers le site officiel des extensions Firefox).

– du script Sudoc+ (sudoc_plus.user.js), qui vient se greffer sur GM pour permettre d'ajouter des fonctionnalités au catalogue web du sudoc (ce script est diffusé par l'intermédiaire de l'espace officiel de partage de scripts GM : http://userscripts.org4)

– configuration : permet de sélectionner les bibliothèques pour lesquels on souhaite connaître la disponibilité dès la notice bibliographique et les options que l'on souhaite activer.

Le scriptLe script GM est un script javascript qui suit un standard développé par les équipes développant l'extension firefox et qui permet de définir certains éléments de configuration dans l'en-tête.

// ==UserScript==// @name Sudoc plus// @author Sylvain Machefert (@symac)// @namespace http://geobib.fr// @description Script d'enrichissement du catalogue sudoc (suggestions orthographiques, recherche de localisations automatisée ...)// @include http://www.sudoc.abes.fr/*// @include http://corail.sudoc.abes.fr/*// @require http://www.geobib.fr/sudoc/js/jquery.tools.min.js// ==/UserScript==

Les éléments les plus importants de cette section sont les commandes @include qui permettent de définir les domaines sur lesquels ce script sera exécuté par GM. On a ici les deux urls par lesquelles on peut accéder au sudoc.

Il est aussi possible de définir à l'aide d'une commande @require l'intégration d'une bibliothèque javascript, et le choix a été fait ici d'utiliser la librairie jquery. Cette librairie sera téléchargée une fois seulement, au moment de l'installation du script. Il sera alors possible dans le script Sudoc+ de faire appel aux fonctionnalités de cette librairie qui permet de faciliter de nombreuses opérations javascript.

Configuration du scriptAfin de permettre une personnalisation maximale toutes les options sont configurables à travers une interface web.

Un cookie geobib.fr

Pour cela on a met en place un cookie au niveau de la machine cliente, associé au domaine www.geobib.fr. Pour des questions de sécurité il n'est en effet pas possible de créer un cookie associé au domaine www.sudoc.abes.fr. Au

4 http://userscripts.org/scripts/show/60741

Page 3: Sudoc plus - Technique

moment de l'exécution du script GM par le poste client, celui-ci va donc faire un appel ajax à une page web sur le domaine geobib.fr. Ce script étant sur le même domaine que le cookie, il pourra avoir accès à ce dernier, et le retournera dans un format lisible par le script GM (tableau Json).

Ce tableau permettra au script GM de connaître :

– La liste des bibliothèques préselectionnées

– Les fonctions activées (affichage des couvertures, des recommandations ...)

L'interface de configuration

L'interface permet de sélectionner les bibliothèques à partir de leurs intitulés. Le cookie stockera alors les libellés des bibliothèques mais aussi leurs numéros RCR. Cette interface est réalisée en PHP et plusieurs fonctions javascript permettent de faciliter les mises à jour sans recharger la page (déplacement dynamique des bibliothèques entre sélection / hors sélection, suggestion de bibliothèques en cours de frappe ...).

Les bibliothèques proposée sont issues d'un fichier Excel récupéré sur le site de l'ABES et qui fournit une correspondance entre numéro RCR et libellé5. Ce fichier a été transformé en fichier CSV pour faciliter sa lecture par le script PHP listeBibs.php. Ce script est appellée au cours de la frappe par une fonction Ajax qui passe la requête que l'utilisateur est en train de saisir. En retour listeBibs.php renvoie au format Json la liste des bibliothèques qui correspondent.

L'interface permet aussi d'activer / désactiver les autres options, chacune entraînant l'initialisation des valeurs du cookie à 0 (désactivé) ou 1 (activé).

Gestion des disponibilitésLa gestion des disponibilités depuis la notice bibliographique est faite principalement côté serveur. On passe à un script getDispos.php le ppn qui nous intéresse. Ce dernier va alors récupérer la page des localisations et la mettre en relation avec la liste des bibliothèques que l'on a préselectionnées. Il va alors renvoyer au script GM la préselection avec pour chaque site l'indication de la disponibilité du document.

On charge alors dans un tooltip cette liste et pour chaque site possédant le document, on ajoute un lien "+ d'infos". Une fonction javascript onclick présente sur ce lien entraîne un nouvel appel au script getDispos.php. On passe alors en plus du PPN de la notice le RCR du site qui nous intéresse. On ajoute dynamiquement dans le tooltip les informations détaillées (disponibilité pour le PEB, cote ...). Pour une illustration du fonctionnement, voir l'annexe 5.

GéolocalisationAfin de faciliter la localisation des exemplaires, une page web a été mise en place qui à partir d'un numéro PPN passé en paramètre affiche une carte de France avec un marqueur par bibliothèque possédant un exemplaire du

5 http://www.abes.fr/abes/documents/recherche/RCR-Intitule_abrege.xls

Page 4: Sudoc plus - Technique

document (cf. Annexe 4).

Cet affichage des marqueurs implique de connaître la localisation précise des bibliothèques. Le fichier des RCR récupéré auprès de l'Abes contenant plus de 3000 sites il n'est pas envisageable de rechercher leurs coordonnées un à un. Pour répondre à ce besoin nous avons donc utiliser un service de Google qui à partir d'une adresse postable va retourner les coordonnées géographiques du lieu. Ce service étant limité à un certain nombre de requêtes par jour et demandant un certain temps, les coordonnées ne sont demandées qu'une fois à Google et sont alors stockées dans une table de base de données sur le serveur geobib.

Les adresses des bibliothèques sont récupérées depuis la base de description des bibliothèques proposée par l'ABES. Le champ adresse postale est nettoyé d'un certain nombre d'informations qui perturbent le service de Google (boite postale, case courrier ...). Le taux de retour de Google est de plus de 90 % mais certaines erreurs subsistent. L'idéal pour ce service serait donc que les fiches descriptives des bibliothèques intègrent directement les coordonnées géographiques signalées par les établissements eux-même. On arrive néanmoins avec ce système et sans investissement particulier à un niveau de service correct.

Un utilisateur qui consulte une notice avec le script GM activé verra donc un lien supplémentaire apparaître qui lui proposera de voir les exemplaires disponibles sur une carte. Ce lien le renverra sur le script geobib.fr/carte.php auquel sera passé en paramètre le PPN de la notice qui nous intéresse. Le script carte.php récupèrera alors la page des localisations sur le site du sudoc (via une commande curl) et l'analysera pour récupérer la liste des établissements (en fait leurs numéros RCR) qui possèdent le document.

Les coordonnées de ces établissements seront alors récupérées (via le service Google maps si c'est la première fois que l'on cherche à afficher un exemplaire de ce site ou dans la base geobib.fr si on connaît déjà les coordonnées) et un marqueur sera ajouté sur la carte pour chacun des sites.

Si l'on clique sur un des marqueurs on relancera alors la récupération de la page des localisations en lui passant en argument le PPN et le RCR du site que l'on souhaite. On ajoutera alors dynamiquement dans l'infobulle sur la carte les informations détaillées pour l'exemplaire (disponibilité pour le PEB, cote ...).

Suggestion orthographiquesLes suggestions orthographiques sont récupérées directement depuis le poste client. Si l'on se retrouve sur une liste de réponses contenant zéro résultats, on va récupérer via une commande $.get en jquery le contenu de la page que fournit Google pour la même requête. On va alors parser cette page pour récupérer la zone que Google utilise pour nous suggérer une autre équation de recherche.

Si l'on trouve cette zone on va alors l'afficher chez l'usager dans la barre d'en-tête (cf. Annexe 1).

Page 5: Sudoc plus - Technique

Affichage des couverturesLe sudoc affiche déjà les couvertures issues du projet Google Books. Afin d'améliorer le taux de notices illustrées, le script GM ajoute la récupération des notices depuis le web service d'Amazon.

Afin d'améliorer la présentation des notices, on va dans tous les cas afficher la couverture à droite de la notice. (cf. Annexe 3).

Si la couverture Google Books est déjà présente on va la déplacer, s'il n'y en a pas on essaiera de récupérer une couverture Amazon. L'utilisation des web services d'Amazon nécessitant l'utilisation d'une clé et un cryptage précis, il n'est pas facile de le faire côté client. La totalité des interactions avec le web service d'Amazon se passe donc côté serveur à travers un script qui se nomme couv.php. On passe l'isbn de la notice source à ce dernier et on récupère les couvertures fournies par Amazon. On profite de cet appel pour récupérer les recommandations fournies par Amazon afin d'éviter un appel inutile à Amazon.

Autres éditions d'un ouvrage (via librarything)L'affichage d'un cadre contenant les autres éditions d'un ouvrage se fait en deux étapes.

Côté client

On lance une requête ajax sur le web service que propose librarything6 en lui passant en argument l'ISBN de la notice en cours (cette fonctionnaité ne fonctionne que pour les ouvrages possédant un ISBN). On récupère alors une réponse en xml qui va contenir les ISBN des autres éditions. On effectue cette opération du côté client car le nombre d'interrogations de ce service par adresse IP est limité à quelques centaines par jour et si on le faisait côté serveur on serait rapidement limité.

Côté serveur

On va ensuite passé cette liste d'ISBN à un script sur le serveur geobib.fr (xisbn.php). Ce script va alors lancer une interrogation du sudoc sur l'index ISBN pour récupérer la liste des notices présentes. On n'affichera alors à l'utilisateur que les éditions pour lesquelles on est en mesure de lui fournir une notice dans le sudoc.

On génère directement dans la page xisbn.php le code HTML qui va nous servir à afficher la liste des autres éditions à l'usager. Le script GM se contente alors de l'inclure dans la zone div prévue à cet effet à la fin de la notice bibliographique (cf. Annexe 6).

Recommandations (via Amazon)Les recommandations sont récupérées par le script côté serveur qui nous sert à interroger Amazon. Ce script prend en paramètre l'ISBN de l'ouvrage et renvoie le code HTML que l'on insèrera dans le div prévu à cet effet (cf. Annexe 6).

6 http://www.librarything.com/api/thingISBN

Page 6: Sudoc plus - Technique

Fil RSSLa gestion de flux RSS a été réalisée par Étienne Cavalié, auteur du blog Bibliothèques [reloaded]. Le script GM se contente donc de passer au yahoo pipe qu'il a réalisé la requête que l'on vient de passer au sudoc.

PermalienAfin de faciliter la citation des notices, le script GM propose l'ajout à la suite du PPN dans la notice d'un lien intitulé "Lien direct vers cette notice". Ce lien est un fait une interrogation de l'index PPN avec le PPN de la notice courante.

On peut imaginer aller plus loin en proposant d'ajouter à cette fonctionnalités des outils de type addthis qui permettent le partage d'une page web à travers une multitude d'outils (delicious, digg ...)

Page 7: Sudoc plus - Technique

Annexe 1 – Recherche sans résultats

Page 8: Sudoc plus - Technique

Annexe 2 – Liste de résultats

Page 9: Sudoc plus - Technique

Annexe 3 – Notice bibliographique enrichie

Page 10: Sudoc plus - Technique

Annexe 4 - Géolocalisation

Page 11: Sudoc plus - Technique

Annexe 5 – Disponibilités dans les bibliothèques préselectionnées

Page 12: Sudoc plus - Technique

Annexe 6 – Autres éditions et recommandations

Page 13: Sudoc plus - Technique

Annexe 7 – Schéma simplifié des flux