Aller au contenu principal

Yahoo Pipes : tutoriel 5 (remplacement de texte)

29/04/2009

Liste des tutoriels Yahoo Pipes

Logiquement, la notion de Chercher – Remplacer vous est familière, parce qu’existant dans tous les outils bureautique.

Chercher-remplacer classique

Appliquée à un fil RSS, la logique est la même : dans le fil RSS auquel vous vous êtes abonné, il y a des contenus qui vous gênent. Dans l’exemple de la vidéo ci-dessous, ce sont les caractères spéciaux : il y a un problème d’encodage (confusion entre iso8859-1 et UTF-8), et ça m’énerve. Donc je vais faire passer le fil RSS par Yahoo Pipes pour remplacer

  • tous les ê en ê
  • tous les é en é
  • tous les à en à
  • etc.

En outre, il s’agit de liens qui me renvoient à des notices sur LibraryThing, dans sa version anglaise (URL en librarything.com), et je veux que les liens pointent vers les mêmes notices, mais avec l’interface en français (même URL, mais en librarything.fr).

Voir la vidéo

Pardonnez ma voix fatiguée : je suis fatigué. Si quelqu’un veut la refaire 😉 …

Voici le pipe produit. Notez au passage que par défaut Yahoo Pipes propose un affichage « image » que je ne connaissais pas, et qui ici ne sert pas à grand chose. Donc cliquez sur « List ».

Début d’initiation aux expressions régulières

Les expressions régulières (regular expressions, ou regex), c’est un outil qui vous permet de chercher des mots avec des variables.

Par exemple, si vous avez un fichier avec des ISSN « compacts » (sans tiret) où vous voulez introduire un tiret central, il vous faut

  • chercher toute série de 8 chiffres consécutifs
  • le remplacer par 4 chiffres – tiret – 4 chiffres

Le fil RSS ici présent est lui-même une fusion de plusieurs sources, et mentionne leur origine : dans le titre des items, on trouve ainsi, rajouté au titre d’origine : « (via LibraryThing) », « (via Google Reader) », etc.

Dans le cas présent, j’ai besoin de remplacer tout ce qui commence par « (via  » et qui se termine par « )« . Entre les deux, il peut y avoir n’importe quel caractère (sauf un saut de ligne).

Yahoo Pipes utilise le langage de programmation Perl pour ses fonctions d’expressions régulières, parce qu’il est particulièrement riche pour cela.

En Perl, il existe un caractère générique qui permet de désigner n’importe quel caractère sauf un saut de ligne : c’est « . » (le point).

Donc il va falloir chercher

  • « (via « 
  • suivi de n’importe quel caractère (répétable)
  • « ) »

Pour exprimer qu’un caractère peut être répété, c’est * (l’astérisque).
Donc au final, je vais chercher

(via .*)

et le remplacer par rien.

[Bon, en réalité je serai obligé de chercher

\(via .*\)

parce que les parenthèses ont un rôle particulier, et que pour signifier à Yahoo Pipes que ce sont vraiment les caractères « ( » et « ) » que je cherche, je dois mettre un anti-slash « \ » devant.L’utilisation de ces parenthèses sera essentiel pour la suite, c’est pourquoi je suis obligé d’insister maintenant.]

Voir la vidéo

Voici le pipe (c’est le même que le précédent, cloné, avec un encart de plus).

Expressions régulières : pour aller plus loin

Si déjà vous piaffez d’impatience sur les expressions régulières, et que vous voulez savoir comment exprimer « Tout chiffre (mais pas de lettre) », tout signe de ponctuation, toute lettre, etc. ;

Si vous voulez déjà savoir comment récupérer une partie du texte cherché pour le mettre dans le texte remplacé ;

Bref, si vous voulez déjà apprendre sans attendre les tutoriels suivants, voici une page qui liste comment désigner 4 chiffres (\d\d\d\d), etc. (lire la page à partir de l’expression surlignée en jaune)

[Remarque : les puristes traduisent regular expressions par expressions rationnelles. Ils ont raison.]

8 commentaires
  1. 30/04/2009 09:36

    Bon, si c’est pas clair il faut me le dire maintenant !
    Parce que ce sera pire après…

  2. Isabelle permalink
    06/05/2009 09:08

    Si, si c’est clair et intéressant.
    Et puis la voix fatiguée passe très bien 🙂

  3. yahoo pipe regex, remplacer les div ... permalink
    13/06/2009 10:44

    Bonsoir,

    voila ca marche pas chez moi : je veux remplacer tous les <div de mon flux mais j'y arrive pas ! il s'agit de :

    entre autres …

    j’ai essayé le \(via .*\) mais il me remplace tous le contenu de description !

    help !

  4. 16/06/2009 13:19

    Il faudrait que je vois le code pour comprendre. Et là, il y a un problème de copie d’écran sans doute (impossible dans les commentaires sous WordPress).
    Quand vous cherchez une expression régulière (par exemple \(via .*\) )
    il faut penser à intégrer dans le texte à chercher les termes qui ne vous intéressent pas :
    donc ici, dans la case « chercher », il ne faut pas mettre :
    \(via .*\)

    mais :
    .* \(via .*\)

    Car il y a toujours du texte qui précède la parenthèse.
    Si Yahoo Pipes ne trouve pas de correspondant au texte recherché, il réinjecte l’intégralité du texte trouvé (il met tout plutôt que rien).

  5. 24/05/2010 19:00

    Merci pour ce superb tuto, j’ai une question par contre : peut-on utiliser yahoo pipe pour autre chose que de créer des flux rss ? je cherche a traiter une page internet de façon à supprimer certains balises html (<a>) et remplacer d’autre par du h2 sans créer un flux rss ou autre chose juste récupérer le code de la page, utiliser les expressions régulières et outpout un code propre …

  6. 24/05/2010 20:06

    @JS : non, malheureusement Yahoo Pipes ne propose en sortie que du RSS ou du JSON. Quand on lui donne en entrée des pages HTML, il ressort les pages HTML encapsulées dans du RSS (donc du XML).
    Cela dit, je ne sais pas pour votre projet si la solution suivante conviendrait : si vous mettez en entrée une page, vous récupérer un flux RSS avec un seul item.
    Cet item, vous pouvez l’afficher dans une autre page grâce au service « badge » (icône en haut à gauche de la liste de résultats d’un pipe).
    Mais à mon avis, ce n’est pas la meilleure manière de faire pour obtenir le résultat souhaité (cela dit, je n’ai pas un meilleur outil à vous proposer à la place…)

Trackbacks

  1. bookmark from diigo 05/02/2009 : Relation, transformation, partage
  2. Yahoo Pipes : tutoriel 6 (Expressions régulières) « Encore un biblioblog…

Commentaires fermés