astro-blendDEV / app.py
Moibe's picture
Envs
81f2e47
raw
history blame
4.88 kB
import gradio as gr
import sulkuPypi
from funciones import mass
from data import usuarios
import encrypter
import time
import nycklar.nodes
#Funciones
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 = ""
#Después ejecuta la masa.
if autorizacion is True:
path = mass(input1,input2)
else:
info_window = "Out of credits..."
path = 'no-result.png'
return path, info_window, btn_buy
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.")
lbl_credits = "Nuevo texto..."
#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, btn_buy
def click_buy():
print("Ejecutando change...")
nuevo_markdown = """
"""
return nuevo_markdown
def display_tokens():
print("Ejecutando display_tokens...")
return gr.State.tokens
#LOCAL VARIABLES
# gr.State.usuario = "briggsboardman"
# 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
# gr.State.tokens = 20
#Inputs
source_image = gr.Image(label="Source")
destination_image = gr.Image(label="Destination")
#Outputs
result_image = gr.Image(label="Blend Result")
txt_credits = gr.Textbox(label="Credits Available", value="205", interactive=False)
html_credits = gr.HTML("<div>Credits = 205</div>")
lbl_console = gr.Label(label="AI Terminal Messages", value="AI Engine ready...", container=True)
btn_buy = gr.Button("Buy More", visible=True, size='lg')
#btn_buy.click(fn=click_buy, outputs=mrk_title)
#Gradio themes:
# — gr.themes.Base()
# — gr.themes.Default()
# — gr.themes.Glass()
# — gr.themes.Monochrome()
# — gr.themes.Soft()
#valor = gr.State.tokens
valor = ""
with gr.Blocks(theme=gr.themes.Base(), css="footer {visibility: hidden}") as main:
with gr.Row():
gr.Markdown(visible=True)
gr.Markdown(visible=True)
gr.Markdown(visible=True)
#lbl_credits = gr.Label(label="Credits Available", value=valor, scale=1)
lbl_credits = gr.Textbox(label="Credits Available", value="205", interactive=False)
result_image.change(fn=display_tokens, outputs=lbl_credits)
with gr.Row():
demo = gr.Interface(
fn=perform,
title="",
inputs=[source_image, destination_image],
outputs=[result_image, lbl_console, txt_credits, btn_buy],
)
main.launch(auth=authenticate)