Este código lo ideé en un tiempo que jugaba al Castleville, uno de los muchos juegos que circulan por Facebook. La idea en este script es bastante básica: Existe una página, http://www.trucoscastleville.com, en donde, además de publicar recompensas diarias, la gente publica solicitudes de aquellos elementos que necesitan para el juego. Cualquiera persona que haga clic sobre ellas, además de enviarle la recompensa a quien la solicito, la recibirá el mismo, por lo cual pensé en idear este script, que carga todas las url’s de recompensas en el navegador.
Consejo si decidís utilizarlo: instalad un complemento en el navegador que cierre automáticamente las pestañas tras un tiempo x inactivas, ya que si no aunque el codigo incluye un timer de 15 segundos entre apertura y apertura, os acabaréis encontrando con cientos de pestañas, bloqueando el navegador y posiblemente también el sistema.
import urllib, sgmllib import subprocess from sgmllib import SGMLParser import webbrowser import time class URLLister(SGMLParser): def reset(self): SGMLParser.reset(self) self.urls = [] self.urlsanitizada= [] def start_a(self, attrs): href = [v for k, v in attrs if k=='href'] if href: self.urls.extend(href) import urllib if __name__ == "__main__": socket = urllib.urlopen("http://www.trucoscastleville.com/") parser = URLLister() parser.feed(socket.read()) parser.close() socket.close() for url in parser.urls: if url not in parser.urlsanitizada: parser.urlsanitizada.append(url) for url in parser.urlsanitizada: if url.find("http://www.trucoscastleville.com/2012") >= 0: if url.find("#comment-") == -1: if __name__ == "__main__": socket2 = urllib.urlopen(url) parser2 = URLLister() parser2.feed(socket2.read()) parser2.close() socket2.close() for url in parser2.urls: if url not in parser2.urlsanitizada: parser2.urlsanitizada.append(url) n=0 for url in parser2.urlsanitizada: if url.find("apps.facebook.com") >= 0: n=n+1 webbrowser.open(url, new=2, autoraise=False) time.sleep(15)
1 comment for “[Python] Castleville.py”