Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/03/2014, 01:09
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
[Aporte] Programa wx.ForosDelWeb - Lector de los últimos 30 Temas del Foro Python

Hola amigos!!
Bueno voy a dejar un aporte de un programa que hice en wxPython, el mismo es simple, sólo muestra en una ventana dentro del ListCtrl los últimos 30 Temas del Foro Python, también muestra el Autor de la persona que inició el tema, también muestra las visitas, respuestas, fecha, hora y algo que todavía no funciona del todo, es la última persona que ha respondido a un X tema.
Esto que falta mejorar se los voy a dejar a ustedes para que aprendan sobre wxPython y como se hace para extraer datos de una web, yo he hecho hasta bots para IRC que extraen información de una web, como noticias, horoscopo, clima, etc.
Pero lamentablemente siempre me ha pasado que esos códigos quedan inservibles y he tenido que reestructurarlos ya que la página de donde extraía la info había sido modificada, en si los foros pueden ser inmunes a estos cambios durante años, así que estaría bastante bien crear un código así para un Foro!!
Comento esto porque he leído en muchísimos foros a personas pidiendo ayuda o explicación de porque un script le ha dejado de funcionar si antes andaba muy bien o que el script ya no funcionaba correctamente ya que además de por ej mostrar las noticias, también mostraba etiquetas HTML.
Bueno sólo dejo este programa para que aprendan un poco y para que lo puedan mejorar, eso si, por favor tengan en cuenta el Autor.
Demen los créditos correspondientes, digo esto porque lo dejo así opensource para que puedan mejorarlo, durante mucho tiempo he creado scripts para mIRC (programa de chat IRC) y me ha dolido ver mis códigos por ahí sin autor, códigos en los que me ha llevado horas enteras y hasta incluso semanas en terminarlos y no es justo ver tu trabajo con el nombre de otro Autor, también he visto códigos míos casi completos, todo el código menos la parte donde está escrito del Nick del Autor (Príncipe_Azul), quizás a muchas personas esto no le importe porque tendrán tiempo de sobra, pero para mi es feo ver mi trabajo con créditos para otra persona que no me ayudó en nada, además los publiqué gratuitos.
Bueno amigos espero que puedan mejorar este Visor por decirle de alguna forma, ojalá les gusto este pequeño granito de arena que hoy compartí con ustedes.

Aquí dejo una captura del programa:

http://subefotos.com/ver/?d1537647f3762de6584ba83985497d0eo.png

Y aquí el programa:

Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2. # wx.ForosDelWeb
  3.  
  4. import wx, urllib2
  5.  
  6. Navegador = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"
  7. ConfigNavegador = {"User-Agent": Navegador}
  8. URLSolicitud = urllib2.Request("http://www.forosdelweb.com/f130/", headers=ConfigNavegador)
  9.  
  10. class ForosDelWeb(wx.Frame):
  11.     def __init__(self, parent, id, title):
  12.         wx.Frame.__init__(self, parent, id, title, style=wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN | wx.RESIZE_BORDER)
  13.         self.Panel = wx.Panel(self, -1)
  14.         MenuPrograma = wx.Menu()
  15.         MenuOpcion = wx.MenuBar()
  16.         MenuPrograma.Append(1, "Ver Temas", "")
  17.         MenuPrograma.Append(2, "Autor", "")
  18.         MenuPrograma.Append(3, "Salir", "")
  19.         MenuOpcion.Append(MenuPrograma, "Opciones")
  20.         self.SetMenuBar(MenuOpcion)
  21.         wx.EVT_MENU(self, 1, self.MostrarTemas)
  22.         wx.EVT_MENU(self, 2, self.Autor)
  23.         wx.EVT_MENU(self, 3, self.Salir)
  24.         Fuente = wx.Font(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Verdana")
  25.         self.Lista = wx.ListCtrl(self.Panel, -1, pos=(15,15), size=(1100,650), style=wx.LC_REPORT)
  26.         self.Lista.SetFont(Fuente)
  27.         self.Lista.InsertColumn(0, "Tema", width=538)
  28.         self.Lista.InsertColumn(1, "Autor", width=165)
  29.         self.Lista.InsertColumn(2, "Fecha/Hora", width=180)
  30.         self.Lista.InsertColumn(3, "Ultimo Msj por", width=160)
  31.         self.Lista.InsertColumn(4, "Respuestas", width=110)
  32.         self.Lista.InsertColumn(5, "Visitas", width=85)
  33.         self.Redimensionador = wx.BoxSizer(wx.VERTICAL)
  34.         self.Redimensionador.Add(self.Lista, proportion=1, flag=wx.ALL|wx.EXPAND, border=15)
  35.         self.Panel.SetSizer(self.Redimensionador)
  36.  
  37.         self.Show()
  38.         self.Maximize()
  39.  
  40.     def MostrarTemas(self, event):
  41.         Web_HTML = urllib2.urlopen(URLSolicitud)
  42.         Codigo_HTML = Web_HTML.read()
  43.         Web_HTML.close()
  44.         Tema2 = ""
  45.         for Linea in Codigo_HTML.splitlines():
  46.             if "[SOLUCIONADO]" in Linea:
  47.                 Tema2 = "[SOLUCIONADO]"
  48.             if 'id="thread_title_' in Linea:
  49.                 try:
  50.                     Tema = Tema2 + Linea[Linea.find('id="thread_title_')+25:Linea.find('</a> </div> <div class="smallfont">')]
  51.                     Tema2 = ""
  52.                     if "FAQ's de Python" in Tema:
  53.                         Tema = "FAQ's de Python"
  54.                 except:
  55.                     pass
  56.                 self.Lista.InsertStringItem(0, Tema.replace(">", ""))
  57.                 self.ItemCreado = "si"
  58.             if "'_self')\">" in Linea:
  59.                 Autor = Linea[Linea.find("'_self')\">")+10:Linea.find("</span> </div> </td>")]
  60.                 self.Lista.SetStringItem(0, 1, Autor)
  61.             if ' <span class="time">' in Linea:
  62.                 Fecha = Linea.replace(' <span class="time">', " ").replace("</span><br/>", "")
  63.                 self.Lista.SetStringItem(0, 2, Fecha)
  64.             if '" rel="nofollow">' in Linea:
  65.                 UltimoPostPor = Linea[Linea.find('" rel="nofollow">')+17:Linea.find('</a> <a href="http://www.forosdelweb.com/f130/')]
  66.                 try:
  67.                     if self.ItemCreado == "si":
  68.                         self.Lista.SetStringItem(0, 3, UltimoPostPor)
  69.                 except:
  70.                     pass
  71.             if 'title="Respuestas:' in Linea:
  72.                 Respuestas = "     " + Linea[Linea.find('title="Respuestas:')+19:Linea.find(", Visitas:")]
  73.                 self.Lista.SetStringItem(0, 4, Respuestas)
  74.             if ", Visitas:" in Linea:
  75.                 Visitas = Linea[Linea.find(", Visitas:")+11:Linea.find('"> <div class="smallfont" style="text-align:right;')]
  76.                 self.Lista.SetStringItem(0, 5, Visitas)
  77.  
  78.     def Autor(self, event):
  79.         Autor_Daniel = wx.MessageDialog(self, "Lector de los primeros 30 Temas del Foro Python", "Autor: Daniel Delgado", wx.OK | wx.ICON_INFORMATION)
  80.         Autor_Daniel.ShowModal()
  81.     def Salir(self, event):
  82.         self.Close()
  83.  
  84. ForoPython = wx.App()
  85. ForosDelWeb(None, -1, "Temas Python")
  86. ForoPython.MainLoop()


Muchas gracias, que Dios los bendiga y hasta siempre.

Última edición por Principe_Azul; 25/03/2014 a las 01:18