Skip to content

Instantly share code, notes, and snippets.

@fitorec
Created October 26, 2009 01:35
Show Gist options
  • Save fitorec/218367 to your computer and use it in GitHub Desktop.
Save fitorec/218367 to your computer and use it in GitHub Desktop.
#!/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