예제 #1
0
    def initUI(self):
        #inicializar los elementos de la vista
        self.entrada = QtGui.QLineEdit(); #input para escribir el mensaje
        self.entrada.setReadOnly(False);

        self.mensajes = QtGui.QTextEdit(); #donde se van a mostrar los mensajes
        self.mensajes.setReadOnly(True);
        
        #se crea el objeto Mensajes que se va a encargar de escuchar y mandar texto
        self.manejadorMensajes = Mensajes(self.ipPropio,self.puertoPropio,self.ipRemoto,self.puertoRemoto,self.nombrePropio,self.mensajes);

        self.buttonEnviar = QtGui.QPushButton('Enviar'); #boton para enviar un texto
        self.buttonEnviar.clicked.connect(self.enviar);
        
        self.buttonLlamar = QtGui.QPushButton('Llamar'); #boton para iniciar una llamada
        self.buttonLlamar.clicked.connect(self.iniciarVideoLlamada);
        
        #se crea el objeto Llamadas, que es va a encargar de escuchar audio del micrófono, mandarlo al otro equipo, y reproducirlo
        self.manejadorLlamadas = Llamadas(self.nombrePropio,self.nombreRemoto,self.ipPropio,self.puertoPropio,self.ipRemoto,self.puertoRemoto);
        self.manejadorLlamadas.setBotonLlamar(self.buttonLlamar); #se agrega el boton a Llamadas para que cambie su texto al llamar
        
       	grid = QtGui.QGridLayout();

        grid.addWidget(self.mensajes,1,0,1,6);
        grid.addWidget(self.entrada,4,0,1,5);
        
        grid.addWidget(self.buttonEnviar, 4,5);
        grid.addWidget(self.buttonLlamar, 4,6);
        
        self.setLayout(grid);

        self.setGeometry(300, 200, 600, 400)
        self.setWindowTitle('Chat de ' + self.nombrePropio + " a " + self.nombreRemoto)
예제 #2
0
 def __init__(self, configuracioncfg):
     self.__archivocfg = configuracioncfg
     self.__configuracion = config(self.__archivocfg)
     self.__tiempo = float(
         self.__configuracion.ShowValueItem("tiempo", "retardo"))
     self.__timeout = float(
         self.__configuracion.ShowValueItem("tiempo", "timeout"))
     self.__basededatos = self.__configuracion.ShowValueItem(
         "basededatos", "archivo")
     self.__ip = self.__configuracion.ShowValueItem("proxy", "ip")
     self.__puerto = self.__configuracion.ShowValueItem("proxy", "puerto")
     self.__app = self.__configuracion.ShowValueItem("aplicacion", "nombre")
     self.__client_args = {
         'headers': {
             'User-Agent': '%s' % self.__app
         },
         'proxies': {
             'http': '%s:%s' % (self.__ip, self.__puerto)
         },
         'timeout': self.__timeout
     }
     self.__bitacora = Bitacora(basededatos=self.__basededatos)
     self.__usuarios = Usuarios(basededatos=self.__basededatos)
     self.__mensajes = Mensajes(basededatos=self.__basededatos)
    def initUI(self):
        # inicializar los elementos de la vista
        self.entrada = QtGui.QLineEdit()
        # input para escribir el mensaje
        self.entrada.setReadOnly(False)

        self.mensajes = QtGui.QTextEdit()
        # donde se van a mostrar los mensajes
        self.mensajes.setReadOnly(True)

        # se crea el objeto Mensajes que se va a encargar de escuchar y mandar texto
        self.manejadorMensajes = Mensajes(
            self.ipPropio, self.puertoPropio, self.ipRemoto, self.puertoRemoto, self.nombre, self.mensajes
        )

        buttonEnviar = QtGui.QPushButton("Enviar")
        # boton para enviar un texto
        buttonEnviar.clicked.connect(self.enviar)

        # se crea el objeto Llamadas, que es va a encargar de escuchar audio del micrófono, mandarlo al otro equipo, y reproducirlo
        self.manejadorLlamadas = Llamadas(self.ipPropio, self.puertoPropio + 1, self.ipRemoto, self.puertoRemoto + 1)

        self.buttonLlamar = QtGui.QPushButton("Llamar")
        # boton para iniciar una llamada
        self.buttonLlamar.clicked.connect(self.manejadorLlamadas.llamar)

        self.manejadorLlamadas.setBotonLlamar(self.buttonLlamar)
        # se agrega el boton a Llamadas para que cambie su texto al llamar

        grid = QtGui.QGridLayout()

        grid.addWidget(self.mensajes, 1, 0, 1, 6)
        grid.addWidget(self.entrada, 4, 0, 1, 5)

        grid.addWidget(buttonEnviar, 4, 5)
        grid.addWidget(self.buttonLlamar, 4, 6)

        self.setLayout(grid)

        self.setGeometry(300, 200, 600, 400)
        self.setWindowTitle("Chat")
        # threads para escuchar mensajes de texto y llamadas
        try:
            self.threadMensajes = threading.Thread(target=self.manejadorMensajes.escuchar)
            self.threadEsperaLlamada = threading.Thread(target=self.esperarLlamada)
        except Exception as e:
            print "Error al crear threads", traceback.format_exc()
예제 #4
0
class chatUserUI(QtGui.QWidget):
                
    #de aquí se toman los datos de la vista anterior
    def __init__(self,nombreA,nombreB,ipA, ipB, puertoA, puertoB):
        super(chatUserUI, self).__init__()
        
        self.nombrePropio=nombreA;
        self.nombreRemoto=nombreB;
        self.ipPropio = ipA;
        self.ipRemoto = ipB;
        self.puertoPropio = int(puertoA);
        self.puertoRemoto = int(puertoB);
        self.initUI();

    def initUI(self):
        #inicializar los elementos de la vista
        self.entrada = QtGui.QLineEdit(); #input para escribir el mensaje
        self.entrada.setReadOnly(False);

        self.mensajes = QtGui.QTextEdit(); #donde se van a mostrar los mensajes
        self.mensajes.setReadOnly(True);
        
        #se crea el objeto Mensajes que se va a encargar de escuchar y mandar texto
        self.manejadorMensajes = Mensajes(self.ipPropio,self.puertoPropio,self.ipRemoto,self.puertoRemoto,self.nombrePropio,self.mensajes);

        self.buttonEnviar = QtGui.QPushButton('Enviar'); #boton para enviar un texto
        self.buttonEnviar.clicked.connect(self.enviar);
        
        self.buttonLlamar = QtGui.QPushButton('Llamar'); #boton para iniciar una llamada
        self.buttonLlamar.clicked.connect(self.iniciarVideoLlamada);
        
        #se crea el objeto Llamadas, que es va a encargar de escuchar audio del micrófono, mandarlo al otro equipo, y reproducirlo
        self.manejadorLlamadas = Llamadas(self.nombrePropio,self.nombreRemoto,self.ipPropio,self.puertoPropio,self.ipRemoto,self.puertoRemoto);
        self.manejadorLlamadas.setBotonLlamar(self.buttonLlamar); #se agrega el boton a Llamadas para que cambie su texto al llamar
        
       	grid = QtGui.QGridLayout();

        grid.addWidget(self.mensajes,1,0,1,6);
        grid.addWidget(self.entrada,4,0,1,5);
        
        grid.addWidget(self.buttonEnviar, 4,5);
        grid.addWidget(self.buttonLlamar, 4,6);
        
        self.setLayout(grid);

        self.setGeometry(300, 200, 600, 400)
        self.setWindowTitle('Chat de ' + self.nombrePropio + " a " + self.nombreRemoto)
    
    """
        Función para agregar un mensaje al historial de mensajes
        
        @param str nombre Quién escribió el mensaje
        @param str mensaje
    """
    def agregarMensaje(self,nombre,mensaje):
        self.mensajes.append(nombre + ":" + mensaje);
        
    #funcion para concatenar el mensaje que se envía a la vista y llamar a manejadorMensajes para que mande el mensaje
    def enviar(self):
        mensaje=str(self.entrada.text())
        self.entrada.setText(""); #borro el campo
    	self.mensajes.append(self.nombrePropio + ":" + mensaje); #agrego el mensaje al cuadro
        self.manejadorMensajes.enviar(mensaje) #mando el mensaje

    #función que llama a manejadorLlamadas para abrir un método que escuche un servidor
    def esperarLlamada(self):
        self.manejadorLlamadas.esperarLlamada();
    
    #función para iniciar intercambiando audio y vídeo
    def iniciarVideoLlamada(self):
        self.manejadorLlamadas.llamar();
        
    #de esta manera le digo a la interfaz del cliente que cerré la conversación con este usuario
    def closeEvent(self,event):
        self.emit(QtCore.SIGNAL("cerrarChat(QString)"),self.nombreRemoto);
        event.accept();
class chatUserUI(QtGui.QWidget):

    # de aquí se toman los datos de la vista anterior
    def __init__(self, nombre, ipA, ipB, puertoA, puertoB):
        super(chatUserUI, self).__init__()
        self.nombre = nombre
        self.ipPropio = ipA
        self.ipRemoto = ipB
        self.puertoPropio = int(puertoA)
        self.puertoRemoto = int(puertoB)
        self.initUI()

    def initUI(self):
        # inicializar los elementos de la vista
        self.entrada = QtGui.QLineEdit()
        # input para escribir el mensaje
        self.entrada.setReadOnly(False)

        self.mensajes = QtGui.QTextEdit()
        # donde se van a mostrar los mensajes
        self.mensajes.setReadOnly(True)

        # se crea el objeto Mensajes que se va a encargar de escuchar y mandar texto
        self.manejadorMensajes = Mensajes(
            self.ipPropio, self.puertoPropio, self.ipRemoto, self.puertoRemoto, self.nombre, self.mensajes
        )

        buttonEnviar = QtGui.QPushButton("Enviar")
        # boton para enviar un texto
        buttonEnviar.clicked.connect(self.enviar)

        # se crea el objeto Llamadas, que es va a encargar de escuchar audio del micrófono, mandarlo al otro equipo, y reproducirlo
        self.manejadorLlamadas = Llamadas(self.ipPropio, self.puertoPropio + 1, self.ipRemoto, self.puertoRemoto + 1)

        self.buttonLlamar = QtGui.QPushButton("Llamar")
        # boton para iniciar una llamada
        self.buttonLlamar.clicked.connect(self.manejadorLlamadas.llamar)

        self.manejadorLlamadas.setBotonLlamar(self.buttonLlamar)
        # se agrega el boton a Llamadas para que cambie su texto al llamar

        grid = QtGui.QGridLayout()

        grid.addWidget(self.mensajes, 1, 0, 1, 6)
        grid.addWidget(self.entrada, 4, 0, 1, 5)

        grid.addWidget(buttonEnviar, 4, 5)
        grid.addWidget(self.buttonLlamar, 4, 6)

        self.setLayout(grid)

        self.setGeometry(300, 200, 600, 400)
        self.setWindowTitle("Chat")
        # threads para escuchar mensajes de texto y llamadas
        try:
            self.threadMensajes = threading.Thread(target=self.manejadorMensajes.escuchar)
            self.threadEsperaLlamada = threading.Thread(target=self.esperarLlamada)
        except Exception as e:
            print "Error al crear threads", traceback.format_exc()

    # funcion para concatenar el mensaje que se envía a la vista y llamar a manejadorMensajes para que mande el mensaje
    def enviar(self):
        mensaje = str(self.entrada.text())
        self.entrada.setText("")
        # borro el campo
        self.mensajes.append(self.nombre + ":" + mensaje)
        # agrego el mensaje al cuadro
        self.manejadorMensajes.enviar(mensaje)  # mando el mensaje

    # función que llama a manejadorLlamadas para abrir un método que escuche un servidor
    def esperarLlamada(self):
        self.manejadorLlamadas.esperarLlamada()

    # funcion que inicia los hilos del chat
    def chatini(self):
        try:
            self.threadMensajes.start()
            self.threadEsperaLlamada.start()
        except Exception as e:
            print "Error al inicializar los threads", traceback.format_exc()
class chatUserUI(QtGui.QWidget):
                
    #de aquí se toman los datos de la vista anterior
    def __init__(self,nombre,ipA, ipB, puertoA, puertoB):
        super(chatUserUI, self).__init__()
        self.nombre=nombre
        self.ipPropio = ipA
        self.ipRemoto = ipB
        self.puertoPropio = int(puertoA)
        self.puertoRemoto = int(puertoB)
        self.initUI()

    def initUI(self):
        #inicializar los elementos de la vista
        self.entrada = QtGui.QLineEdit(); #input para escribir el mensaje
        self.entrada.setReadOnly(False);

        self.mensajes = QtGui.QTextEdit(); #donde se van a mostrar los mensajes
        self.mensajes.setReadOnly(True);
        
        #se crea el objeto Mensajes que se va a encargar de escuchar y mandar texto
        self.manejadorMensajes = Mensajes(self.ipPropio,self.puertoPropio,self.ipRemoto,self.puertoRemoto,self.nombre,self.mensajes);

        buttonEnviar = QtGui.QPushButton('Enviar'); #boton para enviar un texto
        buttonEnviar.clicked.connect(self.enviar);
        
        self.buttonLlamar = QtGui.QPushButton('Llamar'); #boton para iniciar una llamada
        self.buttonLlamar.clicked.connect(self.iniciarVideoLlamada);
        
        #se crea el objeto Llamadas, que es va a encargar de escuchar audio del micrófono, mandarlo al otro equipo, y reproducirlo
        self.manejadorLlamadas = Llamadas(self.ipPropio,self.puertoPropio,self.ipRemoto,self.puertoRemoto);
        self.manejadorLlamadas.setBotonLlamar(self.buttonLlamar); #se agrega el boton a Llamadas para que cambie su texto al llamar
        
        self.manejadorVideos = Video("VideoLlamada",self.ipPropio,self.puertoPropio,self.ipRemoto,self.puertoRemoto);
        
       	grid = QtGui.QGridLayout();

        grid.addWidget(self.mensajes,1,0,1,6);
        grid.addWidget(self.entrada,4,0,1,5);
        
        grid.addWidget(buttonEnviar, 4,5);
        grid.addWidget(self.buttonLlamar, 4,6);
        
        self.setLayout(grid);

        self.setGeometry(300, 200, 600, 400)
        self.setWindowTitle('Chat')
        
    #funcion para concatenar el mensaje que se envía a la vista y llamar a manejadorMensajes para que mande el mensaje
    def enviar(self):
        mensaje=str(self.entrada.text())
        self.entrada.setText(""); #borro el campo
    	self.mensajes.append(self.nombre + ":" + mensaje); #agrego el mensaje al cuadro
        self.manejadorMensajes.enviar(mensaje) #mando el mensaje

    #función que llama a manejadorLlamadas para abrir un método que escuche un servidor
    def esperarLlamada(self):
        self.manejadorLlamadas.esperarLlamada();
    
    #función para iniciar intercambiando audio y vídeo
    def iniciarVideoLlamada(self):
        self.manejadorLlamadas.llamar();
        #self.manejadorVideos.iniciarVideoLlamada();
    
    #funcion que incia el servidor xmlrpc del cliente con todos los métodos de mensajes,audio y video
    def iniciarServidor(self):
        server = SimpleXMLRPCServer((str(self.ipPropio), int(self.puertoPropio)),allow_none=True)
        server.register_function(self.manejadorMensajes.recibir, "send") #agrego la función para concatenar mensajes al historial de mensajes
        server.register_function(self.manejadorLlamadas.reproducirLlamada, "reproducirLlamada") #agrego la función para recibir un audio y reproducirlo
        server.register_function(self.manejadorLlamadas.iniciarLlamada,"iniciarLlamada") #agrego la función para iniciar una llamada con este servidor
        server.register_function(self.manejadorVideos.sendFrames, 'sendFrames');
        server.register_function(self.manejadorVideos.startPlayFrames, 'startPlayFrames');
        server.serve_forever();
    
    #funcion que inicia los hilos del chat        
    def chatini(self):
        try:
            threadServidor = threading.Thread(target=self.iniciarServidor);
            threadServidor.start();
        except Exception as e:
            print "Error al inicializar los threads", traceback.format_exc()
예제 #7
0
from constantes import PALOS, FIGURAS
from carta import Carta
import random
from mensajes import Mensajes

mensajes = Mensajes()


class Baraja:
    def __init__(self):
        # Inicializamos una baraja sin cartas
        self.cartas = []
        self.crear_cartas_baraja()

    def crear_cartas_baraja(self):
        """
        La baraja en el poker tiene 52 cartas. 
        13 cartas por cada palo
        """
        for palo in PALOS:
            for cada_figura in FIGURAS:
                carta = Carta(palo=palo, figura=cada_figura)
                self.cartas.append(carta)

    def mostrar_cartas(self):
        for carta in self.cartas:
            carta.mostrar_carta()

    def barajar(self):
        random.shuffle(self.cartas)
예제 #8
0
class tweets:
    def __init__(self, configuracioncfg):
        self.__archivocfg = configuracioncfg
        self.__configuracion = config(self.__archivocfg)
        self.__tiempo = float(
            self.__configuracion.ShowValueItem("tiempo", "retardo"))
        self.__timeout = float(
            self.__configuracion.ShowValueItem("tiempo", "timeout"))
        self.__basededatos = self.__configuracion.ShowValueItem(
            "basededatos", "archivo")
        self.__ip = self.__configuracion.ShowValueItem("proxy", "ip")
        self.__puerto = self.__configuracion.ShowValueItem("proxy", "puerto")
        self.__app = self.__configuracion.ShowValueItem("aplicacion", "nombre")
        self.__client_args = {
            'headers': {
                'User-Agent': '%s' % self.__app
            },
            'proxies': {
                'http': '%s:%s' % (self.__ip, self.__puerto)
            },
            'timeout': self.__timeout
        }
        self.__bitacora = Bitacora(basededatos=self.__basededatos)
        self.__usuarios = Usuarios(basededatos=self.__basededatos)
        self.__mensajes = Mensajes(basededatos=self.__basededatos)

    def __Cuentas(self):
        self.__cuentas = self.__usuarios.Consultar()
        self.__totalCuentas = len(self.__cuentas)

    def __Mensajes(self):
        self.__textos = self.__mensajes.Consultar()
        self.__totalTextos = len(self.__textos)

    def EnviarTweet(self, usuario, mensaje):
        cuenta = usuario["usuario"]
        clave = usuario["clave"]
        ACCESS_KEY = usuario["access_key"]
        ACCESS_SECRET = usuario["access_secret"]
        if len(mensaje) == 14:
            msgtrunk = mensaje
        elif len(mensaje) > 14:
            msgtrunk = mensaje[:11] + "..."
        else:
            msgtrunk = mensaje

        try:
            api = Twython(CONSUMER_KEY,
                          CONSUMER_SECRET,
                          ACCESS_KEY,
                          ACCESS_SECRET,
                          client_args=self.__client_args)

            api.update_status(status=msgtrunk)
            estado = {
                'usuario': "%s" % cuenta,
                'tweet': "%s" % msgtrunk,
                'mensaje': u'Mensaje enviado',
                'fechaHoraMensaje': datetime.now(),
            }
        except twython.exceptions.TwythonAuthError:
            estado = {
                'usuario': "%s" % cuenta,
                'tweet': "%s" % msgtrunk,
                'mensaje': u'Error de autenticación',
                'fechaHoraMensaje': datetime.now(),
            }
        except twython.exceptions.TwythonError:
            estado = {
                'usuario': "%s" % cuenta,
                'tweet': "%s" % msgtrunk,
                'mensaje': u'Cuenta suspendida',
                'fechaHoraMensaje': datetime.now(),
            }
        bitacora.InsertarMensajesDB(estado)

    def EnviarTweets(self):
        self.__Cuentas()
        self.__Mensajes()
        for msg in self.__textos:
            for cuenta in self.__cuentas:
                if (cuenta["access_key"] == "") or (cuenta["access_secret"]
                                                    == ""):
                    continue
                elif cuenta["estatus"] == False:
                    continue
                self.EnviarTweet(cuenta, msg)
                sleep(float(5.0))