• Lunes 24 de Junio de 2024, 09:46

Autor Tema:  Un Feed RSS  (Leído 1109 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Un Feed RSS
« en: Martes 17 de Febrero de 2009, 00:08 »
0
Pues ando jugando últimamente con el pynotify y pues acá dejo este pequeño lector de feeds Atom.
Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: cp1252 -*-
  3. #Desarrollado por RadicalEd
  4. import feedparser
  5. import pynotify
  6. import urllib2, urllib
  7. import time
  8. import re
  9.  
  10. class FeedRSS():
  11.  #Inicializamos valores
  12.  def __init__ (self, rss, blog):
  13.      self.blog = blog
  14.      #Nos conectamos al feed del blog
  15.      self.rss = feedparser.parse(rss)
  16.      #Extraemos lo que necesitamos
  17.      self.title = self.rss.entries[0].title
  18.      self.link = self.rss.entries[0].link
  19.  
  20.  #Vamos a convertir los links grandes en pequeños
  21.  def mostrar (self, tinyurl = 'http://tinyurl.com/create.php', nuevo=''):
  22.      #Los datos a envíar en el campo url del formulario
  23.      data = urllib.urlencode([('url', self.link)])
  24.      #Envíamos los datos
  25.      req = urllib2.Request(tinyurl)
  26.      pagina = urllib2.urlopen(req, data)
  27.      #Al recibir los datos los empezamos a leer
  28.      while True:
  29.          data = pagina.read(1024)
  30.          if not len(data):
  31.              break
  32.          nuevo += data
  33.  
  34.      #Con expresiones regulares buscamos cada dato que tenga la linea <b>http://tinyurl.com/
  35.      r = re.compile('<b>http://tinyurl.com/([a-zA-Z0-9]+)</b>',re.S)
  36.  
  37.      #Buscamos en todo el source de la pagina
  38.      x = r.findall(nuevo)
  39.  
  40.      #Este sera el mensaje a mostrar en el notificador
  41.      msg = "%sn<a href='http://tinyurl.com/%s'>http://tinyurl.com/%s</a>" % (self.title, x[0], x[0])
  42.  
  43.      if not pynotify.init('Al no iniciarse'):
  44.          sys.exit(1)
  45.  
  46.      #Mostramos la Notificación
  47.      n = pynotify.Notification(self.blog,msg)
  48.      n.set_timeout(15000) #Que se muestre el mensaje durante 15 segundos
  49.      n.show()
  50.  
  51.      #Sino se muestra
  52.      if not n.show():
  53.          print "Fallo al mostrar la info"
  54.          sys.exit(1)
  55.  
  56. #Blogs de ejemplo
  57. rp = FeedRSS('http://radicalpython.blogspot.com/feeds/posts/default', 'RadicalPython')
  58. rp.mostrar()
  59. wb = FeedRSS('http://willy-n-billy.blogspot.com/feeds/posts/default', 'Willy-n-Billy')
  60. wb.mostrar()
  61. mb = FeedRSS('http://mbrenes.blogspot.com/feeds/posts/default', '{ Blog de Shakka }')
  62. mb.mostrar()
  63. lm = FeedRSS('http://elladodelmal.blogspot.com/feeds/posts/default', 'El lado del mal')
  64. lm.mostrar()
  65.  
El pasado son solo recuerdos, el futuro son solo sueños