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_console = gr.Textbox(label="Console", value="AI Engine Ready...", interactive=False) 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 = "205" with gr.Blocks(theme=gr.themes.Base(), css="footer {visibility: hidden}") as main: with gr.Row(): gr.Label(visible=True, scale=5) lbl_credits = gr.Label(label="Credits Available", value=valor, scale=1) 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, btn_buy], ) main.launch(auth=authenticate)