In questa lezione facciamo la veloce conoscenza di due librerie per la lettura di feed Atom e RSS, alternative alla libreria standard.
simple-rss
Esaminiamo per prima simple-rss, che è un semplice lettore di feed RSS e Atom. Vediamo come può essere riscritto il programma per la lettura di un feed RSS esterno, proposto nella lezione precedente.
require 'rubygems' require 'simple-rss' require 'open-uri' rss = SimpleRSS.parse open('http://planetruby.0x42.net/rss20.xml') puts "Feed from #{rss.feed.title}" rss.entries.each do |post| puts " " + post.title end
La differenza a primo impatto non è non è molta ma in questo caso rss.entries
è un array di hash
, e ogni hash contiene tutte le informazioni relative ai post che sono ottenibili attraverso le chiavi dal nome autoesplicativo:
> post.keys description link title pubDate guid
Le informazioni sul canale sono ottenibili attraverso la classe SimpleRSS
e sono a grandi linee le stesse rese disponibili da RSS
. Allo stesso modo sono gestiti i feed di tipo Atom. Inoltre simple-rss mantiene la compatibilità con la libreria standard RSS.
atom-tools
Ora una gemma dedicata interamente al formato Atom. atom-tools
permette il parsing e la creazione di feed Atom e a grandi linee ricalca la struttura già vista. Vediamo ancora lo stesso esempio ma stavolta scritto utilizzando atom-tools:
require 'rubygems' require 'atom/feed' require 'open-uri' feed = Atom::Feed.new "http://googleblog.blogspot.com/atom.xml" feed.update! puts "Feed from #{feed.title.to_s}" feed.entries.each do |post| puts " " + post.title.to_s end
Anche in questo caso per ogni post è possibile ottenere tutte le informazioni necessarie (titolo, descrizione, data, link, ecc.) attraverso gli attributi della classe Atom::Entry
. Lo stesso discorso vale per informazioni relative al canale che è rappresentato da un oggetto di classe Atom::Feed
.