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

simple-rss e atom-tools

Effettuare la lettura dei feed con librerie alternative
Effettuare la lettura dei feed con librerie alternative
Link copiato negli appunti

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.

Ti consigliamo anche