SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

Apdpresinst mai 2013
Apdpresinst mai 2013Apdpresinst mai 2013
Apdpresinst mai 2013APD MAROC
 
13conseilspourlavie2
13conseilspourlavie213conseilspourlavie2
13conseilspourlavie2hanenab
 
Joe & Mathew French Shop Keeper Customer
Joe & Mathew French  Shop Keeper CustomerJoe & Mathew French  Shop Keeper Customer
Joe & Mathew French Shop Keeper CustomerS Green
 
Afcas Dossier Sponsoring
Afcas Dossier SponsoringAfcas Dossier Sponsoring
Afcas Dossier Sponsoringguestc6e733b
 
Tibet le-train_le_+_haut_du_monde (1)
Tibet  le-train_le_+_haut_du_monde (1)Tibet  le-train_le_+_haut_du_monde (1)
Tibet le-train_le_+_haut_du_monde (1)Albert Antebi
 
Journée PluriTAL 2012 - Ivan Smilauer
Journée PluriTAL 2012 - Ivan SmilauerJournée PluriTAL 2012 - Ivan Smilauer
Journée PluriTAL 2012 - Ivan SmilauerAFTAL
 
Joanna & Millie French Shop!!Xxx
Joanna & Millie French Shop!!XxxJoanna & Millie French Shop!!Xxx
Joanna & Millie French Shop!!XxxS Green
 

Andere mochten auch (15)

Apdpresinst mai 2013
Apdpresinst mai 2013Apdpresinst mai 2013
Apdpresinst mai 2013
 
13conseilspourlavie2
13conseilspourlavie213conseilspourlavie2
13conseilspourlavie2
 
Beaute Sauvage
Beaute SauvageBeaute Sauvage
Beaute Sauvage
 
MAMAU_Pitch_DEF_
MAMAU_Pitch_DEF_MAMAU_Pitch_DEF_
MAMAU_Pitch_DEF_
 
Ilusiones Opticas
Ilusiones OpticasIlusiones Opticas
Ilusiones Opticas
 
Joe & Mathew French Shop Keeper Customer
Joe & Mathew French  Shop Keeper CustomerJoe & Mathew French  Shop Keeper Customer
Joe & Mathew French Shop Keeper Customer
 
Afcas Dossier Sponsoring
Afcas Dossier SponsoringAfcas Dossier Sponsoring
Afcas Dossier Sponsoring
 
OI MODULES
OI MODULESOI MODULES
OI MODULES
 
Tibet le-train_le_+_haut_du_monde (1)
Tibet  le-train_le_+_haut_du_monde (1)Tibet  le-train_le_+_haut_du_monde (1)
Tibet le-train_le_+_haut_du_monde (1)
 
St val gifts
St val giftsSt val gifts
St val gifts
 
Services for Realtors
Services for RealtorsServices for Realtors
Services for Realtors
 
Journée PluriTAL 2012 - Ivan Smilauer
Journée PluriTAL 2012 - Ivan SmilauerJournée PluriTAL 2012 - Ivan Smilauer
Journée PluriTAL 2012 - Ivan Smilauer
 
Joanna & Millie French Shop!!Xxx
Joanna & Millie French Shop!!XxxJoanna & Millie French Shop!!Xxx
Joanna & Millie French Shop!!Xxx
 
PC DOS.PDF
PC DOS.PDFPC DOS.PDF
PC DOS.PDF
 
Ile de Re, Ars de Re
Ile de Re, Ars de ReIle de Re, Ars de Re
Ile de Re, Ars de Re
 

Ähnlich wie Sudoc plus - Technique

Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?GreenIvory
 
Systèmes de Gestion de Contenu (SGC)
Systèmes de Gestion de Contenu (SGC)Systèmes de Gestion de Contenu (SGC)
Systèmes de Gestion de Contenu (SGC)Laurent Moccozet
 
Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2Ahmed ABATAL
 
Une application mobile avec les webservices Koha
Une application mobile avec les webservices KohaUne application mobile avec les webservices Koha
Une application mobile avec les webservices KohaJulien Sicot
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturiteRémi Alvado
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEMarouan OMEZZINE
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeOuadie LAHDIOUI
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
Vbscript
VbscriptVbscript
Vbscriptouedib
 
Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3
Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3
Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3ABES
 
Partie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxPartie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxHamzaElgari
 
cours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdfcours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdfGroupeExcelMarrakech
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebFrédéric Harper
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravoSoumia Brabije
 

Ähnlich wie Sudoc plus - Technique (20)

Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
Systèmes de Gestion de Contenu (SGC)
Systèmes de Gestion de Contenu (SGC)Systèmes de Gestion de Contenu (SGC)
Systèmes de Gestion de Contenu (SGC)
 
Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
 
Js cours
 Js cours Js cours
Js cours
 
Une application mobile avec les webservices Koha
Une application mobile avec les webservices KohaUne application mobile avec les webservices Koha
Une application mobile avec les webservices Koha
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturite
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitée
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
SAPIENS2009 - Module 4B
SAPIENS2009 - Module 4BSAPIENS2009 - Module 4B
SAPIENS2009 - Module 4B
 
Vbscript
VbscriptVbscript
Vbscript
 
Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3
Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3
Jabes 2013 - Poster "Bibdix" de l'Université de Bordeaux 3
 
Partie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxPartie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptx
 
cours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdfcours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdf
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Flex4.5 air3.0
Flex4.5 air3.0Flex4.5 air3.0
Flex4.5 air3.0
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravo
 

Mehr von Sylvain Machefert

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

Mehr von Sylvain Machefert (20)

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