Codice LunaRss 0_1

Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina


LunaRss v0.1 – versione originale di Francesco Lunelli

Codice LunaRss 0_2 – refactoring Chiaroscuro


#!/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{<channel(?!s).*?>.*?(?:<title>(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*</title>.*?)?</channel>}m)
   titolo=Array.new
   i=0
   data.scan(%r{<item(?!s).*?>.*?(?:<title>(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*</title>.*?)?</item>}m) do |x|
     titolo[i]=x
     i+=1
   end
   link=Array.new
   i=0
   data.scan(%r{<item(?!s).*?>.*?(?:<link>(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*</link>.*?)?</item>}m) do |x|
     link[i]=x
     i+=1
   end
   descrizione=Array.new
   i=0
   data.scan(%r{<item(?!s).*?>.*?(?:<description>(?:<!\[CDATA\[)*(.*?)(?:\]\]>)*</description>.*?)?</item>}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 "<html>" 
print "<body>" 

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 "<h3>#{canale}</h3>" 
 0.upto(titolo.length) do|i|
   print "<strong><a href=\"#{link[i]}\">#{titolo[i]}</a></strong><br/><font size=\"-1\">#{descrizione[i]}</font><p/>" 
 end
end

print "</body>" 
print "</html>" 
Updated on May 10, 2006 19:03 by Chiaroscuro (213.92.99.77)