version = "0.1"
__module_name__ = "Pyxgle"
__module_version__ = version
__module_description__ = "Python module for xchat2 to search Google"
__module_author__ = "Tomás Javier Robles Prado"
import xchat
import httplib
import string
URL = 'www.google.com'
COD_BUSQUEDA = '/search?num=100&q='
CABECERA = ' <b>...</b> \n<br><font color=#008000>'
FIN = ' '
NUM_RESULTADOS = 3
MAX_RESULTADOS = 50
def formateaQuery(query):
a = query.split()
return string.join(a, '+')
def google(word, word_eol, ud):
canal = xchat.get_info("channel")
nick = xchat.get_info("nick")
if len(word) == 1:
xchat.command('msg %s Uso: /google palabra1 palabra2 palabraN Numero_Resultados' % (canal))
return xchat.EAT_ALL
try:
#Mira si hay numero de resultados
n = int(word_eol[len(word_eol) - 1])
b = []
for x in word:
b.append(x)
#Hay que quitar primero y ultimo
b = b[1:-1]
query = string.join(b,'+')
except:
#No se ha pasado el numero de resultados
n = NUM_RESULTADOS
#Solo hay que quitar el primero
b= []
for x in word:
b.append(x)
b = b[1:]
query = string.join(b,'+')
busqueda = run (query,n)
if busqueda == -2:
xchat.command('msg %s %s, tu búsqueda para %s no ha arrojado resultados.' % (canal, nick, query.replace('+',' ')))
return xchat.EAT_ALL
if busqueda == -1:
xchat.prnt ('No se ha podido efectuar la conexión')
i = 1
xchat.command('msg %s %s, tu búsqueda para %s ha arrojado estos resultados:' % (canal, nick, query.replace('+',' ')))
for x in busqueda:
xchat.command('msg %s %d- %s' % (canal, i, x))
i += 1
return xchat.EAT_ALL
def run(query , n):
if n is None:
n = NUM_RESULTADOS
try:
conn = httplib.HTTPConnection(URL)
conn.request ("GET", COD_BUSQUEDA + formateaQuery(query))
r = conn.getresponse()
except:
return -1
if r.reason == 'OK':
data = r.read()
else:
return -1
conn.close()
aux = data.split(CABECERA)
#Hay que desechar el primer elemento
aux.pop(0)
if len(aux) == 0:
return -2
busqueda = []
i = 0
while n != 0 and i < MAX_RESULTADOS:
try:
a = aux[i].split(FIN,2)[0]
if a != '':
busqueda.append('http://'+a)
n -= 1
except:
pass
i += 1
return busqueda
xchat.hook_command("google", google, help='/google')
xchat.prnt("Pyxgle Version %s cargado!" % (version))
xchat.prnt('Uso: /google palabra1 palabra2 palabraN Numero_Resultados')
xchat.prnt('Visita: http://users.servicios.retecal.es/tjavier y http://elcubo.freezope.org')