Created
October 26, 2009 01:35
-
-
Save fitorec/218367 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Copyright 2009 Fitorec Rey sol <chanerec@gmail.com> | |
# datosBruto.py | |
# | |
# descripcion: se conecta a la pagina del elbruto.es y busca los mejores | |
# candidatos(pichones) para combatir contra ellos, apartir de un candidato inicial | |
# | |
# recibe como parametros: | |
# 1er parametro: nickname_candidato_inicial | |
# | |
# ejemplo: si mi candidato inicial es fitorec entonces ejecuto | |
# $python datosBruto.py fitorec | |
# | |
# el script navegara entre los jugadores que hallan perdido con fitorec | |
# pues seguramente seran mejores candidatos que incluso fitorec | |
#importando las librerias a utilizar | |
import httplib, urllib,sys,re | |
""" clase el bruto estrae los datos de un bruto apartir de su nick""" | |
class bruto: | |
def __init__(self,nick,levelParent): | |
self.nickname = nick | |
headers = { | |
"Content-type": "application/x-www-form-urlencoded", | |
"Accept": "text/plain" | |
} | |
url = self.nickname+".elbruto.es" | |
url = url.replace('_', '') | |
url = url.replace(' ', '-') | |
url = url.replace('--', '-') | |
url = url.replace('%', '') | |
url = re.sub(r'-+', '-', url) | |
url = re.sub(r'\.+', '.', url) | |
conn = httplib.HTTPConnection(url) | |
print "exprlorando la url: "+url | |
conn.request("GET", "/cellule") | |
r1 = conn.getresponse() | |
htmlContent = r1.read() | |
#htmlContent = conn.getresponse().read() | |
#extreemos el total de victorias del bruto | |
htmlContent = cut(htmlContent,'Victorias</div>') | |
self.tVictorias, htmlContent = between(htmlContent,'Tip.hide()">','<') | |
#extreemos el nivel del bruto | |
self.nivel, htmlContent = between(htmlContent,'<span>Nivel','<') | |
#extreemos el nivel de vida | |
self.vida, htmlContent = between(htmlContent,'<div class="life"><div>','<') | |
#extreemos el nivel de fuerza | |
self.fuerza, htmlContent = between(htmlContent,"this,'Fuerza:","'") | |
#extreemos el nivel de Agilidad | |
self.agilidad, htmlContent = between(htmlContent,"this,'Agilidad:","'") | |
#extreemos el nivel de Velocidad | |
self.velocidad, htmlContent = between(htmlContent,"this,'Velocidad:","'") | |
#nos preparamos para mostrar los datos estadisticos (pendiente) | |
htmlContent = cut(htmlContent,'<div class="logs">') | |
htmlContent = htmlContent[:htmlContent.find('</td>')] | |
#vamos a estraer las victorias y derrotas | |
self.victorias = numeroDeCoincidencias(htmlContent,'log log-win') | |
self.derrotas = numeroDeCoincidencias(htmlContent,'log log-lose') | |
self.probabilidad = 0 | |
if (self.derrotas+self.victorias)>0: | |
self.probabilidad = (self.derrotas*1.000/(self.derrotas+self.victorias))*100 | |
#mostramos los datos | |
if self.probabilidad > 80 and levelParent<=self.nivel: | |
print "te recomiendo jugar contra: "+self.nickname | |
self.printDatos() | |
if(self.victorias>0): | |
self.pichones = extraePichones(htmlContent) | |
def printDatos(self): | |
print "Nombre de : "+self.nickname | |
print "Nivel: "+str(self.nivel) | |
print "Vida: "+str(self.vida) | |
print "fuerza: "+str(self.fuerza) | |
print "agilidad: "+str(self.agilidad) | |
print "Velocidad: "+str(self.velocidad) | |
print "Total Victorias: "+str(self.tVictorias) | |
print "Victorias(recientes): "+str(self.victorias) | |
print "Derrotas(recientes): "+str(self.derrotas) | |
print "Probabilidad de ganarle:"+str(self.probabilidad)+"%" | |
""" funciones de iteraccion """ | |
def numeroDeCoincidencias(cadena,tag): | |
x=0 | |
cad = cadena | |
while cad.find(tag)>=0 : | |
ini = cad.find(tag) + len(tag) | |
cad = cad[ini:] | |
x=x+1 | |
return x | |
#funcion que devuelve una lista de panes | |
def extraePichones(cadena): | |
r = [] | |
cad = cadena | |
tag = '<div class="log log-win">' | |
while cad.find(tag)>=0 : | |
ini = cad.find(tag) + len(tag) | |
cad = cad[ini:] | |
pichon = cad[cad.find(' a ')+3:cad.find('.</a>')] | |
r.append(pichon) | |
return r | |
def cut(cadena,tag): | |
ini=cadena.find(tag)+len(tag) | |
if ini>=len(tag): | |
return cadena[ini:] | |
return cadena | |
def between(cadena,tag1,tag2): | |
cad = cut(cadena,tag1) | |
return int(cad[:cad.find(tag2)]) , cad[cad.find(tag2)+len(tag2):] | |
def exist(lista,element): | |
for e in lista: | |
if e == element: | |
return True | |
return False | |
brutos = [sys.argv[1]]; | |
""" seccion de logeo """ | |
myBruto = bruto(sys.argv[1],0) | |
def spider(brutohijo,nivelPadre,profundidad): | |
for b in brutohijo.pichones: | |
if not exist(brutos,b) and profundidad<5: | |
nuevoBruto = bruto(b,nivelPadre) | |
brutos.append(b) | |
if nuevoBruto.victorias>0 : | |
spider(nuevoBruto,nivelPadre,profundidad+1) | |
if myBruto.victorias>0 : | |
spider(myBruto,myBruto.nivel,0) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment