Aller au contenu principal

Greasemonkey, solution pour un sudoc 2.0

08/06/2010

Je vais profiter de cette tribune que m’offre Lully pour présenter un projet autour de l’interface web du sudoc. Juste retour des choses que de présenter ce projet ici car il a pour origine un billet posté sur ce blog il y plus d’un an, dans lequel le maître des lieux expliquait comment faire un lien vers une notice sudoc. De cet ajout de permaliens, le projet s’est enrichi de nombreuses fonctionnalités et le moment est venu de présenter en détail le principe de fonctionnement.

1. Le constat

Si le catalogue web du sudoc répond dans sa version actuelle aux besoin principaux de recherche documentaire, certaines options lui font défaut. L’idée de ce billet n’est pas de déplorer ces manques (que l’on retrouve dans nombre de nos outils locaux) mais de proposer une solution de contournement, et en profiter pour ajouter certaines fonctionnalités qui n’auraient pas forcément leur place dans l’interface standard.

Les fonctionnalités que la solution va ajouter sont :

  • des flux RSS (qui devrait intégrer bientôt la version standard du sudoc)
  • les suggestions orthographiques en l’absence de résultat
  • des permaliens sur les notices
  • l’affichage de la disponibilité dans une sélection de bibliothèques prédéfinies dès la notice détaillée
  • la géolocalisation des exemplaires sur une carte
  • les enrichissements de notice type 2.0 : couvertures d’Amazon, suggestions de documents similaires & autres éditions d’un ouvrage depuis Librarything.
La solution proposée ne fonctionne que sous Mozilla Firefox
Le script en action sur le site du sudoc

Le script en action sur une notice du sudoc

À partir d’ici, je présenterai le fonctionnement détaillé du script, si vous souhaitez simplement l’activer sur votre poste, vous pouvez vous rendre sur ce site.

2. Une piste : GreaseMonkey

N’ayant pas la main sur les serveurs de l’Abes, la solution retenue va donc s’exécuter là où nous sommes (à peu près) maîtres : sur nos postes. Pour cela, nous allons utiliser une extension Firefox que Lully a déjà présentée ici : GreaseMonkey (GM).

Une fois installée, cette extension permet l’ajout des petits bouts de programmes destinés à modifier l’apparence d’une page. Ces scripts ont des usages très variés (modification de l’apparence, remplissage automatique de formulaires…) et il en existe des milliers (la principale plateforme les hébergeant est le site : http://userscripts.org qui en compte plus de 50 000).

Techniquement ces scripts sont des fichiers javascript dont le nom se termine par .user.js. Lorsque l’on essaie d’accéder à l’un de ces fichiers dans son navigateur, GM reconnaît que c’est un script qui lui est destiné et propose de l’installer.

Chacun de ces scripts commence par une en-tête normalisée comme celle ci-dessous.

// ==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==

L’instruction la plus importante étant la commande @include qui permet de spécifier les sites sur lesquels notre script va être actif, ici les accès au sudoc.

Greasemonkey actif

GreaseMonkey actif sur le sudoc : clic droit sur la tête de singe

On voit sur cette capture d’écran que lorsque l’on accède au sudoc via l’url http://www.sudoc.abes.fr/ par exemple, GreaseMonkey le reconnaît et nous indique que le script Sudoc plus est actif.

Hormis cette en-tête spécifique à GM, le reste du fichier contient du code javascript standard. GM propose simplement quelques fonctionnalités supplémentaires pour faciliter certaines opérations (appels dynamiques en Ajax par exemple).

3. Un script : sudoc+

La solution déjà évoquée au paragraphe précédent a donc été de créer un script GM qui regroupe les fonctionnalités décrites au point 1. Ce script est disponible sur userscripts.org et est paramétrable à travers une interface web. Cette interface, après avoir rappelé les étapes d’installation propose un onglet dans lequel il est possible de définir ses bibliothèques favorites, et d’activer/désactiver l’ensemble des fonctions.

Techniquement les opérations sont réparties entre le poste utilisateur et le serveur geobib.fr.

3.1. Poste utilisateur

Les opérations prises en charges par le script GM du côté utilisateur sont principalement les opérations ayant trait à l’apparence de la page :

  • création de zones pour l’affichage des recommandations, éditions alternatives …
  • ajout du permalien et des liens vers la carte, le RSS
  • ajout de la pop-up pour l’affichage direct des bibliothèques présélectionnées

On limite les opérations de traitement du côté GM à quelques opérations précises :

  • interrogation de l’outil thingisbn pour les éditions alternatives : le service fourni par librarything est limité à 1000 requêtes par jour. Pour un utilisateur c’est suffisant mais sur le serveur on risque d’arriver rapidement à saturation. Les interrogations sont donc faites côte client.
  • récupération des suggestions orthographiques chez Google : l’opération est assez simple, on évite donc un rebond par le serveur geobib.fr en allant directement interroger Google.

Le reste des opérations s’exécute sur notre serveur et le script se content d’afficher les résultats fournis par le serveur. Le script GM fait des appels Ajax aux différentes fonctionnalités présentes sur le serveur pour récupérer les informations.

3.2. Serveur geobib.fr

En complément du script GM on utilise des scripts mis en place sur le serveur geobib.fr. Il y a plusieurs raisons qui m’ont conduit à agir ainsi :

  • meilleure connaissance du langage PHP utilisé sur le serveur que du langage javascript utilisé par les scripts GM, et ce langage php permettant des traitements plus poussés
  • en cas de bug, plus simple de faire la mise à jour d’un script sur le serveur que de distribuer une version corrigée du script à chaque usager
  • il est difficile d’interroger les web services Amazon depuis un script distribué car ces web services nécessitent d’utiliser une clé privé que l’on ne peut distribuer

La géolocalisation des exemplaires

Cette fonctionnalité est indépendante du script GM, c’est simplement une page web à laquelle on passe un PPN et qui va afficher la carte des localisations correspondant à ce PPN. On profite du script GM pour proposer un lien direct vers cette carte mais on peut imaginer l’utiliser dans un autre contexte.

Exemple de géolocalisation d'exemplaires

Exemple de géolocalisation d'exemplaires

Pour obtenir les localisations des bibliothèques on récupère leur adresse dans la base de l’Abes à partir du RCR et on utilise un web service de géolocalisation fourni par Google qui, à partir de cette adresse retourne les coordonnées géographiques. Le taux de réponses est de 80% environ. Pour le reste il faudrait saisir à la main les coordonnées mais le script liste déjà à gauche de la carte les sites qu’il n’a pu localiser.

Cette opération de récupération des coordonnées est relativement longue par rapport à l’affichage d’une page web et pour éviter d’attendre plusieurs minutes lorsqu’un document comporte de nombreuses localisations, une petite base de données qui fait correspondre un RCR à une latitude et une longitude a été mise en place sur le serveur geobib.fr.

4. La suite

Ce script n’est pas figé, certaines fonctionnalités seront supprimées quand elles seront intégrées dans la version standard du sudoc et d’autres peuvent être ajoutées selon l’évolution des services et les suggestions.

Le script GM contient un mécanisme qui va vérifier sur userscripts.org si une nouvelle version existe. Si c’est le cas vous serez normalement avertis.

Je suis intéressé par tous les retours que vous pourriez avoir sur ce script. Pour me joindre, vous pouvez utiliser les commentaires de ce blog, mon compte twitter ou mon adresse mail (disponible ici).

5. Éléments supplémentaires

  • tous les éléments liés à l’installation et à la configuration de l’outil sont disponibles à l’adresse http://www.geobib.fr/sudoc/.
  • des captures d’écran de l’outil sont disponibles sur Flickr.
  • le code source du script GM est disponible sur userscript ou après avoir installé le script sur son poste : clic droit sur l’icône GM > Gérer les scripts > Éditer
  • le code source des scripts utilisés côté serveur peut être fourni sur demande : géolocalisation, récupération des informations Amazon, récupération d’informations du sudoc …
  • une documentation technique plus détaillée est disponible sur slideshare :
14 commentaires
  1. 08/06/2010 14:44

    Magnifique démonstration du fait que c’est l’utilisateur le mioeux placé pour améliorer le service, curieux de voir comment l’ABES va réagir ! (enfin bon je me fais pas d’illusion non plus).

  2. symac permalink
    08/06/2010 14:55

    Hé bien l’abes a réagi positivement à ce script. Ils m’ont d’ailleurs invité à le présenter lors d’un tutoriel aux dernières journées abes. Comme je je dis dans l’article ils aimeraient intégrer certaines des fonctionnalités mais sont assez contraints par ce que leur permet de faire leur outil.

    Il y a un mois j’aurais eu la même opinion que toi au niveau des illusions, mais après avoir rencontré plusieurs personnes en charge de l’évolution du catalogue, j’ai plus d’espoir ! On verra dans le temps ce que ça donne mais j’ai confiance que les choses évoluent dans le bon sens.

  3. 08/06/2010 15:14

    Ben tant mieux tant mieux, là ils ont juste un cahier des charges à faire pour améliorer l’outil, toutes les fonctionnalités sont là ! Sinon j’aurai juste mis le fait de devoir présélectionner les bib dans geolib de manière plus claire sur l’interface…

    Au fait merci pour le clin d’oeil j’apprécie le choix de l’exemple ! ;-).

  4. Laura permalink
    08/06/2010 15:25

    A peine installé et testé, c’est génial ! Merci !

  5. Olivier permalink
    09/06/2010 11:07

    @symac : Géniale, l’idée du SUDOC + !!! Testé et adopté !

    @Lully : bravo pour le blog, les débats et les tuyaux…

  6. 11/06/2010 12:34

    Bravo, les lignes bougent en ce moment et je ne suis pas inquiet sur le fait que cela débouchera côté ABES. Les choses sont encore parfois trop lentes certes mais bon, on ne révolutionnera pas le système en si peu de temps !
    Superbe ne tout cas le résultat.

  7. 21/06/2010 15:56

    Super outil ! Fonctionne avec Firefox sous Windows, seulement, sniff…

  8. 21/06/2010 17:31

    @ghatt : il fonctionne aussi au moins sous ubuntu/firefox, ayant été développé la dessus.
    Sur quel système as tu testé ?

Trackbacks

  1. links for 2010-06-09 « Ikan66
  2. Nouveau Sudoc – oui… mais non « Bibliothèques [reloaded]
  3. Sudoc RSS – pour de vrai, et même en mieux « Bibliothèques [reloaded]
  4. Gérer les messages Corcat : pour aller plus haut (ou plus vite) « Bibliothèques [reloaded]
  5. Sudoc, Netvibes, Google Reader et RSS « Bibliothèques [reloaded]
  6. Disséminer la bibliothèque avec Chrome (1/X) « Bibliothèques [reloaded]

Commentaires fermés