Skip to content

Automatiser les interventions dans le Sudoc : Colodus, JavaScript et Aleph

14/09/2015

Tous les billets de la série « Automatisation Colodus avec JavaScript »

Ça, c’est un de mes encarts Netvibes en ce moment (oui, j’ai gardé un univers Netvibes pour certains usages, en parallèle à ma veille sur Feedly et sur Twitter).

rien

A mon avis, c’est un signe qu’il est peut-être temps de rebloguer un peu…

Or mon activité sur ce blog a été entravée par un gros chantier mené depuis plusieurs mois au SCD de Nice, visant à réduire à rien ou presque la charge de travail relevant des interventions dans le Sudoc (du moins les interventions sur les exemplaires !).

Je peux difficilement tout expliquer en un seul billet, donc me voilà lancer dans une petite série (3 ou 4 ?) visant à expliquer ce que nous avons développé techniquement, et ensuite comment nous essayons de l’inscrire dans une organisation donnée (le SCD de Nice). Ces deux aspects (techniques et organisationnels) posent des problèmes spécifiques, et se règlent sur un temps relativement long (plusieurs mois).

Le déploiement des différentes solutions élaborées est encore en cours, mais globalement ça marche.

Pour aujourd’hui, je me contenterai du principe : Colodus (dont j’ai déjà parlé à plusieurs reprises) est une interface web permettant de manipuler les exemplaires rattachés aux notices bibliographiques du Sudoc, pour un RCR donné.

Dans la phrase précédente, le mot à retenir est web. En effet ça signifie que des outils, développés dans l’environnement web, sont potentiellement exploitables pour interagir avec Colodus. J’avais déjà commencé à bricoler avec l’extension GreaseMonkey, pour pouvoir disposer de modèles de formulaires pré-remplis (ou au moins avec certains champs déjà créés) en cliquant simplement sur un favori dans le navigateur. Techniquement, le favori contenait du code JavaScript qui agissait sur la page en cours (une page Colodus, en l’occurrence).

C’était avant que l’interface Colodus propose elle-même de gérer des modèles de formulaires. Le billet cité est donc complètement obsolète, mais il m’avait permis de commencer à mettre les mains dans le cambouis JavaScript, auquel je ne connaissais rien.

Depuis un an (le billet date d’avril 2014), on a quand même beaucoup avancé. En gros, l’idée est d’interagir avec Colodus via des scripts JavaScript (sous forme de bookmarklets, c’est-à-dire que les lignes de codes sont stockées dans ce qui ressemble à un favori) pour réaliser les opérations suivantes :

  • créer des exemplaires (dans le circuit des acquisitions courantes)
  • supprimer des exemplaires (procédure de désherbage)
  • modifier des exemplaires (refoulement, recotation)

J’essaierai dans les billets suivants:

  • de détailler mieux comment fonctionnent (techniquement) les codes qui réalisent ces opérations,
  • d’évoquer les limites et les problèmes rencontrés,
  • d’aborder l’aspect organisationnel (en cours de déploiement, donc — j’insiste et j’insisterai !), et notamment la manière dont nous avons paramétré notre SIGB Aleph pour qu’il nous fournisse lui-même tout seul ces codes qui vont agir dans Colodus.

Un joli programme en perspective, non ?

Pour ceux qui veulent déjà y jeter un coup d’oeil, les scripts utilisés (dans leur dernière version ou presque) sont déjà sur Github (tout de suite, c’est moins sexy)
code - extrait

  • Les non-informaticiens refermeront sans doute pudiquement l’onglet juste après l’avoir ouvert.
  • Les bidouilleurs essaieront peut-être de comprendre comment ça fonctionne (et attendront éventuellement les billets suivants)
  • Et les informaticiens, s’il en vient, s’indigneront de la manière dont j’ai codé, vu que je n’ai rien appris de JavaScript hormis ce dont j’avais besoin pour que mon code « fonctionne ». Il est donc certainement très moche et évidemment perfectible : ne vous gênez pas pour le critiquer, le forker et l’améliorer !

En attendant, vous pouvez aussi aller jeter un coup d’œil à une présentation faite à une journée ADBU-Abes consacrer au catalogage et aux catalogueurs (février 2015), où nous avions déjà évoqué certaines orientations qui ont été approfondies depuis.

10 commentaires
  1. B. Majour permalink
    24/09/2015 09:33

    Aïe. Tu veux dire que vous étiez obligés de tout vous coller à la main : saisie, suppression, etc.

    Je comprends ton besoin de faire tout ça en automatique.

    Pour ton code en Javascript.
    Du moment que ça marche.🙂

    Sinon, un peu étrange cette utilisation des variables comme suit :

    function FormExemplaire(inv,barcode,BU,loc,cote,PEB) {
    var inv;
    var barcode;
    var BU;
    var loc;
    var cote;
    var PEB;

    Normalement, tu ne devrais pas déclarer var inv; var barcode; etc. var PEB
    Ce sont des arguments qui sont déjà définis entre les parenthèses.

    C’est étrange d’ailleurs que ça ne te cause pas des soucis, mais je ne connais pas vraiment le javascript.

    A noter que tu le fais ici

    function Recotation(cote,codeLocalisation){
    jQuery(« input[id*=’E930_a’] »).val(cote);
    jQuery(« input[id*=’E930_d’] »).val(codeLocalisation);
    jQuery(‘#boutonsave’).click();
    }

    sans déclaration de var, et ça se passe visiblement très bien.

    Ah oui, je vois, ça marche bien, parce que tu remplis les champs avec des « Input ».
    Si jamais tu passais les paramètres directement entre les parenthèses, ils seraient probablement remis à zéro avec les déclarations var.

    Exemple FormExemplaire(« inv »,005511145,Nice, »loc »,RO Lul, »PEB »)
    suivi des déclarations var, entraînerait problablement la remise à zéro
    Comme si tu passais FormExemplaire(« »,0, » », » », » », » »)

    Ce sont les Input qui te sauvent la baraque.🙂

    Donc, à tester sans pour économiser quelques lignes d’interpréteurs.
    A moins qu’il n’y en ait vraiment besoin. Ou alors, celles entre parenthèses sont inutiles.

    En même temps, si l’interpréteur ne dit rien, c’est que ça ne le gêne pas beaucoup.
    Donc, ne touche à rien.🙂
    B. Majour

  2. 24/09/2015 12:03

    @B. Majour : pour bien m’expliquer : j’ai appris le javascript, et notamment les fonctions, précisément pour ce projet-là. Il y a quelques mois, les fonctions n’existaient pas et le même code listant toutes les consignes était reproduit autant de fois qu’il y avait de notices bib. Et puis tout à coup je me suis dit : « Tiens, ça doit servir à ça les fonctions (mais au fait, est-ce qu’il y a des fonctions en JavaScript) ».
    Donc ce que je gagne à publier toutes ces infos, et notamment le code, c’est précisément des retours de ce type, me disant que ce que j’ai codé, c’est du grand n’importe quoi pour telle et telle raison.
    Je prends donc note (avec gratitude) de tes remarques, et je les intègre dès que possible dans les mises à jour.
    Si tu en voies d’autres, n’hésite pas !

  3. B. Majour permalink
    24/09/2015 22:37

    @Lully

    Pour du grand n’importe quoi, je trouve ça efficace en diable ! Et c’est ce qui compte avant tout.🙂

    Surtout que tu as appris le langage « on the scratch » (via un Mooc ?)
    B. Majour

  4. 28/09/2015 10:32

    @B. Majour : un MOOC ? non non, juste de la doc trouvée sur internet, sur le mode « Alors, comment on fait avec Javascript pour … »

  5. B. Majour permalink
    09/10/2015 18:19

    Whah, « on the scratch », en tâtonnant, c’est chaud !

    Tu sais que tu as des Mooc, plutôt bien foutus
    https://www.france-universite-numerique-mooc.fr/

    Et qui donne des bases intéressantes, en quelques heures.
    B. Majour

Trackbacks

  1. Automatiser les interventions dans le Sudoc : C...
  2. Automatiser les interventions dans le Sudoc : C...
  3. Automatiser les interventions dans le Sudoc : Colodus, JavaScript et Aleph | Veille juridique
  4. Automatisation dans Colodus avec Javascript : courte explication technique | Bibliothèques [reloaded]
  5. Automatiser les interventions dans le Sudoc : C...

Les commentaires sont fermés.

%d blogueurs aiment cette page :