Ruby/Rails : parser un flux RSS (et spécificité de Flickr)

In: Ruby

29 juin 2009

Il est particulièrement simple, en Ruby, de parser un flux RSS.
Tout d’abord, dans le contrôleur, nous chargeons le contenu et le parsons :
require 'rss'
require 'open-uri'
@content = RSS::Parser.parse(open('http://feeds2.feedburner.com/DmathieuFr'), false)

La variable @content contiendra alors votre flux RSS parsé et chacun de ses éléments accessible.

Par la suite dans votre vue, vous pouvez récupérer les éléments de votre flux :
<ul>
  <% @content.items.each do |i| %>
    <li><%= link_to i.title, i.link %><br /><%= i.description %></li>
  <% end %>
</ul>

Nous bouclons sur chaque élément et affichons un lien pointant vers la balise link et ayant le titre; suivi du contenu.
Cela ne fonctionne évidemment que pour les flus RSS. Pour le XML en général, il faut utiliser REXML.

Pour finir (et parce que c’est dans le titre), il y a une petite exception pour le flux RSS de Flickr.
En effet, avec celui-ci, le parseur ne trouvera pas l’élément dateTaken mais date.Taken.
Il faut donc remplacer l’un par l’autre.

Voici donc le code de mon contrôleur :
@content = RSS::Parser.parse(open('http://api.flickr.com/services/feeds/photos_public.gne?id=23186094@N07&lang=fr-fr&format=rss_200').read.gsub!('date.Taken', 'dateTaken'), false)

Et dans ma vue, pour afficher les dernières photos postées sur mon pool :
<ul>
  <% @content.items.each do |i| %>
    <li><%= i.description %></li>
  <% end %>
</ul>

Et vous pouvez même voir la chose en action ! Sur mon portfolio :)

Cet article est rédigé par Damien MATHIEU.
Et est disponible sous licence creative common by-nc-nd.
Si vous appréciez son contenu, n'hésitez pas à me recommander.

Comment Form

Photostream

    Before the concertBefore the concertI JumpI'm BackFrom the BackGoing DownNativity ChurchIn the streets of BethlehemNazareth by Morning
  • Mirsal Ennaime: En général emit(doc['_id'], doc); n'est pas une bonne pratique, il vaut mieux utiliser emit(doc['_ [...]
  • Mirsal Ennaime: @Raphael AMHA, les bases de données orientées documents sont plus adaptées pour la pluspart de [...]
  • Raphaël: @Sébastien je résume pas le marché de l'informatique mais le marché des BDD. Désolé mais quand [...]
  • Damien: Concernant notamment le "doc.comments.all", apparemment, non, cela n'est pas possible. Voir notamme [...]
  • Sébastien Charrier: @Raphael Ce que je veux te dire, c'est qu'il n'y a pas que l'informatique de gestion, et qu'il me se [...]

Fork me on GitHub