Spaces:
Runtime error
Runtime error
| 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, buy, imagen | |
| label = gr.Label("Hola!") | |
| buy = gr.Button("Buy More", visible=False, size='sm') | |
| imagen = gr.Image('source.png', show_download_button=False, visible=False) | |
| demo = gr.Interface( | |
| fn=perform, | |
| title="", | |
| inputs=[gr.Image(), gr.Image()], | |
| outputs=[gr.Image(),label, buy, imagen], | |
| css="footer {visibility: hidden}" | |
| ) | |
| demo.launch(auth=authenticate) |