astro-blendDEV / app.py
Moibe's picture
Fix return values of out of tokens
dafa4c3
raw
history blame
3.18 kB
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..."
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)