import gradio as gr import sulkuPypi from funciones import mass from data import usuarios import encrypter import time #Funciones adicionales def authenticate(username, password): for u, p in usuarios: #Si el usuario y la contraseña son correctas... if username == u and password == p: #Agrego el nombre del usuario al estado general. gr.State.usuario = username #Bienvenida al usuario... print("Welcome ", gr.State.usuario) #Capsule es el usuario encriptado que enviarás a la API de Sulku. capsule = encrypter.encripta(gr.State.usuario).decode("utf-8") #decode es para quitarle el 'b gr.State.capsule = capsule #Checa cuantos tokens tiene ese usuario via la API de Sulku: gr.State.tokens = sulkuPypi.getTokens(capsule) print(f"Tienes: {gr.State.tokens} tokens. ") return True #Si no hubo coincidencia regresas un false. return False #Función principal def perform(input1, input2): print("Estando en perform182, la cantidad de tokens es: ", gr.State.tokens) #Revisaremos de nuevo: gr.State.tokens = sulkuPypi.getTokens(encrypter.encripta(gr.State.usuario).decode("utf-8")) #Todo en una línea. print("Ahora tienes: ", gr.State.tokens) #Después autoriza. #Si está autorizada puede ejecutar la tarea, ésta lógica si está a cargo aquí, por parte de la app y su desarrollador, no de Sulku. autorizacion = sulkuPypi.authorize(gr.State.tokens, 'picswap') print("La autorización es: ", autorizacion) info_window = "Hola Usuario" #Después ejecuta la masa. if autorizacion is True: path = mass(input1,input2) else: print("No tienes suficientes tokens...") info_window = "Out of tokens..." path = 'no-result.png' return path, info_window print(f"El path final fue {path}, si es no-result, no debites y controla la info window.") print(f"El type de path es: ", type(path)) print("Convirtiendo path a string...") path_string = str(path) print("Path_string = ", path_string) if "no-result" not in path_string: #Si el path NO tiene no-result, todo funcionó bien, por lo tanto debita. print("Se obtuvo un resultado, debitaremos.") #Y finalmente debita los tokens. gr.State.tokens = sulkuPypi.debitTokens(gr.State.capsule, "picswap") print(f"Y ahora tienes: {gr.State.tokens} tokens.") info_window = "Image ready!" else: print("No se detectó un rostro...") info_window = "No face in source path detected." print(f"Y ahora tienes: {gr.State.tokens} tokens.") #No se hizo un proceso, por lo tanto no debitaremos. #En el futuro, como regla de negocio, podría cambiar y que si debitemos. return path, info_window label = gr.Label("Hola!") demo = gr.Interface( fn=perform, title="", inputs=[gr.Image(), gr.Image()], outputs=[gr.Image(),label], css="footer {visibility: hidden}" ) demo.launch(auth=authenticate)