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)
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()
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()
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)
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))