#!/usr/bin/env ruby # This code comes from http://ruby-it.org/pages/Codice+LunaRss+0_1 # Check the page for copyright notice and explanations #!/usr/bin/env ruby require 'net/http' class Rss_parser def initialize(url) @url_completo=url @url_no_http=@url_completo.gsub(/http\:\/\//,'') @url_http=@url_no_http.gsub(/\/.*/,'') @url_pagina="/"+@url_completo.gsub(%r{http:\/\/.*?\/},'') end def esegui_parsing h=Net::HTTP.new(@url_http) resp,data=h.get(@url_pagina,nil) data.gsub!(/\0/,'') canale=data.scan(%r{.*?(?:(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*.*?)?}m) titolo=Array.new i=0 data.scan(%r{.*?(?:(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*.*?)?}m) do |x| titolo[i]=x i+=1 end link=Array.new i=0 data.scan(%r{.*?(?:(?:)*.*?)?}m) do |x| link[i]=x i+=1 end descrizione=Array.new i=0 data.scan(%r{.*?(?:(?:)*.*?)?}m) do |x| descrizione[i]=x i+=1 end dati={'titoli'=>titolo,'links'=>link,'descrizioni'=>descrizione,'canali'=>canale} return dati end end ############################## print "Content-type: text/html\r\n\r\n" print "" print "" elenco_rss=['http://www.repubblica.it/rss/scienza_e_tecnologia/rss2.0.xml','http://programmazione.it/rss.xml','http://www.hwupgrade.it/rss_news.xml','http://www.hwupgrade.it/rss_articoli.xml','http://www.beppegrillo.it/index.xml'] elenco_rss.each do |rss_file| rss_da_parsare=Rss_parser.new(rss_file) dati=Hash.new dati=rss_da_parsare.esegui_parsing canale=dati['canali'] titolo=dati['titoli'] link=dati['links'] descrizione=dati['descrizioni'] print "

#{canale}

" 0.upto(titolo.length) do|i| print "#{titolo[i]}
#{descrizione[i]}

" end end print "" print ""