astro-blendDEV / app.py
Moibe's picture
Display no-result image if no credit
1f42b26
raw
history blame
3.21 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..."
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)