Yahoo Pipes : tutoriel 7 (créer un fil RSS)
Liste des tutoriels Yahoo Pipes
<update>14/01/2013 : Le module Fetch Page a été mis en « deprecated » par Yahoo Pipes, et un module XPath Fetch Page est venu le remplacer. Un tutoriel existe désormais pour ce nouveau module</update>
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é :
- le titre
- le lien (vers le site d’origine)
- 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
- ce qui caractérise un item (donc : qu’est-ce qui sépare un item — une actu — d’un autre)
- 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
- en indiquant ce qui permet de distinguer un item de l’autre (chaîne de caractères systématique)
- 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
- pouvoir chercher « tout caractère, y compris un saut de ligne »
- 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
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 ;-).
Trackbacks
- Des flux RSS à une veille de surface (5) « Posts « Le blog de Voyelle.fr
- GROS (yunangie) | Pearltrees
- Yahoo Pipes | Pearltrees
- Yahoo Pipes : tutoriel 11 (module XPath Fetch Page) « Bibliothèques [reloaded]
- Twitter : générer des flux RSS avec la nouvelle API » Stratégies digitales
Commentaires fermés
Je viens de découvrir vos vidéos…super travail !
Je vais regarder ça de plus près, et combler mon retard sur Yahoo Pipes (je me débrouille avc autre chose pour créer des flux)
Merci. Je ne sais pas si le résultat est « super », mais il semble que personne d’autre (depuis le temps que Yahoo Pipes existe) ne se soit décidé à le faire, alors…
Comme outil permettant de créer des flux, Feed43 est ce que je connaissais de plus souple jusque là. Ponyfish ne m’a pas convaincu longtemps. Et j’ai pour l’instant abandonné Tarpipe (qui remplit certaines fonctions de Yahoo Pipes, mais ne permet pas de regex).
S’il y a d’autres outils performants (et documentés, pour une fois), je suis intéressé.
Je me souviens avoir été très enthousiasmé par Yahoo Pipes à sa « sortie » mais par manque de temps je ne m’y suis pas mis.
Pour créer des flux j’utilise dapper (http://www.dapper.net/dapp-factory.jsp),
ça m’évite de rentrer dans le code mais je vois Pipes comme un bon complément lorsqu’on atteint les limites de ce genre d’outil.
Je ne connaissais pas Dapper. Je vais regarder, merci beaucoup.
Bonjour,
Super boulot 🙂
Pourriez vous créer un tutoriel pour récupérer le texte complets des articles d’un flux RSS ?
Mouai !
On sent bien que vous maîtrisez ce sujet mais à quoi bon sortir des outils si complexes qui ne seront utilisés que par quelques personnes ayant beaucoup de temps à y consacrer !
Ce truc propose certes des fonctionnalités intéressantes, mais ça ne suffit pas pour en faire un outil indispensable. La deuxième condition est la convivialités, ici on est immergé dans une usine à gaz imbuvable ou le seul fait de l’utiliser est déjà une activité à part entière…
@Gemel : Je n’ai pas écrit un exposé vibrant pour inciter à utiliser Yahoo Pipes. Pour cela, il y a toutes les applications que j’en fais pour mon propre usage et que je mentionne çà et là sur mon blog, applications que je ne saurais faire autrement.
Ceci est un tutoriel, il s’adresse aux convertis.
Ne m’en veuillez donc pas si, en l’espèce, je ne trouve rien à vous répondre.
Merci pour votre tuto cela fait 3 semaines que je cherche un moyen efficace de créer des RSS, si vous avez d’autre tutos merci de nous mettre les liens
Bonjour, et encore merci pour tes tutos. Je souhaiterais créer des flux Rss à partir de site (leboncoin ou dealip) pour mettre en place un système de veille pour mon stage.
à chaque fois j’ai « Preview Failed problem receiving response data » aurais tu une explication stp? et une solution
le pipe
TEST HTML en flux RSS
Problème d’URL Preview Failedproblem receiving response data
http://pipes.yahoo.com/pipes/pipe.info?_id=4bddabf302be94920f0f42b22c564119
Pourquoi la description de s’affiche pas entièrement?
Existe t’il une solution pour obtenir tout l’article?
03 mars : ouverture de la salle à 10 heures
La réunion de service mensuelle, qui a lieu le premier jeudi du mois, se tiendra Jeudi …
@Mathieu : je ne comprends pas les deux questions coup sur coup.
Sur le pipe vers lequel vous pointez : il y a un souci dès le premier module (Fetch Page) puisque le code que vous indiquez comme étant le début du texte à analyser serait aussi le code séparant chacun des items entre eux.
Cela, ça pose forcément problème à Yahoo Pipes !
Bonjour
merci pour le tutoriel. Comme le disait Benoa super travail.
J’ai essayé de faire un flux RSS mais au lieu de prendre le titre dans le premier <a> il le prendre dans le dernier. Conclusion = j’obtiens « 1 comments » en place du titre que je vise. Je parle ici du site « Emerging challenges » à l’adresse suivante http://jeahil.wordpress.com/.
Moi aussi je trouve Yahoo pipes un peu compliqué, n’eut été de votre tutoriel, jamais je n’aurais pu comprendre comment ca fonctionne. La section Help est peu efficace.
merci de votre aide
@Marthegag : où est le pipe en question ? (pour que je comprenne ce que vous avez commencé à faire)
Au fait, quel est l’intérêt de faire un pipe sur un blog WordPress qui propose déjà tous les flux RSS possibles ?
Bonjour,
Tout d’abord bravo et merci pour ces tutoriels très bien faits!
J’ai déjà créé un premier flux RSS avec succès sur YahooPipes grâce aux tutoriels, mais je bute sur un deuxième.
Voici le code du content récupéré:
» id= » »>
StorageCraft livre blanc : De la sauvegarde à la reprise d’activité
Ce que je souhaite récupérer pour mon title est:
StorageCraft livre blanc : De la sauvegarde à la reprise d’activité
Mais je n’arrive pas à entrer la bonne expression dans le string regex…je pense que ma difficulté vient des sauts de ligne…
Merci par avance pour le coup de main!
Le code n’est pas passé, je le reposte avec des tirets (désolé pour le spam^^)
— » id= » »>
—
—
–StorageCraft livre blanc : De la sauvegarde à la reprise d’activité
—
—
Bon toujours, pas, je mets le lien vers le Pipe, ce sera plus simple!
(Encore dsl pour le spam, il manque la fonction « prévisualisation » sur ce forum :=) )
http://pipes.yahoo.com/pipes/pipe.info?_id=216db964b9f7abecef424412a2c88e03
@Yan : je confirme, c’est plus simple avec l’URL du pipe !
D’abord, une petite mais importante erreur : ce sont des antislash qu’il faut et non des slash dans [\d\D]
Ensuite, pour récupérer la valeur entre
<div class="c">
et</div>, comme on voit qu'il n'y a jamais de balise dedans, mais qu'il peut y avoir des sauts de ligne (donc le . ne fonctionne pas), on peut écrire :
([^>]*), ce qui permet de récupérer tous les caractères à l'exclusion du chevron <
Et enfin, comme la
<div class="c">
est présente plusieurs fois dans le item.content (mais cela, vous l'aviez vu), il faut effectivement ne garder que le premier, qui est précédé de<div class="hd">
(les deux div étant séparés de caractères d'espacement, que ce soit des espaces, des tabulations ou des sauts de ligne : on peut donc l'écrire \s)Je vous propose donc :
[\d\D]*<div class="hd">\s*<div class="c">([^<]*)<[\d\D]*
qui marche bien
Ca marche super!
Merci beaucoup, et encore bravo pour tous ces tutoriels!
Bonjour,
Je suis stagiaire en veille stratégique, et je m’intéresse depuis une semaine à la création de flux RSS à l’aide du logiciel Yahoo Pipes. Je vous remercie pour ces tutoriels qui m’ont bien aidée; cependant, je rencontre des flux « récalcitrants » qui me posent problème…!! Pourriez-vous m’aider s’il vous plaît? Voici la liste:
UKRAINE:
http://pipes.yahoo.com/pipes/pipe.info?_id=0e4ba103355eaad94a89732dccb8e7e5
« O item » dès le début…
Idem pour PAKISTAN et IRAN:
http://pipes.yahoo.com/pipes/pipe.info?_id=be44f55fc61668995429535504ed1d79
http://pipes.yahoo.com/pipes/pipe.info?_id=6ad32a8eab4465f0d2638471ac6bdb4a
COREE DU SUD:
http://pipes.yahoo.com/pipes/pipe.info?_id=0fadaa429745544d65d993416cf06739
« Error fetching http://www.kari.re.kr/eng/bbs/bbs_index.asp?catcode=1210000000&depthno=3: java.nio.charset.UnsupportedCharsetException: en: en »…
ESPAGNE:
http://pipes.yahoo.com/pipes/pipe.info?_id=028d145f6a371f1dcf7418380ab88909
Pb au niveau du Regex de la description, le reste marche…
BELGIQUE:
http://pipes.yahoo.com/pipes/pipe.info?_id=a562e7646c97c387236c88cf06280242
On a l’impression que ça marche dans « view results », mais en fait, quand on le met en RSS, il y a un souci au niveau des titres, ce qui est d’ailleurs visualisable dans le premier loop…
ALGERIE:
http://pipes.yahoo.com/pipes/pipe.info?_id=ccc02423114ae11614ddac28d84bd931
Le code source de la page montre que le codage n’est pas exactement le meme pour toutes les actualités, du coup j’ai des problèmes au niveau de mes loop…
MERCI pour votre aide, cela me débloquerait grandement !!
Bonjour,
J’étais utilisateur de ponyfish (qui n’est plus maintenu), puis de dapper (avec assez peu de résultat) et le tuto de pipes est vraiment très intéressant. Malheureusement j’ai du raté quelque chose car le pipe http://pipes.yahoo.com/pipes/pipe.info?_id=5a4a03a10cbf28ef994b2ce5a91c3004 ne fonctionne pas. Dans le debugger le début et la fin de plage sont bien identifiés, c’est le changement d’item qui pose problème (j’ai un seul >0). Ce qui me semble être la fin d’un item est »
» que je traduis par /\s/* ou /\s/+ ou /[\ \t\r\n\f]/* ou [\d\D]* ou \s* ou \s*, et rien ne fonctionne.
Par avance, merci de votre aide
@Olivier : dans le Fetch Page, le dernier champ (qui indique le séparateur) ne tolère pas, à ma connaissances, les expressions régulières.
Il faut donc mettre </tr> au lieu de </td>/s*</tr>
Merci de votre réponse; mais il y d’autres balises intermédiaires et non systématiques. Et donc certains résultats sont tronqués.
@Olivier : et en mettant en séparateur :
class="date"
?Il faut alors virer le premier élément (par exemple avec le module Filter pour enlever tout ce qui ne contient pas href)
Très bonne idée, le filtre; par contre j’ai une fin de semaine un peu chargée, donc je regarde la semaine prochaine.
En tout cas, pipe parait vraiment génial mais un peu dur d’accès et ces tutos me sont déjà indispensables.
Bonjour, je sollicite à nouveau votre aide car je ne m’en sors pas. Concrètement dans votre exemple, dans le filtre dans les items proposés vous avez « content » qui correspond à la sortie du « fetch page ». Dans mon cas, la sortie du « fetch page » j’ai bien des items « content » mais dans le filtre (ou le loop c’est pareil) les items proposés sont « author », « description », « link », « pubdate », « title ». Et je n’arrive à utiliser aucun de ces champs. Avez vous une idée ?
@Olivier : Dans le filtre de ce pipe, effectivement, le module Filter propose par défaut les champs classiques d’un fil RSS. Mais rien ne vous empêche de ne rien choisir dans la liste et d’écrire simplement : « item.content ».
Dans la suite du pipe, il faudra bien évidemment utiliser trois module Loop successifs (avec chacun un module String Regex à l’intérieur) pour attribuer les valeurs indispensables à chaque item : item.title, item.link, item.description.
Je suis, quand même, resté bloqué 5 jours sur ce problème (alors qu’il suffisait de saisir de content) !!!! Maintenant je vais pouvoir reprendre l’application du tuto.
Un très grand merci.
Ca y est, je l’ai ! Un grand merci pour le tuto et pour l’aide super réactive. En tout cas, j’adore déjà yahoo pipes et je pense que je vais approfondir tout ça.
Bonjour,
Est-ce que vous savez s’il est possible lorsqu’on a un ficher xml (avec des items ayant chacun un titre, une description et un lien), de filtrer le contenu du lien de chaque item ? Parce qu’un filtrage sur la description seule ne suffit pas, je loupe beaucoup d’informations.
Merci d’avance si quelqu’un a une idée.
@Mike : je ne suis pas sûr de comprendre quelle est votre difficulté.
En ajoutant un module Filter dans la chaîne, vous pouvez demander qu’un mot, ou plusieurs, soit présent – ou pas – dans le item.link, ou dans le item.description, ou dans le item.title.
Si vous voulez filtrer pour qu’un mot sans présent/absent à la fois dans les 3 champs, vous pouvez répéter la consigne de filtre.
Le mieux, si mon explication ne vous éclaire pas, est de me fournir le lien vers le pipe qui vous tracasse, et de me préciser votre question par un exemple précis…
Merci Etienne d’avoir répondu aussi rapidement !
J’ai fait plusieurs essais avec différents sites et en fait si je filtre sur item.link, ça ne filtrera que l’adresse http en elle-même, mais pas son contenu. Ce que j’aimerais c’est un filtre capable de filtrer la page à laquelle renvoie le lien parce que souvent un titre et une description succincte ne suffisent pas.J’ai pu m’en rendre compte à plusieurs reprises.
J’ai bien essayé de créer un item.content, mais je tourne en rond. Si vous avez une idée, je la prends volontiers !
Voici un exemple : http://pipes.yahoo.com/pipes/pipe.info?_id=e0d625b87d415f9bd077cb96facd35be
Dans ce cas malgré mes efforts, le filtre ne marche pas sur le contenu entier de la page.
@Mike : vous avez bien fait de préciser, je n’avais rien compris. Là, ça va mieux.
Donc il vous faut prendre un module Loop, et à l’intérieur mettre un « Fetch Page », dont l’URL sera item.link.
Le contenu, vous l’envoyer dans un truc du genre « item.page »
Ainsi vous aurez stocké, dans chaque item, le contenu intégral de la page derrière le lien item.link.
Ensuite vous pouvez faire un filtre (module Filter) sur le contenu de ce item.page.
Suis-je clair ? Est-ce satisfaisant ?
@Etienne : Un immense merci ! C’est tout à fait ce que je voulais et ça marche ! J’aurais mis du temps avant de trouver la solution. Merci mille fois !
Bonjour,
Je rencontre un souci.
Voici ma phrase par exemple: Bonjour (prénom) Pierre, il fait (temps) beau.
J’utilise le module Regex replace \(.*\) with « rien ».
Le problème c’est que cette solution supprime toutes les parenthèses, hors je souhaite supprimer que la 1ere.
Comment faire?
Autre chose, comment insérer un espace?
Merci
Re-Bonjour,
J’ai fait quelques progrès avec Yahoo Pipes et j’aimerais savoir si vous avez une solution au problème suivant. Sur le lien suivant : http://tinyurl.com/89gmctk les dates sont relatives (- 24 heures, – 3 jours, …). Y-a-t-il un moyen de récupérer la date du jour pour « fabriquer » une date de publication ? Par avance, merci.
P.S. : En travaillant sur Yahoo Pipes j’ai forcément travaillé les expressions régulières et je suis tombé sur ce lien : http://lumadis.be/regex/test_regex.php, je le trouve très utile.
@Mathieu : dans le module Regex (Replace), il y a dans la partie droite des petites cases cochables avec les valeurs : g, s, m, i
La case « g » cochée signifie : Traiter toutes les occurrences.
Si elle n’est pas cochée, logiquement, ça ne traite que la première occurrence.
Si j’ai répondu à côté à votre problème, alors il vaut mieux me fournir l’URL du pipe qui vous bloque, afin que je puisse mieux le comprendre.
Et je n’ai pas compris la dernière question.
@Olivier : en utilisant le module Date > Date Builder, vous pouvez y écrire « today », par exemple.
Cela vous produit la date sous la forme d’un ensemble de valeurs (jour, mois, etc.)
Si vous voulez ensuite la structurer d’une certaine manière (AAAA-MM-JJ par exemple) pour l’introduire dans l’URL de la page à traiter, il faut utiliser ensuite « Date formatter » en y mettant le code qui vous convient
(liste abrégée des codes disponibles – liste complète)
Si la forme que vous voulez ne s’y trouve pas, il faudra alors utiliser un Build String en concaténant les différents champs de la date produits par « Date Builder ».
Bonjour,
Merci Etienne. Voici le lien: http://pipes.yahoo.com/pipes/pipe.info?_id=ce618c3fe4fb3d3326a486ecffe27d88
Résultat: RT @fgandi . http://t.co/zuXFDkov #Clermont #Auvergne
Résultat voulu: RT @fgandi Découverte du jour : la #T2C a un site pour mobiles (mais bcp de fonctions ne marchent pas). http://t.co/zuXFDkov #Clermont #Auvergne
Que signifie les autres cases (g, s, m, i)?
Concernant ma 2eme question, comment insérer un espace exemple (module Regex) replace « pierre » with “ ” (sans les » « ).
Mat
@Mathieu : j’ai compris : la recherche du \(.*\) va de la 1ère parenthèse trouvée à la dernière parenthèse trouvée.
Il cherche la plus longue occurrence.
En fait, au lieu de chercher tout caractère (ce qu’exprime le point), il faut chercher « Tout caractère sauf une parenthèse fermante : [^)]
Le caractère ^ permet d’exclure ce qui suit.
Donc en 1ère partie du regex, il faut : \([^)]*\)
Pour la signification des cases : http://discuss.pipes.yahoo.com/Message_Boards_for_Pipes/threadview?bn=pip-DeveloperHelp&tid=3410&mid=3414
Pour l’espace : ma foi, quand je mets simplement un espace dans le 2e champ du Regex, il vient remplacer correctement ce qui a été trouvé dans le premier champ. Je ne vois pas de difficulté particulière sur ce point (ce qui veut sans doute dire que je n’ai toujours pas compris).
Bonjour,
Merci pour ta réponse.
Elle répond à ma question et donc du coup, je n’ai plus besoin d’espace.
Mais je vais quand même tenter dans un prochain post de t’expliquer.
Mat
Bonjour !
J’aimerais savoir si quelqu’un a déjà eu le même problème que moi et si vous savez comment le résoudre. Je m’explique.
J’ai créé un fil RSS à partir d’une liste d’articles et il semble parfaitement fonctionner. Mais quand je l’ajoute sur Netvibes, je n’ai que le premier article. Le fichier XML généré ne semble apparemment pas propre d’après le « Feed validator », mais je ne vois pas trop ce que je peux faire.
Voici l’adresse de mon pipe : http://pipes.yahoo.com/pipes/pipe.info?_id=cab34b6a047d35a848037f09763e4152
Merci pour tout aide !
Mickaël
@Mickaël : je me demande si le problème ne vient pas de ce que l’URL de chacun des items générés est la même : http://www.bricomag-news.com/index.php?option=com_content&view=category&id=57:breves-distributeurs-bricolage&layout=blog&Itemid=217
Bien vu, c’était effectivement ça le problème. Merci Etienne.
Bonjour – Peut-on créer des feed rss à partir d un lien de recherche dans google? Merci de votre aide ! Arnaud
@Arnaud : si vous utilisez le module Fetch Page et que vous y collez en entrée une URL de résultats Google, vous constaterez que la page aspirée par Yahoo Pipes ne contient que le formulaire, pas les résultats.
En revanche si vous utilisez, par exemple, le plugin de recherche rapide de Firefox, vous constaterez que l’URL est plus courte (plus « propre ») et qu’elle agrée à Yahoo Pipes.
Vous pouvez donc essayer ainsi.
Mais je ne vois pas ce que ça vous apporte par rapport à l’utilisation en entrée d’un flux de recherche Google (Google Alertes)
Bonjour Etienne,
Merci pour ces tutos très intéressants! çà m’avait l’air tellement compliqué mais avec les bonnes explications c’est pas si mal!
Je suis quand même confrontée à un problème: la version de Pipes a évolué depuis votre dernier tuto et je ne retrouve pas le module « Fetch Page ». a la place il y a « XPath Fetch Page » qui n’a pas l’air de fonctionner de la même manière.
Je sais que c’est du boulot mais pourriez-vous expliquer comment çà marche avec la nouvelle version?
Merci d’avance
@Jessy : demande bien reçue.
Effectivement, XPath Fetch Page fonctionne différemment. J’aurais préféré que Yahoo conserve les 2 modules, car ils peuvent s’appliquer à des situations différentes… mais c’est comme ça.
Je vais réfléchir à une vidéo expliquant comment se servir de ce nouveau module.
En substance : XPath Fetch Page permet de récupérer du contenu en indiquant le chemin jusqu’à l’information, exprimé en XPath (qui est une manière de naviguer dans les balises d’un fichier XML — ou HTML).
Sur XPath, vous pouvez déjà trouver quelques infos sur ce blog, dans les « cours » sur XSL.
Par exemple
Cela dit, ça ne résoudra pas toutes les questions auxquelles vous pouvez être confrontés, donc je retiens l’idée d’un tutoriel.
Bonsoir,
pour info on trouve toujours le module fetch page, sous la rubrique deprecated (en esperant qu’ils ne la virent pas complétement a terme …
Préalable : merci pour ce tuto, il est « dense » mais colle exactement à mes besoins.
Ensuite, pour ma part, pas de soucis avec le html … mais alors les regex … 0_o
Mon soucis, la même chose dans content et link, je n’arrive pas à les séparer. J’ai fait plusieurs tentatives en changeant le html du filtre 1, tenter de modifier un peu les regex, mais rien n’y fait …
Etienne si tu voulais bien y jeter un oeil stp .. par avance merci.
Un code visualisé valant mieux qu’un long discours : http://pipes.yahoo.com/pipes/pipe.edit?_id=00111d587d0ab105cb49d5a8713a560e
@Jojo : en général, on récupère en sortie le contenu identique de ce qu’il y avait en entrée, quand l’expression régulière n’a correspondu à rien du tout. Du coup Yahoo Pipes remet la même valeur.
Comme copier du code passe assez mal dans les commentaires WordPress (surtout quand on veut y mentionner des balises HTML), j’ai préféré faire une copie du pipe mentionné pour le corriger :
http://pipes.yahoo.com/pipes/pipe.edit?_id=58aefce6e71643d99f4b2c8795120f93
Faut pas hésiter ensuite à demander des précisions sur chacune des modifications apportées
Un grand merci pour ton aide, et ta promptitude. Mon intuition concernant le découpage au niveau du h2 était bonne, mais mon absence de compréhension des expressions régulières ne me permettait pas d’adapter tes indications à mon cas de figure … J’ai plus qu’a mettre le nez dans les regex ^^ Ce qui me permettra de comprendre tes modifs …
Encore merci et joyeuses fêtes.
Merci Mr Cavaillé pour partager avec nous vos connaissances. Effectivement, un tuto concernant le XPath Fetch , et permettant à tous de bénéficier de cette nouvelle manière de créer des fils rss serait très apprécié. Encore merci à vous
Le tuto XPath Fetch Page existe enfin.
Bonjour, vos tutos sont très bien détaillés, et vous êtes le seul sur la toile à en proposer, j’ai suivi votre partie sur le XPath Fetch Page avec des string regex en loop. Les expressions régulières que vous utilisez m’ont permis d’avoir mon flux rss ok. Cependant dans mon pipe http://pipes.yahoo.com/pipes/pipe.edit?_id=f88346cd62d23f781ec0e0c7c15a7bec je souhaiterais aller plus loin.
Dans la description j’ai la taille de mon fichier et sa date de création, je voudrais utiliser l’item pubdate pour y mettre cette date, pour avoir déscription: taille du fichier, et pubdate: date de création du fichier.
Or dans votre vidéo vous utilisez tout ce qui vient après la balise comme dans mon cas,
[\d\D]*(.*)([\d\D]*) mais dans la source le code est comme ceci: … Taille : 7.94 Go Création : 23/01/2013 01:08:06 Il n’y à plus de balise fermante, je me suis donc dis qu’il fallait qu’il cherche jusqu’à » C » exclue mais je ne sais pas comment cela se traduit en perl.
Avez vous un conseil?
J’espère avoir était clair
@Louis : Vos indications sont très claires.
Pour exclure « C », l’expression régulière est : [^C]
Mais j’ai fait une copie de votre pipe et ai traité un peu différemment le problème
http://pipes.yahoo.com/pipes/pipe.edit?_id=f88346cd62d23f781ec0e0c7c15a7bec
Vous pouvez en refaire une copie à votre tour (ainsi je pourrai supprimer le mien) et voir ce que j’ai modifié, pour continuer de corriger des trucs
Merci de votre réponse mais vous ne vous etes pas trompé dans l’url? C’est mon pipe ca.
Ah oui, tiens ! Quand j’ai cliqué sur « Save a copy » il a conservé la mémoire dans l’ancienne URL dans la barre d’adresse
En vrai c’est ça (enfin, j’espère) http://pipes.yahoo.com/pipes/pipe.edit?_id=2eaa68698108cd03191d9bf65003c639
Super merci pour la réponse, mais je me rends compte que ce n’est pas ce que je souhaite faire.
Pour vous expliquer ma démarche, j’utilise ce flux rss créé dans un soft de téléchargement via url rss lorsque je met mon rss dans ce soft je n’ai pas de taille de fichier ni de date de création en fouillant sur des rss qui ont ses parametres je me rends compte que tout se passe dans l’item avec url= length=
Dans le pubDate que vous avez fait les valeurs ne correspondent pas à l’item datecreation.
Je suis perdu, et j’ai l’impression que vous êtes le seul à maitriser l’outil sur le web je ne trouve pas des personnes qui ont plus ou moins les mêmes besoin que moi.
Pour résumé j’aimerais que le contenu de mon url, ai les mêmes items qu’un flux rss classique mais sur la taille du fichier et la date je sèche
En gros comme ce pipe http://pipes.yahoo.com/pipes/pipe.edit?_id=4160d5bc4c13b2db4bf6fb493363f03e
@Louis : J’ai travaillé à modifier la description. Mais en fait c’est le titre que vous voulez modifier ? (pour y mettre la date et/ou la taille ?)
Non je veux utiliser des items rss utilisables par mon logiciel pour qu’il puisse les reconnaitre en tant que taille de fichier et date de création.
Donc la date doit être mise dans quelle zone (description, title) ? Je l’avais mise dans pubDate, mais apparemment ça ne vous convient pas (ou alors c’est le format de cette zone qui ne vous convient pas)
Et la taille dans quelle zone ? Je l’avais mise dans description, où doit-elle aller ?
Si la date doit bien etre dans pubdate mais si vous regardez dans le pubdate sur le debugger cela n’a rien avoir avec la vraie date ca met une date en 2014
je ne pense pas qu’on puisse exploiter la date,
Wed, 23 Jan 2013 14:53:44 +0100
http://url
Sur ce bout de code extrait d’un vrai flux rss vous pouvez voir que pour connaitre la taille du fichier de l’article du flux il doit y avoir une balise <enclosure url= et length="taille du fichier"
Apparement on ne peut pas citer un code: voici le bout de code http://suil.x64.me/test/code.txt
Voyez ça http://pipes.yahoo.com/pipes/pipe.edit?_id=2eaa68698108cd03191d9bf65003c639 et le flux RSS produit http://pipes.yahoo.com/pipes/pipe.run?_id=2eaa68698108cd03191d9bf65003c639&_render=rss
Logiquement on se rapproche de ce que vous cherchez
Il y a désormais une balise enclosure avec les éléments demandés
Et la date est reconnue correctement par le module Loop + Date Builder (pour ce faire, je lui donnais une date en format JJ/MM/AAAA, alors qu’il préfère du AAAA-MM-JJ : avec un peu de regex j’ai interverti d’abord l’ordre des informations, et à présent tout se passe bien)
Dites-moi ce qu’il reste encore à y faire
Tout d’abord, encore merci Etienne car j’ai l’impression que vous faites un peu tout, tout seul mais je regarde derrière, justement ici sur ce que vous m’avait fait.
Sur ma page php j’ai supprimé mon script qui converti les octets en Ko Mo et Go, car le length doit être en octet, du coup maintenant j’ai la taille des fichiers, ça c’est super merci beaucoup.
Concernant le pubDate j’ai regardé un pipe d’un gars qui as son pubDate qui fonctionne j’ai enregistré son flux généré pour regarder le xml je vous ai détaillé ca sur ce fichier .txt
http://88.191.159.32/downloads/Films.HD.VF.1080p/rss.txt
Comme vous pouvez le voir sur son pipe http://pipes.yahoo.com/pipes/pipe.edit?_id=4160d5bc4c13b2db4bf6fb493363f03e
le pubDate apparait tout le temps et j’ai l’impression qu’il doit etre mis sur pipes sous la forme item.published je vais essayer.
J’ai modifié l’item en y:published mais rien de mieux, vous pensez que vu que l’heure n’est pas renseignée un lecteur rss ne prend donc pas en compte la date de création?
@Louis : suite à vos remarques, j’ai encore modifié la gestion de la date.
Le pubDate est généré comme dans votre modèle
pubDateWed, 23 Jan 2013 00:00:00 GMT
Et la date décomposée en zones est stockée dans item.y:published
http://pipes.yahoo.com/pipes/pipe.edit?_id=2eaa68698108cd03191d9bf65003c639
Rien à dire super boulot, je vous remercie du mal dont vous vous êtes donné.
J’ai exactement ce que je souhaitais dans ma tête
Pour être tatillon on pourrait prendre en compte l’heure
@Louis : j’ai dû me planter dans mes copier-coller ? L’url d’entrée des ressources envoie une erreur 404 http://suil.x64.me/downloads/Films.HD.VF.1080p/index4.php
Ah pardon non, vous ne vous etes pas planté du coup j’ai modifié toute mon arboréscence avec des index.php et non plus 4.
Donc repartez de celui-ci http://pipes.yahoo.com/pipes/pipe.edit?_id=64b38d939d0798f2e7f77c1583612302
C’est le dernier que vous m’avez fournis mis à jour avec les nouveaux nom de fichiers, si vous aviez modifié des choses dans votre pipe mettez en url
http://suil.x64.me/downloads/Films.HD.VF.1080p/index.php
Copie avec modifications : http://pipes.yahoo.com/pipes/pipe.info?_id=b019eab466950f2ced2c02ae1a958874
Celui est le même que je vous ai envoyé non? Il n’y à pas de différence?
OK, quand je lui dis « Save a copy », il sauvegarde une copie du pipe d’origine, sans prendre en compte les modifs que j’ai faites entre temps.
Même pas mal
Ce coup-ci, ça m’a l’air bon
http://pipes.yahoo.com/pipes/pipe.edit?_id=0fd6e51a32e43381411b03d22205a0c3
Je supprime les autres pipes
Dans votre pipe vous aviez oublier d’intégrer la variable $4 apres la date qui est $3-$2-$1
j’ai donc rajouté » $4″
http://pipes.yahoo.com/pipes/pipe.edit?_id=2d38c831a85bae2114e5dccff6dc4704
Et donc maintenant j’ai tout de fonctionnel, je vous remercie infiniment pour votre travail.
Si mon cas de figure vous semble pertinent pour créer un flux rss à partir de n’importe quel répertoire contenant des fichiers je peux vous fournir le code php que j’ai utiliser pour lister les fichiers avec les informations de date et de taille.
Encore merci
c’est moi ou il y a plus la possibilité de faire une traduction de ses flux rss avec yahoo pipe???
@Johann : effectivement, j’ai constaté cela aussi il y a quelques semaines, sans aller chercher plus loin. L’explication est là (avec une solution de contournement) : http://stackoverflow.com/questions/13478118/yahoo-pipes-translation-module-missing