Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 19 di 32
  • livello principiante
Indice lezioni

RSS

Creare un feed RSS o consumarne uno esterno con la libreria standard di Ruby
Creare un feed RSS o consumarne uno esterno con la libreria standard di Ruby
Link copiato negli appunti

In questo capitolo ci occuperemo della gestione dei principali formati XML per la distribuzione di contenuti Web: Atom e RSS.

Oltre alla libreria standard RSS esistono molte gemme che si occupano di leggere e scrivere i vari formati dei feed. Di seguito vedremo i più completi. In questo campo di sicuro non mancano soluzioni complete e robuste, oltre a quelli illustrati vanno sicuramente ricordati almeno atomutil, rfeedreader e rfeedparser.

la libreria standard

Iniziamo proprio dalla libreria standard RSS distribuita con Ruby. Questa libreria fornisce sia un parser per la lettura di feed sia un generatore per la creazione di feed RSS. Vediamo un esempio che poi commenteremo.

Scaricare i feed da dall'aggregatore "Planet Ruby"

require 'rss/2.0'

file = open('http://planetruby.0x42.net/rss20.xml')
rss = RSS::Parser.parse(file, false)

puts "Feed from #{rss.channel.title}" 

rss.items.each do |post|
  puts "  " + post.title
end

Dopo aver aperto il file RSS ne facciamo il parsing con RSS::Parser.parse che ritorna un un oggetto di classe RSS::Rss.

Stampiamo il nome del feed e poi i titoli dei post. Oltre al titolo è possibile ricavare dalla classe RSS::Rss::Channel altre utili informazioni sulla data di pubblicazione, sulla lingua dei post, sul copyright, etc.

I post vengono stampati iterando su rss.items che è un array di RSS::Rss::Channel::Item, anche in questo caso oltre ai commenti è possibile ottenere una descrizione del post, il nome dell'autore, il link, la data di pubblicazione, etc.

Anche la generazione di file RSS è molto semplice e segue lo stesso schema: prima si crea un oggetto di tipo RSS::Rss a cui va associato un oggetto RSS::Rss::Channel ed infine ogni post sarà un oggetto RSS::Rss::Channel::Item che andrà a popolare l'array items.

Vediamo il codice. Anzitutto importiamo la libreria RSS e creiamo un feed Rss

require 'rss/2.0'
rss = RSS::Rss.new("2.0")

Creiamo poi un nuovo canale e ne definiamo le caratteristiche:

channel = RSS::Rss::Channel.new
channel.title = "RSS di esempio"
channel.link = "http://www.example.com"

Un post d'esempio apparirà in questo modo:

post = RSS::Rss::Channel::Item.new
post.title = "Titolo del post"
post.description = "Descrizione del post di esempio"
post.link = "http://www.example.com/post/1"

Fatto ciò non ci resta che collegare le varie componenti nel giusto modo:

channel.items << post
rss.channel = channel

Il risultato è un file XML del genere:

<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>RSS di esempio</title>
    <link>http://www.example.com</link>
    <item>
      <title>Titolo del post</title>
      <link>http://www.example.com/post/1</link>
      <description>Descrizione del post di esempio</description>
    </item>
  </channel>
</rss>

Ti consigliamo anche