Vieux #pypes : on me cache tout !

Pour mémoire : j’écris désormais “pypes” plutôt que “[yahoo] pipes” pour contraindre à une lecture anglicisante et accentuée du mot, et entraver toute lecture désordonnée du terme. Je ne l’emploie que lorsque la tournure porterait trop certains lecteurs à la grivoiserie…

J’ai voulu permettre via un lien dans le menu de ce blog un accès rapide aux outils mis en place pour la recherche d’emploi : comme j’ai des accès quotidiens venant de Biblioemplois, j’en conclus que cela correspond à un usage réel (regardez dans la colonne de gauche : le lien existe à présent).

J’ai mis en place deux pypes pour la recherche d’emplois en bibliothèque, tous deux fusionnant les offres parues sur Bibliofrance et sur Biblioemplois :

  1. une carte de France de ces offres d’emplois
    Utiliser l’outil / voir le billet explicatif
  2. la possibilité de limiter l’affichage de ces offres à un ou plusieurs départements, avec abonnement RSS à la clé.
    Utiliser l’outil / voir le billet explicatif

Or, n’étant pas moi-même utilisateur de ces pypes, je n’en surveille pas l’efficacité.

Je m’aperçois au moment de proposer ces liens qu’aucun des deux pypes ne produit de résultat. Comme j’ai du mal à incriminer mon seul PC, j’en conclus que certains lecteurs sont passés par là, ont bloqué sur ces pypes bugués, et sont repartis…

Il me faut donc l’asséner ici : si vous tombez sur un billet vieux de plusieurs mois, mentionnant un pype (ou tout autre outil) qui vous semble d’un usage intéressant (même pour vous seul), et que vous constatez un dysfonctionnement, il faut absolument me le signaler !!!!

D’abord parce que mon honneur est en jeu, ensuite parce que c’est vraiment dommage pour vous et pour d’autres de laisser ces ruines en l’état, alors que je peux au moins essayer de les remettre debout.

Bouillon collaboratif : dédoublonnage

Voir les billets précédents sur le Bouillon des bibliobsédés 2.0 :

S’abonner au Bouillon (RSS)

Dans les 15-20 sources, il y a forcément des informations qui seront signalées plusieurs fois par les veilleurs.

Les objectifs étaient

  1. de les dédoublonner
  2. de faire valoir le nombre de fois où la même info était partagée (le taux de recommandation rend à peu près compte de l’importance, intelligence, pertinence de l’info)
  3. d’indiquer, dans l’item dédoublonné, par qui il avait été partagé.
  4. de conserver éventuellement les commentaires rédigés par les différents veilleurs.

Pour ce billet, on verra juste les deux premiers points

Module Unique (dédoublonnage)

Yahoo Pipes propose un module de dédoublonnage, sur un seul critère

Rappelons qu’à la source, on a une fusion de 17 flux RSS où les items ont été retriés par date de publication. S’y trouvent donc des billets, articles , etc. identiques, partagés plusieurs fois.

Cela constitue un gros fichier XML de 100 à 200 items, comportant chacun :

  • un titre (item.title)
  • une URL (item.link)
  • une “description” (item.description) = contenu du billet
  • une date de publication (item.pubDate)
  • une “origine” (rajoutée à la source) = nom du veilleur

Le critère URL du billet (item.link) est le plus pertinent pour dédoublonner, évidemment.

Le module Unique fonctionne de la manière suivante :

  • Pour chaque item, il prend en compte le lien.
  • Il regarde dans la suite du fichier XML traité s’il y a des liens identiques.
  • S’il en trouve, il les supprime.
  • Dans le  1er item rencontré, le seul conservé, il stocke dans un nouveau champ item.y:repeatcount le nombre de fois où il a repéré le même lien.

Indication du nombre de recommandations

La valeur du champ item.y:repeatcount doit être ajoutée au titre, entre parenthèses.

Pour cela, on utilise une boucle (Loop) : pour chaque item, on concatène :

  • le titre
  • suivi d’une parenthèse “(” avec le signe “+”
  • suivi de l’indication du nombre de fois où l’item aura été partagée
  • suivi de la parenthèse fermante “)”

Et cette concaténation est mise comme nouveau titre

Ce qui donne :

Problèmes

Le module Unique ne conserve que le premier item rencontré.

Donc si, en dehors du critère “item.link”, il y avait des informations différentes dans les différents items dédoublonnés, celles stockées dans les items supprimés sont oubliées.

Par exemple :

Un veilleur utilise Google Reader (appelons-le Lully) pour partager sa veille, un autre utilise Delicious (appelons-le Couperin1).
Ils partagent par hasard le même billet.
Si Lully a le premier mis ce billet en partage, celui-ci se retrouvera fusionné dans le pipe commun, avec dans le champ “Description” l’intégralité du billet.
Ensuite Couperin partage ce billet à son tour. Lors du dédoublonnage, c’est celui de Couperin qui sera conservé.
Or dans Delicious le champ “Description” n’est renseigné qu’avec la description éventuellement mise par le veilleur.
Donc dans le résultat final, l’item ne fournira plus le contenu du billet

Donc selon l’ordre dans lequel le même billet a été partagé, vous retrouverez son contenu dans le Bouillon… ou non.

Autre problème : dans l’item final, le seul champ “Origine” conservé sera celui du dernier veilleur, le billet eût-il été partagé 8 fois !

De même, si les 8 veilleurs ont rajouté un commentaire lors du partage, seul le plus récent sera conservé.

Bref, une perte d’information importante dans le cadre d’une veille collaborative (puisqu’elle rend compte et légitime le résultat final).

Donc les prochaines fois, on verra les plus gros morceaux : récupération de la liste des “origine”, et de la liste des “commentaires”. Sachant que j’ai aussi plusieurs autres billets à finir…

___________________________

1. Parce que c’est un autre compositeur de l’époque moderne.

Bouillon collaboratif : Lien “traduction” Google

Juste avant le lancement du Bouillon, a été rajouté un lien “Traduction automatique (Google)” qui n’apparaît que sur les articles en anglais.

Or les flux RSS des sources ne fournissent pas, pour chaque billet, l’indication de langue : cette information n’est fournie nulle part. Il faut donc :

  1. demander au pipe de détecter automatiquement la langue
  2. mettre la valeur de la langue (“en”, “fr”, etc.) dans un champ “language”
  3. distinguer les billets dont la langue est “fr” de ceux dont c’est “en”, et pour ces derniers rajouter un lien.
  4. Il faut que ce lien soit la concaténation de : “http://translate.google.com/translate?sl=en&tl=fr&u=” suivi du lien du billet. L’URL racine qui correspond à la traduction automatique dans Google, où la langue de départ est l’anglais (sl=en, pour start language) et la langue de destination est le français (tl=fr, pour translation language).

Etape 1 : détection automatique de la langue

<

Vous vous doutez que, lorsque vous lancez une requête dans Google, le moteur est capable de reconnaître la langue utilisée pour la requête. Donc Google sait reconnaître une langue sur quelques mots.

Il existe un service Google (une API, pour être exact) qui donne une valeur de langue quand on lui fournit une phrase.

Par exemple, la phrase suivante :

Comment utiliser la traduction de Google

peut être transmise à cette API ainsi :

http://ajax.googleapis.com/ajax/services/language/detect?q=Comment+utiliser+la+traduction+de+Google&v=1.0

Si vous cliquez sur le lien ci-dessus, vous ouvrez un fichier texte en format JSON ou les attributs de la valeur utilisée (la phrase en question) sont imbriquées les unes dans les autres, de manière assez comparable à un fichier XML.

Bref, dans la copie d’écran ci-dessus, le premier encart (Loop) contient un “URL Builder” qui crée un nouveau champ pour chaque item, champ intitulé item.lang_url. Sa valeur est la concaténation de :

  • http://ajax.googleapis.com/ajax/services/language/detect?
  • &q=item.title (titre de chaque billet partagé)
  • &v=1.0

Le second encart (Loop) ouvre la page dont l’URL est celle qui vient d’être créée (avec un Fetch Data, dont l’adresse est item.lang_url).
Le champ “Path to item list” indique quelle valeur il faut récupérer, selon une syntaxe assez simple : dans le fichier dont l’URL est http://ajax.googleapis.com/ajax/services/language/detect?q=Comment+utiliser+la+traduction+de+Google&v=1.0, la langue est dans responseData > language. Donc on indique que la valeur responseData.language est à ranger dans item.language.

Ce faisant, Yahoo Pipes a récupéré en réalité toute une imbrication de l’information, et le dernier encart (Rename) simplifie le nom du champ : la valeur de langue (“fr”) avait été stockée dans item.language.0.content (on s’en rend compte assez vite dans le debugger). Elle sera désormais dans item.language.

Etape 2 : génération du lien vers Google Translate

Après que le champ item.language a été correctement renseigné grâce à l’étape 1, on divise le flux produit en deux. Le module “Split” produit deux flux identiques.

Dans celui de gauche, je ne laisse passer que les items de langue française, que je réinjecte dans le flux unique (Union).

Dans celui de droite, je bloque tous les items de langue française. Puis pour chacun de ces items, je génère la ligne suivante :

<p style=”text-align: right”> [créer un paragraphe aligné à droite]
<a href=”http://translate.google.com/translate?sl=en&tl=fr&u=item.link“>Traduction automatique (Google)
</a>
</p>

Puis je réinjecte ces items-là aussi dans le flux principal (module Union)

Et voilà.

Remarque

Notez que pour l’instant je n’ai pas abordé la question du dédoublonnage. C’est le plus gros morceau (rien à voir avec celui-ci). Donc j’avance progressivement (en tout cas, j’essaie !).

Silvère a dit : que le Bouillon soit. Et le Bouillon fut ! Et maintenant il devient…

… collaboratif.

S’abonner au Bouillon collaboratif

Le Bibliobsédé a proposé une ouverture à la collaboration pour les ingrédients de son Bouillon. Vous retrouverez l’information chez lui et ailleurs.

Il me revient naturellement la joie de vous expliquer, aussi pédagogiquement que possible, le casse-tête qu’à signifié cette collaboration sous l’angle “Tutoriel Yahoo Pipes”.

Parce que, grâce à Silvère (que mille tweets chantent sa gloire !), j’ai dû me tordre les méninges et les boyaux et les tuyaux (de Yahoo) pour structurer un résultat correct, manipulable et intéressant.

Donc, présentation du pipe (et merci de le prononcer “païpe”, même intérieurement) en plusieurs étapes. Comme le résultat est relativement complexe, cela fera l’objet de plusieurs billets (au moins 3)

Aujourd’hui : Les sources

Schéma Yahoo Pipes - les sources

Chaque “veilleur” a un outil propre de partage d’informations. Google Reader pour la plupart, mais aussi Delicious ou d’autres outils encore. Chaque fois qu’un veilleur enrichit sa page de partage, il enrichit aussi le flux RSS correspondant. Donc l’activité de partage de chaque veilleur fournit un flux RSS.

La combinaison des sources n’est pas très complexe (ou n’est pas le plus complexe) :

  • Un Fetch Feed pour intégrer le flux
  • L’ajout d’un champ “Origine” pour indiquer à qui appartient ce flux (Module Loop avec un String Builder)
  • Et la fusion de tout ça…
  • retrié par ordre de date de publication immédiatement (pour voir aussitôt dans le debugger ce que ça donne)

Juste avant la production du fil RSS, on rajoute le champ “Origine” à la “description” (la “description”, pour un item dans un flux RSS, c’est tout simplement le contenu du texte)

Mais s’il n’avait fallu que ça, peut-être Yahoo Pipes n’aurait pas été nécessaire (d’autres outils existent pour fusionner des flux RSS !). Yahoo Pipes permet aussi :

  • de dédoublonner
  • de récupérer la liste des personnes qui ont partagé le même billet
  • de récupérer d’éventuels commentaires de la part de ces personnes.
  • proposer les billets partagés par plus de deux personnes unqiquement (parce que la veille de 20 veilleurs environ, ça peut paraître excessif à beaucoup. Ils peuvent alors profiter du Nectar du bouillon, par RSS ou par mail)

Cela, c’était le plus drôle.

Depuis, j’ai aussi finassé en rajoutant un lien “Traduction automatique Google” quand le billet partagé était en anglais. Donc il a fallu utiliser un outil de reconnaissance automatique de la langue.

Bref, vous voyez qu’il y a de quoi parler pour quelques autres billets !

Recherche d’emplois : limitez votre recherche à votre département

Suite des outils mis en place hier, permettant d’afficher sur une carte les offres d’emploi de Bibliofrance et Biblioemplois (avec des difficultés d’affichage sur Google Maps mais pas sur Yahoo Pipes), voici la possibilité de limiter la liste des offres à son ou ses départements, avec

  • une projection cartographique
  • un flux RSS

Voir la vidéo (exemple sur une recherche d’emplois dans le Rhône et la Loire)

Utilisez ce pipe pour sélectionner votre(vos) département(s)

Notez au passage que Yahoo Pipes localise mal certaines villes sur la carte. En revanche si les villes apparaissent, même à de mauvais emplacements le fait qu’elles apparaissent atteste qu’elles sont bien dans les départements sélectionnés.

Peut-être aussi la production de la carte et du fil RSS prendra-t-elle quelques secondes de trop : il y a 5 pipes (je crois) qui “tournent” pour produire ce résultat.

Vérifier la présence de ses ISBN dans Amazon (et GBS)

Je sais, vous allez me prendre pour un piper fou, et à chaque nouveau billet, vous dire : “Bon, il commence à radoter avec ses machins.”

Ce n’est pas que de ma faute : récemment, quelqu’un (non, pas Marlène, pour une fois) m’a poussé dans mes retranchements sur ce que j’arrivais ou non à faire avec Yahoo Pipes. Bref, ces derniers jours j’ai développé des compétences et découvert les “pipes d’appui” (la terminologie est de moi et n’est pas fixée : je vous laisse rebaptiser ça comme vous voulez, éventuellement en vous inspirant d’autres domaines).

Le principe est “simple” : je crée un pipe, mais celui-ci n’a d’intérêt que lorsqu’il est intégré dans un autre pipe.

Ainsi, j’ai créé un pipe qui, pour un ISBN donné, va lancer une requête dans Amazon : avec l’ISBN indiqué, il construit une URL de requête et ouvre la page des résultats chez Amazon) :

  1. S’il trouve l’ISBN, il sort le résultat : “Nombre d’ISBN trouvés : 1″ (même s’il a plusieurs résultats pour un même ISBN, il ne sort que le chiffre 1)
  2. S’il ne trouve pas l’ISBN, il ne sort rien du tout.

Ce pipe n’a aucun intérêt : si vous voulez savoir si un ISBN se trouve ou non chez Amazon, vous allez sur le site d’Amazon et vous le cherchez.

Sauf que par dessus, j’ai construit un autre pipe : on lui donne une liste d’ISBN (les ISBN sont sans tirets, et ils sont séparés les uns des autres par des tirets). Et pour chaque ISBN, il applique le pipe précédent.

Ca se passe ici : j’ai fait glissé un de “mes pipes” à l’intérieur du module Loop, et j’ai coché “Emit results” pour que le résultat de la boucle, ce soit les pipes-relais mis bout à bout.

  • Quand l’ISBN produit un item, il sort un item
  • Quand il ne produit rien, il en sort rien
  • Et à la fin, le second pipe décompte le nombre d’items (donc le nombre d’ISBN reconnus)

Ca ne vous évoque rien ? C’est une sorte d’API Amazon : il transforme les données HTML d’Amazon en données XML plus manipulables.

Pourquoi est-ce que j’ai fait ça ? Parce que pour utiliser les API Amazon, il faut avoir une clé Amazon et utiliser les API en question pour un site web. Moi, j’en ai besoin en local, ponctuellement. J’avais pu tester les API LibraryThing pour constater qu’ils couvraient 30% de notre catalogue (sur un échantillon de 1000 ISBN). Je n’avais pas pu le faire pour Amazon.

Désormais je sais qu’Amazon couvrirait 94% de nos notices. Pour être plus précis : Amazon a identifié 94% de nos ISBN. En l’état, cela ne me dit pas quel pourcentage de couvertures il peut me proposer, ou de tables des matières, résumés, commentaires, etc. Il faudrait que j’affine l’analyse des réponses que le site donne dans ses listes de résultats.

Donc j’ai fait plusieurs autres pipes :

Rq : j’ai dû entrer les ISBN par paquets de 200 (donc en 5 fois), car Yahoo Pipes n’arrivait pas à tout traiter d’un coup. Voici ce que ça donne :

1000 ISBN en 5 fois

1er jeu

2e jeu

3e jeu

4e jeu

5e jeu

Nombre d’ISBNs trouvés

190

192

187

188

191

Nombre de couvertures retrouvées

102

141

118

124

129

Nombre de livres “feuilletables”

0

0

29

30

14

En comparant les écarts d’une colonne à l’autre (fonction écart-type d’Excel), on constate que pour contrôler seulement la présence des notices, 200 notices auraient été suffisantes. Mais j’ai bien fait d’utiliser mon échantilon de 1000 ISBN pour les couvertures et les feuilletages, car il y a de grandes disparités.

Conclusions :

  • Amazon contient 94,8 % de nos notices
  • Amazon peut proposer des couvertures pour 61,4% de nos livres
  • Amazon peut proposer 7,3% de nos livres en feuilletage

Ce qu’il faut en retenir ?

  1. Qu’après plusieurs étapes encore, je pourrai vous entretenir de la manière d’utiliser ces pipes-relais (par exemple : convertir un numéro de département en son nom, via la liste donnée sur Wikipedia comme source d’information).
  2. Que vous pouvez déjà tester votre propre catalogue pour voir si ça vaut le coup d’utiliser Amazon comme fournisseur de contenus enrichis : en entrant une liste d’ISBN dans ce pipe.
  3. Après examen de ce à quoi ressemble une page de résultat, je ne peux pas savoir si Amazon me fournira pour un ISBN donné un résumé et une table des matières. Mais je peux considérer (ou plutôt : je me résigne à me contenter de ce) que le feuilletage induit un résumé et/ou une table des matières.
  4. Que je produirai sans doute les mêmes outils pour les sites que je n’ai pas pu tester par API (pour cause d’API Key) : WorldCat, Google Books, …

En fait, j’ai déjà fait celui pour Google Books — vérification  de la présence de notice, couverture, et extraits. Mais à plusieurs reprises il a refusé de répondre après plusieurs requêtes : il a sans doute remarqué que les serveurs de Yahoo le bombardaient un peu trop de questions et que ça ressemblait à du hacking.

Bref, j’ai finalement réussi à l’utiliser, mais je vous préviens tout de même du problème. Voici les résultats

ISBN dans Google Books

1er jeu

2e jeu

3e jeu

4e jeu

5e jeu

Nombre d’ISBNs trouvés

185

184

187

189

186

Nombre de couvertures retrouvées

92

22

26

36

33

Nombre de livres avec extraits

70

22

26

34

33

Donc en % par rapport à notre collection, ça donne :

  • GBS a reconnu 93,1% de nos ISBN
  • GBS peut fournir 20,9% des couvertures de ces livres
  • GBS peut fournir des extraits pour 18,5%  de ces livres

Tableau comparatif GBS – Amazon

Amazon

Google Book Search

Nombre d’ISBNs trouvés

94,8%

93,1%

Nombre de couvertures retrouvées

61,4%

20,9%

Nombre de livres avec extraits/feuilletage

7,3%

18,5%

Le nombre d’ISBN reconnus est équivalent (alors que pour les seules nouveautés, GBS n’avait que 76% de nos notices). Amazon a beaucoup plus de couvertures disponibles, et GBS un peu plus d’ouvrages disponibles sous forme d’extraits. Quel service voudrez-vous privilégier ?

Pourquoi pas les couvertures chez Amazon et les enrichissements textuels chez Google ?

PS : pour ceux qui ne voient pas comment, d’une liste d’ISBN en ligne, produire des ISBN sur la même ligne et séparés par des tirets, une petite vidéo.

Construire l’après-biblio-fr : petite proposition pour la veille

Je n’ai aucune proposition construite et élaborée pour “remplacer” Biblio-fr. Il ne sert à rien d’ailleurs à mon avis de vouloir recréer un site ex nihilo en espérant reconstituer la “communauté” des 17.000 inscrits.

Ne fantasmons plus sur ce chiffre, qui ne signifie pas grand chose en soi et essayons plutôt de définir quels étaient les services que rendait Biblio-fr, et comment y répondre désormais.

J’irai plus loin (je suis fou !) : voyons comment y répondre mieux.

<add>Jean-Michel Salaün suggère ici que finalement, Biblio-fr n’est peut-être pas si mort que ça.
Je ne suis ni pour ni contre cette fermeture, je ne me réjouissais pas de sa disparition et si d’une manière ou d’une autre “on” arrive à le faire revivre, je ne m’en plaindrais pas. Disons que dans la vie en général, j’ai une tendance fataliste et résignée : j’admets qu’une information telle que “Biblio-fr ferme” ou “Pascal Sevran est mort” est par nature définitive.
Parfois je me trompe et c’est très bien ainsi, mais je n’y mets aucun parti pris ni aucune intention maligne.
Disons que, faute de connaître l’avenir, je pars d’une hypothèse d’école qui serait : “Tiens, mais que ferait-on si Biblio-fr n’existait pas ?”</add>

Dans la liste des propositions (je ne suis pas seul sur les rangs : plusieurs messages — pas les plus nombreux ! — publiés sur Biblio-fr avancent également des pistes) qui seront lancées d’ici à septembre, la plupart s’effondreront d’elles-mêmes, inadaptées pour plusieurs raisons possibles et combinables :

  • inadaptées aux besoins initiaux
  • inadaptées aux compétences techniques de leurs utilisateurs présumés (je pense à cette phrase : “Croire que tout le monde manie les fils RSS ou les agrégateurs est une illusion élitiste.” J’aurai très envie d’y revenir à l’occasion, car elle est vraie, sans doute, mais je n’arrive pas à considérer cette véracité comme une fin).
  • inadaptées car correspondant aux besoins qui avaient fait créé Biblio-fr, mais n’ont plus lieu d’être aujourd’hui

Donc la proposition que je fais ici en fera peut-être partie. En même temps, je persiste à la faire car :

  1. pour qu’à la fin, puissent émerger les “bonnes” solutions, il faut bien qu’une masse critique existe
  2. vous pouvez y suggérer des améliorations
  3. cela peut vous donner d’autres idées

Bref, je pars du besoin suivant : comment désormais se tenir au courant de l’actualité des bibliothèques, quand on ne connaissait rien d’autre que Biblio-fr ?

Donc, dans le cas présent, je ne me soucie pas des producteurs de messages, mais des lecteurs. Savoir où les dispenseurs d’infos pourront désormais publier n’est pas le plus important, finalement : sur Biblio-fr comme ailleurs, les contributeurs étaient moins importants que les lecteurs, et c’est aux lecteurs que je m’intéresse pour le moment.

La proposition est simple : si vous avez un intranet, vous pouvez y prévoir une page “Actualités du monde des bibliothèques” qui afficherait un flux RSS intégrant lui-même plusieurs flux.

La difficulté technique ne doit arrêter personne : les outils existent, pour fusionner des flux comme pour les afficher sur une page web. Et cette difficulté ne concernerait qu’une seule personne. Or (j’espère qu’) il se trouve bien une personne par SCD capable de manipuler un peu les fils RSS.

Je vous propose un pipe (qui s’étonne ? qui sourit d’un air narquois ? — au fait, ça se prononce “paÿpe”), qui fédère plusieurs sources. Au titre initial de chaque source il ajoute le nom de celle-ci :

Un module Loop intègre un module String Builder, qui concatène “[Bibliobsession]” + “Titre de l’item”

On fusionne tout ça, on trie par date de publication, et on tronque à 20 items.

J’ai préparé ce pipe avec 12 sources, ce qui n’est déjà pas si mal. Vous pouvez le cloner et l’adapter selon vos préférences.

Précision sur les sources mises par défaut :

  • j’ai sous-représenté les sources diffusant une information “technologique”, parce que ce n’est pas une préoccupation globale d’une bibliothèque, et ceux que ça intéresse ont déjà généralement leurs sources d’information sur ce sujet dans leur agrégateur.
  • Et j’ai intégré des sources institutionnelles et associatives, parce qu’elles produisent aussi une information sous cette forme.

Donc avec cet outil, vous obtenez un fil RSS intégrable dans un intranet, diffusant une information sur divers sujets. Vous n’aurez pas tous les sujets intéressant vos collègues — mais c’était déjà le cas avec Biblio-fr ! Ainsi, j’ai mis S.I.Lex, dont la richesse pédagogique sur les questions juridiques ne s’y retrouvait pas vraiment. En outre, vous pouvez aussi y intégrer le fil RSS de votre université ou de votre municipalité : ainsi vos collègues sauront enfin ce qui se passe dans un environnement un peu élargi :-) !

Yahoo Pipes propose un lien “Get as a Badge”, qui vous donne le code à insérer dans une page web “normale” pour y faire apparaître votre fil RSS.

Fournissez aussi l’adresse du fil RSS : si jamais des collègues savent ce que c’est…

“Oui, mais les mails, c’est quand même plus simple (et plus répandu) !”

Je ne le nie pas ! J’ai moi-même un très bon ami mail.

Donc à présent vous allez proposer à vos collègues un abonnement par mail à ce fil RSS. Vous allez voir, ça ressemblera beaucoup à Biblio-fr !

Créez un compte sur Feedburner (sauf si vous disposez déjà d’un compte Google : Feedburner appartient à Google et le compte du second peut resservir pour le premier).

Faites avaler le fil RSS par Feedburner, et allez dans l’onglet “Publicize”, pour activer la fonction “Email Subscription”

Voir le tutoriel vidéo

Feedburner vous donne un code à insérer dans la page web de votre intranet, pour qu’y apparaisse le formulaire d’inscription par mail au fil RSS.

Et pour finir je vous donne le code HTML d’une page très moche (sans couleurs) intégrant l’abonnement par mail et le contenu du fil RSS :

<html>
<head>
<title>Intranet – actualités</title>
</head>
<body>
<h1>Intranet – Actualités des bibliothèques</h1>

<!–Ici le formulaire d’inscription par mail–>

<form action=”http://feedburner.google.com/fb/a/mailverify” method=”post” target=”popupwindow” onsubmit=”window.open(‘http://feedburner.google.com/fb/a/mailverify?uri=ActualitsBibliothconomiques’, ‘popupwindow’, ’scrollbars=yes,width=550,height=520′);return true”>S’abonner aux actualités par mail : indiquez votre mail ci-dessous<br/>
<input type=”text” style=”width:140px” name=”email”/>
<input type=”hidden” value=”ActualitsBibliothconomiques” name=”uri”/>
<input type=”hidden” name=”loc” value=”fr_FR”/>
<input type=”submit” value=”S’abonner”/>
</form>

<!–Fin du formulaire d’inscription–>

<!–Ici le code pour insérer le fil RSS (code fourni par Yahoo)–>

<script src=”http://pipes.yahoo.com/js/listbadge.js”>
{“pipe_id”:”442cd973e9e5bae789b49ebef232e344″,”_btype”:”list”, “height”:”100%”, “width”:”40%”}
</script>

<!–Fin du code Yahoo–>

</body>
</html>

Et ce que ça donne à l’écran

Bon, c’est un peu plus joli quand le logiciel de gestion du site lui-même prévoit l’intégration de fils RSS (avec la charte graphique réutilisée). C’est le cas de Drupal, par exemple, comme dans Spip.

Voici ce que ça donne sur Confluence (logiciel de wiki) – sans le formulaire d’abonnement :
Copie d'écran - intégration d'un fil RSS sur Confluence

Voilà !

  • par ce biais vous diffusez une information sur le monde des bibliothèques (le choix des sources fera certainement l’objet de longues polémiques !)
  • vos collègues n’ont pas besoin de savoir ce qu’est un agrégateur (et vous n’avez pas besoin de les perturber en leur apprenant que les fils RSS existent, même s”ils savent — eux ou leurs enfants — utiliser des podcasts)

Si le résultat vous semble pertinent, si vous avez un peu suivi les tutoriels Yahoo Pipes, et si vous avez quelques connaissances en HTML (je m’adresse là à des personnes participant à l’enrichissement d’un intranet : logiquement ça devrait être le cas), vous ne devriez pas avoir de problème pour mettre ça en place.

Et la question technique ne doit pas vous arrêter : si vous avez un souci à une étape ou à une autre, mes coordonnées sont là.

Mais par ailleurs vous pouvez tout à fait juger que la solution proposée :

  1. est inadaptée : vous n’avez pas d’intranet !
  2. est inadaptée : ça ne permet pas du tout de retrouver la communauté Biblio-fr. Rappelez-vous que ce n’était pas mon objectif : ce que je visais, c’était permettre de disposer facilement d’une certaine actualité des bibliothèques. Constituer un des élément d’une communauté professionnelle, c’était un des autres rôles de Biblio-fr (mais ce n’en était pas une mission, ni à proprement parler un service).
  3. est inadaptée : pour retrouver la richesse du contenu de Biblio-fr (cf. ) il faut bien plus de 12 sources !
  4. est absurde : j’ai une vision exclusivement “technophile“, je suis un obsédé, et je ne vois pas que ce que je propose ne répond absolument pas au besoin de se tenir au courant de l’actualité des bibliothèques. Je ne saurai trop vous inviter à développer cette idée en commentaires (avec toute la courtoisie que l’exercice nécessite). Vous pouvez aussi en débattre sur Biblio-fr : je continue à suivre les messages par mon agrégateur.

PS : ce billet doit paraître pendant que je n’aurai pas accès à Internet. Ne m’en veuillez donc pas de ne pas répondre avant mardi :-)

PS 2 : il y a une prolongation possible de cette première proposition, pour ajouter un peu de souplesse dans un monde de brutes (pardon : dans ces sources “figées”). J’y reviendrai en début de semaine prochaine (sauf si entre temps vous m’avez montré le caractère illusoire de ce premier billet).

Un pipe pour une veille autour des revues en sciences humaines

Base Mirabe Est sortie il y a peu (en version “prototype”) une base de mutualisation pour la mise à jour des informations autour des revues en SHS.

Marlène en avait parlé, le BBF aussi.

Ce n’est pas forcément mon centre d’intérêt premier : je suis plutôt réservé face à ce risque d”épuisement des énergies pour la mise à jour de nos bases de revues en ligne. Mais comme c’est un travail mutualisé, c’est un moindre mal ; surtout, l’utilisation de Yahoo Pipes me semblait un exercice intéressant.

Cette base propose des informations bibliographiques sur toutes les ressources qu’elle référence, informations que nos collègues s’efforcent de mettre à jour autant que possible.

Pour chaque revue donnée, il y a un fil RSS correspondant, pour suivre les actualisations de la notice. Voilà un outil fort utile. L’URL de chaque flux RSS est structurée ainsi :

http://www.reseau-mirabel.info/rss.php?object=revue&id=identifiant_interne_de_la_base

Sauf que le responsable de la documentation électronique d’un établissement, qui ne peut pas connaître les identifiants Mir@bel pour ses revues, est obligé de chercher revue par revue pour s’abonner à chaque fil RSS. L’idéal pour lui serait qu’il puisse entrer une liste d’ISSN, et avoir un fil RSS unique pour toutes ses revues.

J’ai donc élaboré un pipe qui fait les manipulations suivantes :

  1. on lui donne une liste d’ISSN, séparés par des points-virgules
  2. il construit une requête sur chaque ISSN : il concatène
    http://www.reseau-mirabel.info/index.php?termes=“, ISSN, “&action=recherche&methode=simple
  3. Il ouvre chaque page de résultats correspondant à ces URL : ces pages contiennent, toujours au même endroit, le lien vers la revue auquel correspond l’ISSN. Ce lien est structuré ainsi :
    http://www.reseau-mirabel.info/index.php?action=show&object=revue&id=identifiant_interne_de_la_base.
  4. Il récupère cet identifiant interne
  5. Il construit l’URL du fil RSS correspondant à chaque revue.
  6. Il ouvre chacun des flux RSS.

En fait, ce flux ressemble assez, par certains côtés, à celui du tutoriel 8 : au lieu de rentrer un flux RSS dans le pipe, on récupère une information qui permet de construire l’URL de ce flux, pour le produire en sortie.

Cette manipulation s’effectue à l’avant-dernière étape : pour chaque URL de flux construite, au lieu de “sortir” l’URL elle-même, on “émet” le contenu du fichier ayant cette URL (la case cochée par défaut est toujours “Assign results”, il faut donc penser à choisir l’autre option).
Copie d'écran de la case Emit results au lieu de Assign results

Cela peut vous donner une idée de ce à quoi sert un web service : une telle base peut proposer ce genre de fonction nativement, à savoir qu’il suffit de lui donner une information sous une forme standard (par exemple : un ISSN intégré dans une URL construite d’une certaine manière) pour que la base renvoie un fichier XML avec d’autres infos associées à cette information initiale (par ex. l’identifiant, ou le flux RSS correspondant à cet ISSN).

En reprenant le pipe décrit ci-dessus, on pourrait sans trop de difficulté l’améliorer pour que, à une liste d’ISSN en entrée, il produise en sortie une liste d’états de collections, ou tout autre information présente dans les notices (langue, URL, URL du flux RSS de la revue, etc.). Un tel usage ne serait pas tellement pour suivre les mises à jour, mais pour extraire une série d’informations à un instant donné au sujet de vos abonnements.

Si vous avez des besoins particuliers associés à cette base, n’hésitez pas à me demander un pipe adapté.

> Voir (et utiliser) le pipe

Remarque 1 : j’ignore quel est l’état actuel de la base et sa richesse. Il se peut donc que lorsque vous rentrerez votre première liste d’ISSN, le fil RSS produit soit vide (si aucune de ces notices n’a été mise à jour).

Remarque 2 : le fil RSS produit contiendra tous les ISSN que vous aurez indiqué au pipe. Donc le navigateur peut avoir du mal à avaler une URL trop longue (c’est variable selon les navigateurs, il me semble). Voici les différences selon les navigateurs. J’ignore par ailleurs si un agrégateur peut avoir des difficultés avec une URL de plusieurs centaines ou milliers de caractères. Vous me raconterez ;-) !

Remarque 3 : je ne vous ai pas du tout présenté l’interface. Vous êtes grands ! :-) Notez tout de même la possibilité pour tout un chacun de modifier une notice (les modifications en mode anonyme devant être validées par un modérateur).

Remarque 4 : on peut retrouver le fil RSS de toutes les modifications (toutes revues confondues) en reprenant le fil d’une revue (par exemple : http://www.reseau-mirabel.info/rss.php?object=revue&id=533) et en supprimant la référence à l’identifiant. Ce qui donne : http://www.reseau-mirabel.info/rss.php?object=revue.

————————————

Précisions données par les porteurs du projet :

  • Le développement de web services pour les partenaires fait  partie du plan de développement de Mirabel (qui sera présenté lundi 8 juin, lors du lancement officiel). A terme donc, ce pipe n’aurait plus grande utilité. L’équipe ne refuse pas “l’idée de construire les  url avec l’issn comme alternative à l’id interne, et nous avons aussi en projet la possibilité d’alimenter un sigb (koha) par webservice”.
  • En devenant partenaire de Mir@bel, “vous aurez alors accès aux fonctions avancées d’export des données et
    si vous ajoutez vos identifiants locaux pour les revues que vous possédez, alors, vous aurez beaucoup plus qu’un fil RSS par titre ! “
  • “Enfin, pour éviter l’épuisement, nous avons mis en place un outil de collecte automatique pour les ressources lorsque c’est possible (pour Cairn, Persee et Revues.org, pour commencer) et que nous souhaitons élargir le réseau de partenaire pour que chacun ait le moins de travail à accomplir. “

Yahoo Pipes : tutoriel 8 (manipulation complexe de fils RSS)

Liste des tutoriels Yahoo Pipes

Cette fois-ci, plutôt que de créer un fil RSS — ce qui est très bien, très pédagogique, mais ne permet pas de faire des choses complexes — je vous propose d’en regarder un existant, qui soit complexe, pour le décortiquer.

En l’espèce, celui de @jsicot sera très bien. Ce pipe permet de faire une veille simultanée sur 7 services de gestion de favoris en ligne.

Pour faire une veille thématique (par exemple sur les archives ouvertes), il peut être très intéressant de se tenir au courant de ce qui intéresse les autres, donc de suivre l’enrichissement de bases comme Delicious ou Connotea. Mais deux constatations s’imposent :

  1. il existe un certain nombre de services en ligne
  2. il existe plusieurs termes susceptibles de servir de tags pour désigner des domaines de veille comme celui-ci : archivesouvertes, archives_ouvertes, ao, oai, open_archives, openarchives, etc.

Cela représente donc beaucoup de fils RSS

Le fonctionnement du pipe de @jsicot est :

  1. de mettre dans un champ unique tous les termes susceptibles de servir de tags, avec un séparateur spécifique (la virgule, ou le point-virgule).
  2. pour chaque terme saisi (le nombre est variable), de l’envoyer à chacun des services de gestion de favoris en ligne (il en a paramétré 7)
  3. de récupérer les fils RSS correspondants, de les fusionner
  4. de les dédoublonner (sur le critère de l’URL)

La principale difficulté est dans la 2e et la 3 étape : il faut faire des boucles (module “loop”) pour que, pour chaque terme (1ère boucle) et pour chaque service (2e boucle) il y ait un fil RSS généré. La fusion de fils RSS ne devrait en elle-même pas être un problème : c’était l’objet du premier tutoriel.

Voyons à présent ce que ça donne.

Voir la vidéo

Le pipe présenté est ici.

PS : toujours la même remarque qu’avant. Vous êtes invité à réagir si ce n’est pas clair. Vous pouvez me demander aussi de refaire la même chose avec un autre pipe (plus simple ou plus complexe, ou un que vous auriez trouvé et que vous aimeriez comprendre, etc.).

PS 2 : notez que ce pipe ne contient pas d’expressions régulières. Mine de rien, j’essaie de séparer les difficultés ;-)

Yahoo Pipes : tutoriel 7 (créer un fil RSS)

Liste des tutoriels Yahoo Pipes

On entre enfin dans les vraies possibilités de Yahoo Pipes.

Les tutoriels qui précèdent montrent des fonctions utiles, et qui justifient l’utilisation de l’outil : utiliser Yahoo Pipes pour filtrer un seul fil RSS sur un mot-clé est légitime, c’est rapide, et ce n’est pas sortir la grosse artillerie pour tirer le perdreau. Mais Yahoo Pipes est un outil remarquable pour générer des fils RSS sur des pages qui n’en proposent pas : page d’actualités, liste de résultats dans un moteur de recherche.

Là, une remarque annexe : lorsque je génère ce genre de fils, je le rends très rarement public, car il pose tout de même la question de la propriété des données. En effet un site qui propose un fil RSS s’attend à ce que son contenu soit lu ailleurs que su le site lui-même. L’auteur d’un site qui n’en propose pas peut s’être fait la réflexion inverse, et vouloir précisément que les internautes viennent sur son site au lieu de lire ces informations ailleurs (pour des questions de publicité, ou d’autres). Je n’ai pas d’attitude type à proposer, mais je voulais tout de même signaler le problème : l’auteur d’un site ne sera pas forcément ravi si vous diffuser son contenu à tous les agrégateurs.

De quoi est composé un fil RSS

Un fil RSS, c’est un fichier XML composé de balises <item>.

Dans ces items, il ya 3 éléments clé :

  1. le titre
  2. le lien (vers le site d’origine)
  3. la description (qui peut être un résumé du billet, ou son contenu intégral).

Sur une page d’actus comme celle des archives départementales du Bas-Rhin, il faudra donc que dans le code HTML je détermine

  1. ce qui caractérise un item (donc : qu’est-ce qui sépare un item — une actu — d’un autre)
  2. ce qui, dans cet item, constitue
    • le titre
    • le lien (si l’item renvoie vers une page plus complète)
    • la description (le corps de l’item)

Donc je vais créer un pipe

  1. en indiquant ce qui permet de distinguer un item de l’autre (chaîne de caractères systématique)
  2. en indiquant, pour chaque item, ce que sont le titre, le lien et la description.

La notion “pour chaque item” s’exprime en informatique sous le terme de boucle (en anglais : loop). Donc dans mon pipe je vais faire 3 boucles disant successivement que pour chaque item :

  • le titre est situé entre telle et telle balise HTML
  • le lien entre telle et telle balise
  • la description entre telle et telle balise.

Deux nouvelles expressions Perl

A ce stade, le caractère . ne suffit plus. En effet il désigne tout caractère sauf le saut de ligne.

Or il faut

  1. pouvoir chercher “tout caractère, y compris un saut de ligne”
  2. tout caractère, sauf un caractère précis (par exemple, tout caractère sauf un guillemet.

Il n’existe pas de raccourci Perl pour le premier cas. En revanche il existe

  • \d : tout chiffre
  • \D : tout ce qui n’est pas un chiffre

Et si je demande à Perl de chercher [\d\D]*, il trouvera n’importe quel chiffre ou non chiffre, en nombre nul ou illimité : donc n’importe quoi.

Pour chercher tout caractère à l’exclusion d’un seul, par exemple tout caractère (en nombre indéfini) sauf #, il faut le faire précéder de l’accent circonflexe ^ :

  • [^#]*

A noter :

  • les crochets servent à désigner un ensemble de caractères (ou des raccourcis Perl). Ainsi [a-z] permettra de chercher toute lettre de l’alphabet en minuscules, et [a-zA-Z] toute lettre de l’alphabet, en minuscules ou majuscules (si vous voulez que ce soit en nombre indéfini, il faut mettre une * après). C’est pourquoi si on cherche spécifiquement les caractères [ et ] (comme c’était le cas dans le tuto 6), il faut les faire précéder de l’antislash.
  • Je vous rappelle l’existence de cette page pour connaître davantage d’expressions régulières Perl.

Place aux vidéos qui bougent

Je redonne le lien vers le site des AD du Bas-Rhin que j’exploite honteusement ici.

J’ai été obligé de découper en 2 vidéos (Jing me limite à des screencasts courts, mais ce n’est sans doute pas plus mal…)

Vidéo 7-1 : Préparation des modules

Vidéo 7-2 : Expressions régulières avec du code HTML

Et voilà le pipe produit

Pré-requis : il faut connaître un peu le HTML, sa structuration, quelques balises (pour les liens, les tableaux, les paragraphes, etc.)

N’hésitez pas à regarder de nouveaux les vidéos, mettre la lecture en pause, etc. J’ai fait rentré beaucoup de choses dans ces 2*4 minutes.

Et après ?

Si vous êtes encore là, vous avez passé le plus dur.

On pourra voir par la suite

  • la géolocalisation
  • l’enrichissement des descriptions (par exemple, un fil RSS de notices bibliographiques enrichi de rebonds vers différentes plates-formes)
  • et peut-être d’autres choses si j’ai des idées d’ici là.

Bon, la prochaine fois, pour se reposer, j’analyserai un fil RSS existant, combinant tout un tas de choses déjà vues. Ce sera une petite révision ;-) .

« Articles plus anciens