Programación Web y Scripting > Python
Un Feed RSS
(1/1)
RadicalEd:
Pues ando jugando últimamente con el pynotify y pues acá dejo este pequeño lector de feeds Atom.
--- Código: Python ---#!/usr/bin/env python# -*- coding: cp1252 -*-#Desarrollado por RadicalEdimport feedparserimport pynotifyimport urllib2, urllibimport timeimport re class FeedRSS(): #Inicializamos valores def __init__ (self, rss, blog): self.blog = blog #Nos conectamos al feed del blog self.rss = feedparser.parse(rss) #Extraemos lo que necesitamos self.title = self.rss.entries[0].title self.link = self.rss.entries[0].link #Vamos a convertir los links grandes en pequeños def mostrar (self, tinyurl = 'http://tinyurl.com/create.php', nuevo=''): #Los datos a envíar en el campo url del formulario data = urllib.urlencode([('url', self.link)]) #Envíamos los datos req = urllib2.Request(tinyurl) pagina = urllib2.urlopen(req, data) #Al recibir los datos los empezamos a leer while True: data = pagina.read(1024) if not len(data): break nuevo += data #Con expresiones regulares buscamos cada dato que tenga la linea <b>http://tinyurl.com/ r = re.compile('<b>http://tinyurl.com/([a-zA-Z0-9]+)</b>',re.S) #Buscamos en todo el source de la pagina x = r.findall(nuevo) #Este sera el mensaje a mostrar en el notificador msg = "%sn<a href='http://tinyurl.com/%s'>http://tinyurl.com/%s</a>" % (self.title, x[0], x[0]) if not pynotify.init('Al no iniciarse'): sys.exit(1) #Mostramos la Notificación n = pynotify.Notification(self.blog,msg) n.set_timeout(15000) #Que se muestre el mensaje durante 15 segundos n.show() #Sino se muestra if not n.show(): print "Fallo al mostrar la info" sys.exit(1) #Blogs de ejemplorp = FeedRSS('http://radicalpython.blogspot.com/feeds/posts/default', 'RadicalPython')rp.mostrar()wb = FeedRSS('http://willy-n-billy.blogspot.com/feeds/posts/default', 'Willy-n-Billy')wb.mostrar()mb = FeedRSS('http://mbrenes.blogspot.com/feeds/posts/default', '{ Blog de Shakka }')mb.mostrar()lm = FeedRSS('http://elladodelmal.blogspot.com/feeds/posts/default', 'El lado del mal')lm.mostrar()
Navegación
Ir a la versión completa