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 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 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/
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 script
Le 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 script
Afin 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
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és
La 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éolocalisation
Afin 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
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 orthographiques
Les 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).
Affichage des couvertures
Le 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 librarything 6 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
Fil RSS
La 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.


Permalien
Afin 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 ...)
Annexe 1 – Recherche sans résultats
Annexe 2 – Liste de résultats
Annexe 3 – Notice bibliographique enrichie
Annexe 4 - Géolocalisation
Annexe 5 – Disponibilités dans les bibliothèques préselectionnées
Annexe 6 – Autres éditions et recommandations
Annexe 7 – Schéma simplifié des flux

Contenu connexe

PDF
Super kebab nfe103
PDF
PostgreSQL sous linux
ODP
#7 Migration
PDF
les français et les entrepreneurs
PDF
PDF
Impact de la Loi #Macron sur le notariat
PPT
Facebook usage and happiness
PPTX
Open Café #2
Super kebab nfe103
PostgreSQL sous linux
#7 Migration
les français et les entrepreneurs
Impact de la Loi #Macron sur le notariat
Facebook usage and happiness
Open Café #2

En vedette (15)

PDF
Apdpresinst mai 2013
PPSX
13conseilspourlavie2
PPS
Beaute Sauvage
PDF
MAMAU_Pitch_DEF_
PPS
Ilusiones Opticas
PPT
Joe & Mathew French Shop Keeper Customer
PPTX
Afcas Dossier Sponsoring
PPTX
OI MODULES
PPS
Tibet le-train_le_+_haut_du_monde (1)
PPT
St val gifts
PDF
Services for Realtors
PDF
Journée PluriTAL 2012 - Ivan Smilauer
PPT
Joanna & Millie French Shop!!Xxx
PDF
PC DOS.PDF
PPT
Ile de Re, Ars de Re
Apdpresinst mai 2013
13conseilspourlavie2
Beaute Sauvage
MAMAU_Pitch_DEF_
Ilusiones Opticas
Joe & Mathew French Shop Keeper Customer
Afcas Dossier Sponsoring
OI MODULES
Tibet le-train_le_+_haut_du_monde (1)
St val gifts
Services for Realtors
Journée PluriTAL 2012 - Ivan Smilauer
Joanna & Millie French Shop!!Xxx
PC DOS.PDF
Ile de Re, Ars de Re
Publicité

Similaire à Sudoc plus - Technique (20)

PDF
Flex, une techno RIA incontournable pour les futures app web ?
PPT
Systèmes de Gestion de Contenu (SGC)
PPTX
Presentation Symfony2
PDF
Js cours
PDF
Une application mobile avec les webservices Koha
PPTX
2013 01-08-php-maturite
PPT
Présentation GWT et HTML 5 pour l'Offline
PPT
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
PPTX
Front end, une île qui mérite d'être visitée
PDF
Fascicule de tp atelier développement web
PPT
SAPIENS2009 - Module 4B
PDF
Vbscript
PDF
Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3
PPT
Presentation d'une Formation du language avencer php.ppt
PDF
cours-gratuit.com--coursMySql-id2218.pdf
PDF
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
PDF
Introduction à Symfony2
PPT
hassclic270.ppt
PDF
Flex4.5 air3.0
DOCX
Installation et configuration d'openbravo
Flex, une techno RIA incontournable pour les futures app web ?
Systèmes de Gestion de Contenu (SGC)
Presentation Symfony2
Js cours
Une application mobile avec les webservices Koha
2013 01-08-php-maturite
Présentation GWT et HTML 5 pour l'Offline
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Front end, une île qui mérite d'être visitée
Fascicule de tp atelier développement web
SAPIENS2009 - Module 4B
Vbscript
Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3
Presentation d'une Formation du language avencer php.ppt
cours-gratuit.com--coursMySql-id2218.pdf
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Introduction à Symfony2
hassclic270.ppt
Flex4.5 air3.0
Installation et configuration d'openbravo
Publicité

Plus de Sylvain Machefert (20)

PDF
Improving modern art articles on wikipedia, a partnership between Wikimédia F...
PDF
OpenData : Kézako
PDF
Open Access - Quel intérêt pour le doctorant ?
PDF
Recherche d'images librement utilisables sur Internet : atelier
PDF
Présentation de Wikipédia en 10 diapositives (Angers en biens communs)
PDF
Présentation de Babord+ (interne Bordeaux 3)
PDF
Présentation résolveur de liens
PDF
Présentation Omeka - Journée ARPIST, juin 2013
PDF
Notes sur l'atelier firefox
PDF
Atelier Firefox - Trucs & Astuces
PDF
Wikipedia, une encyclopédie collaborative (février 2013)
PDF
Informatique documentaire - Cours Licence pro bib 2013 (journée 2)
PDF
Informatique documentaire - Cours Licence pro bib 2013
PDF
1886 - Présentation à la journée réseau des bibliothèques (10/12/2012)
PDF
Tour d'horizon des fonctionnalités de Zotero 3
PDF
Journées Abes 2012 - Présentation bordeaux 3
PDF
Factiva - Présentation interne Bordeaux 3
PDF
Zotero en 30 minutes
PDF
Wikis & wikipédia du point de vue du bibliothécaire
PDF
Web 2.0 en bibliothèque - éléments de réflexion
Improving modern art articles on wikipedia, a partnership between Wikimédia F...
OpenData : Kézako
Open Access - Quel intérêt pour le doctorant ?
Recherche d'images librement utilisables sur Internet : atelier
Présentation de Wikipédia en 10 diapositives (Angers en biens communs)
Présentation de Babord+ (interne Bordeaux 3)
Présentation résolveur de liens
Présentation Omeka - Journée ARPIST, juin 2013
Notes sur l'atelier firefox
Atelier Firefox - Trucs & Astuces
Wikipedia, une encyclopédie collaborative (février 2013)
Informatique documentaire - Cours Licence pro bib 2013 (journée 2)
Informatique documentaire - Cours Licence pro bib 2013
1886 - Présentation à la journée réseau des bibliothèques (10/12/2012)
Tour d'horizon des fonctionnalités de Zotero 3
Journées Abes 2012 - Présentation bordeaux 3
Factiva - Présentation interne Bordeaux 3
Zotero en 30 minutes
Wikis & wikipédia du point de vue du bibliothécaire
Web 2.0 en bibliothèque - éléments de réflexion

Sudoc plus - Technique

  • 1. 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 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 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/
  • 2. 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 script Le 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 script Afin 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
  • 3. 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és La 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éolocalisation Afin 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
  • 4. 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 orthographiques Les 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).
  • 5. Affichage des couvertures Le 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 librarything 6 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
  • 6. Fil RSS La 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. Permalien Afin 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 ...)
  • 7. Annexe 1 – Recherche sans résultats
  • 8. Annexe 2 – Liste de résultats
  • 9. Annexe 3 – Notice bibliographique enrichie
  • 10. Annexe 4 - Géolocalisation
  • 11. Annexe 5 – Disponibilités dans les bibliothèques préselectionnées
  • 12. Annexe 6 – Autres éditions et recommandations
  • 13. Annexe 7 – Schéma simplifié des flux